第3章 MAXPLUS软件的使用(第5节)Protel 学习资料

上传人:飞*** 文档编号:40497857 上传时间:2018-05-26 格式:DOC 页数:29 大小:118KB
返回 下载 相关 举报
第3章 MAXPLUS软件的使用(第5节)Protel 学习资料_第1页
第1页 / 共29页
第3章 MAXPLUS软件的使用(第5节)Protel 学习资料_第2页
第2页 / 共29页
第3章 MAXPLUS软件的使用(第5节)Protel 学习资料_第3页
第3页 / 共29页
第3章 MAXPLUS软件的使用(第5节)Protel 学习资料_第4页
第4页 / 共29页
第3章 MAXPLUS软件的使用(第5节)Protel 学习资料_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《第3章 MAXPLUS软件的使用(第5节)Protel 学习资料》由会员分享,可在线阅读,更多相关《第3章 MAXPLUS软件的使用(第5节)Protel 学习资料(29页珍藏版)》请在金锄头文库上搜索。

1、太原理工大学 夏路易1143.5 用用 AHDL 语言设计数字系统语言设计数字系统AHDL 语言是 ALTERA 公司开发的高效、易学的硬件描述语言,在 max+plus2 软件中使用它比 VHDL 语言更有效。3.5.1AHDL 简介简介一个 AHDL 逻辑设计至少必须包含一个分设计段(Subdesign Section)和一个逻辑设计段(Logic Section),其它段和语句是可选择的,AHDL 的设计文件是用 Max+Plus软件的文本编辑器编写的源程序(*.tdf)下面介绍 AHDL 的一些语句。(1)常数叙述语句常数叙述语句该语句可以用一个字符串代表数字、算数表达式例:CONST

2、ANT UPPER_LIMIT = 130;CONSTANT BAR = 1 + 2 DIV 3 + LOG2(256);CONSTANT FOO = 1;CONSTANT FOO_PLUS_ONE = FOO + 1;(2) 定义函数语句定义函数语句该语句可以定义一个在分设计中使用函数,例:DEFINE MAX(a,b) = (a b) ? a : b;SUBDESIGN(dataaMAX(WIDTH,0).0: INPUT;databMAX(WIDTH,0).0: OUTPUT;)BEGINdatab = dataa;END;此例中 MAX 函数保证最小的数据位宽度。(3)参数叙述语句参数

3、叙述语句该语句可以声明参数化巨功能模块和宏功能模块的一个或几个参数太原理工大学 夏路易115例:PARAMETERS(FILENAME = “myfile.mif“, - optional default value follows “=“ signWIDTH,AD_WIDTH = 8, NUMWORDS = 2AD_WIDTH );(4)函数描述语句函数描述语句共有 4 种形式的逻辑函数可以供用户调用,它们是:Megafunction具有复杂逻辑功能的巨功能模块,放在 mega_LPM 库中,可以供用户调用Primitive一些基本逻辑功能函数,可以直接调用Macrofunction具有高水

4、平的逻辑宏功能模块,共有 300 多种,放在 max2lib 子目录中State Machine一种具有多个状态的时序电路,可以形成符号图形,用户可以调用以上几种逻辑功能函数都可以以逻辑函数名和符号图形的方式被调用,在 AHDL 源文件中调用时要首先进行声明,见如下例子。1)参数化函数:)参数化函数:FUNCTION lpm_add_sub (cin, dataaLPM_WIDTH-1.0, databLPM_WIDTH-1.0, add_sub)WITH (LPM_WIDTH, LPM_REPRESENTATION, LPM_DIRECTION, ADDERTYPE, ONE_INPUT_I

5、S_CONSTANT)RETURNS (resultLPM_WIDTH-1.0, cout, overflow);该函数名为 lpm_add_sub,输入端口为 cin, dataaLPM_WIDTH-1.0, and databLPM_WIDTH-1.0;关键字 WITH 后是参数表,关键字 RETURN 后是输出口 resultLPM_WIDTH-1.0, cout, and overflow2)非参数化函数)非参数化函数:FUNCTION compare (a3.0, b3.0)RETURNS (less, equal, greater);该函数名为 compare,输入端口为 a3,

6、a2, a1, a0, b3, b2, b1, and b0.关键字 RETURN 后是输出口 less, equal, greater3)状态机函数:)状态机函数:当输入和输出是状态机时,应该按照如下例子定义函数,在返回结果语句中加 MACHINE关键字FUNCTION ss_def (clock, reset, count) 太原理工大学 夏路易116RETURNS (MACHINE ss_out);(5) 最小位数选择语句最小位数选择语句 定义一组数据中的最小数位是否是 MSB(most significant bit)或 LSB(least significant bit)例:OPTI

7、ONS BIT0 = MSB;(6)断言语句断言语句该语句可以检验表达式、参数、数据、计算函数有效性和端口的使用情况。例:ASSERT (WIDTH 0)REPORT “Width (%) must be a positive integer“ WIDTHSEVERITYERRORHELP_IDINTVALUE; - for internal Altera use only在该例中,WIDTH0 是断言条件,若此条件不满足,将显示 REPORT 后的内容和SEVERITY 后的错误等级。(7)分设计段分设计段分设计段声明输入、输出和双向口例:SUBDESIGN top(foo, bar, cl

8、k1, clk2 : INPUT = VCC;a0, a1, a2, a3, a4: OUTPUT;b7.0: BIDIR; )端口类型可以是:INPUT, OUTPUT, BIDIR, MACHINE INPUT, 或 MACHINE OUTPU其中 MACHINE INPUT 或 MACHINE OUTPUT 口不能用于 TDF 的顶层,在端口类型说明后可以加端口当前电平VCC 或者是 GND。(8)变量段变量段该段是声明和产生逻辑段中使用的变量的地方,如下是变量段的例子。VARIABLE太原理工大学 夏路易117a, b, c: NODE;temp : halfadd;ts_node:

9、TRI_STATE_NODE;IF DEVICE_FAMILY = “FLEX8000“ GENERATE8kadder: flex_adder;d,e: NODE;ELSE GENERATE7kadder: pterm_adder;f,g: NODE;END GENERATE;1)函数变量声明例:)函数变量声明例:VARIABLE comp : compare;adder : lpm_add_sub WITH (LPM_WIDTH = 8);该变量段声明 comp 为函数 compare 的引用变量,声明 adder 为函数 lpm_add_sub 的引用变量,一旦声明完毕,就意味着:变量

10、comp 就是如下端口的代表:a3.0, b3.0 : INPUT;- inputs to compare less, equal, greater : OUTPUT; - outputs of compare而变量 adder 是如下端口的代表:a8.1, b8.1: INPUT; - inputs of addersum8.1: OUTPUT;- outputs of adder也就是如下的引用变量可以使用在当前的设计文件中:comp.a, comp.b, comp.less, comp.equal, comp.greateradder.dataa, adder.datab, adder.

11、result2)节点变量声明)节点变量声明AHDL 软件支持两种节点形式:NODE and TRI_STATE_NODE。例:SUBDESIGN node_ex(a, oe : INPUT;b : OUTPUT;c : BIDIR;)VARIABLE太原理工大学 夏路易118b : NODE;t : TRI_STATE_NODE;BEGINb = a;out = b% therefore out = a %t = TRI(a, oe);t = c;% t is bus of c and tri_stated a %END;如下的端口和功能模块能连接三态节点(TRI_STATE_NODE):TR

12、I 三态功能模块输入端口(INPUT) 端口从高层向下输出或双向口(OUTPUT, BIDIR)从低层向上当前文件中的双向口(BIDIR)当前文件中的三态节点 TRI_STATE_NODE 3)寄存器变量声明)寄存器变量声明该声明用于声明寄存器:D 型:DFF,DFFE,T 型:TFF,TFFEJK 型:JKFF,JKFFE,SRFF,SRFFE琐存器:LATCH例:VARIABLE ff : TFF;该变量一旦声明完毕,就可以使用如下变量:ff.t, ff.clk,ff.clrn,ff.prn,ff.q对于只有一个输出的功能模块,可以简化使用。DFF 的功能说明为:FUNCTION DFF(

13、d, clk, clrn, prn) RETURNS (q);. 则对于如下的变量段,逻辑段的意思是 a.d = b.q;VARIABLEa, b : DFF;BEGINa = b;END;4)状态机变量声明太原理工大学 夏路易119例:VARIABLEss : MACHINE OF BITS (q1, q2, q3)WITH STATES ( s1 = B“000“,s2 = B“010“,s3 = B“111“);该例的意思是:状态机的名字是 ss,状态位 q1, q2, 和 q3 是该机寄存器的输出,状态机的状态是 s1,s2,和s3, 并给出了当前状态值。(9)逻辑段逻辑段在逻辑段中,

14、说明设计文件的逻辑操作。1)布尔方程布尔方程逻辑段中布尔方程用于表达节点之间的逻辑关系,该关系必须遵从逻辑规则。例:a = (c 表达式的左边可以是一个字符变量、端口和组,右边是布尔方程表达式。2)布尔控制方程布尔控制方程该控制方程用于建立状态机的时钟、复位和时钟使能信号,见下例:ss.clk = clk1;ss.reset = a ss.ena = clk1ena;该控制方程的格式为.,所以该例中状态机名是 ss,三个端口:时钟、复位和使能。3)CASE 语句例:CASE f.q ISWHEN H“00“ =addr = 0;s = a WHEN H“01“ =count.d = count

15、.q + 1;WHEN H“02“, H“03“, H“04“ =太原理工大学 夏路易120f3.0.d = addr4.1;WHEN OTHERS =f.d = f.q;END CASE;3)缺省叙述语句缺省叙述语句该语句指定真值表中变量的缺省值,例:BEGINDEFAULTSa = VCC;END DEFAULTS;IF y END IF;END;4)IF THEN 语句语句例:IF a = b THENc8.1 = H “77“;addr3.1 = f3.1.q;f.d = addr + 1;ELSIF g3 $ g4 THENf.d = addr;ELSE d = VCC;END IF

16、;4)FOR GENERATE 语句例:CONSTANT NUM_OF_ADDERS = 8;SUBDESIGN 4gentst(aNUM_OF_ADDERS.1, bNUM_OF_ADDERS.1, cin : INPUT;cNUM_OF_ADDERS.1, cout : OUTPUT;)VARIABLE太原理工大学 夏路易121carry_out(NUM_OF_ADDERS+1).1 : NODE;BEGINcarry_out1 = cin;FOR i IN 1 TO NUM_OF_ADDERS GENERATEci = ai $ bi $ carry_outi;% Full Adder %carry_outi+1 = ai E

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号