MAXPLUS软件的使用()

上传人:hs****ma 文档编号:459425667 上传时间:2023-03-15 格式:DOC 页数:27 大小:366.50KB
返回 下载 相关 举报
MAXPLUS软件的使用()_第1页
第1页 / 共27页
MAXPLUS软件的使用()_第2页
第2页 / 共27页
MAXPLUS软件的使用()_第3页
第3页 / 共27页
MAXPLUS软件的使用()_第4页
第4页 / 共27页
MAXPLUS软件的使用()_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《MAXPLUS软件的使用()》由会员分享,可在线阅读,更多相关《MAXPLUS软件的使用()(27页珍藏版)》请在金锄头文库上搜索。

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

2、;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、几个参数例:PARAMETERS(FILENAME = myfile.mif, - optional default value follows = signWIDTH,AD_WIDTH = 8,NUMWORDS = 2UD_WIDTH);(4) 函数描述语句共有 4 种形式的逻辑函数可以供用户调用,它们是:Megafunction 具有复杂逻辑功能的巨功能模块,放在 mega_LPM 库中,可以供用户调用 Primitive 一些基本逻辑功能函数,可以直接调用Macrofunction 具有高水平的逻辑宏功能模块,共有 300 多种,放在 max2lib 子目录中State Machi ne

4、 种具有多个状态的时序电路,可以形成符号图形,用户可以调用 以上几种逻辑功能函数都可以以逻辑函数名和符号图形的方式被调用,在AHDL 源文件中调用时要首先进行声明,见如下例子。1) 参数化函数:FUNCTION lpm_add_sub (cin, dataaLPM_WIDTH-1.0, databLPM_WIDTH-1.0, add_sub)WITH (LPM_WIDTH, LPM_REPRESENTA TION, LPM_DIRECTION, ADDERTYPE, ONE_INPUT_IS_CONSTANT)RETURNS (resultLPM_WIDTH-1.0, cout, overfl

5、ow);该 函 数 名 为 lpm_add_sub , 输 入 端 口 为 cin, dataaLPM_WIDTH-1.0,anddatabLPM_WIDTH-1.0;关键字 WITH 后是参数表,关键字 RETURN 后是输出口 resultLPM_WIDTH-1.0, cout, and overflow2) 非参数化函数 :FUNCTION compare (a3.0, b3.0)RETURNS (less, equal, greater);该函数名为 compare,输入端口为 a3, a2, a1, a0, b3, b2, b1, and bO.关键字 RETURN 后是输出口 le

6、ss, equal, greater3) 状态机函数: 当输入和输出是状态机时,应该按照如下例子定义函数,在返回结果语句中加MACHINE关键字FUNCTION ss_def (clock, reset, count)RETURNS (MACHINE ss_out);(5) 最小位数选择语句定义一组数据中的最小数位是否是MSB ( most significant bit )或 LSB ( least significant bit )例:OPTIONS BIT0 = MSB;(6)断言语句 该语句可以检验表达式、参数、数据、计算函数有效性和端口的使用情况。 例:ASSERT (WIDTH 0

7、)REPORTWidth (%) must be a positive integer WIDTHSEVERITYERRORHELP_ID INTV ALUE; - for internal Altera use only在该例中,WIDTH0是断言条件,若此条件不满足,将显示REPORT后的内容和SEVERITY 后的错误等级。(7)分设计段 分设计段声明输入、输出和双向口 例:SUBDESIGN top(foo, bar, clk1, clk2 : INPUT = VCC;a0, a1, a2, a3, a4 : OUTPUT;b7.0: BIDIR;) 端口类型可以是:INPUT, OU

8、TPUT, BIDIR, MACHINE INPUT, 或 MACHINE OUTPU其中 MACHINE INPUT 或 MACHINE OUTPUT 口不能用于 TDF 的顶层,在端口类型说明 后可以加端口当前电平 VCC 或者是 GND 。(8)变量段 该段是声明和产生逻辑段中使用的变量的地方,如下是变量段的例子。VARIABLEa, b, c : NODE;temp : halfadd; ts_node : TRI_STATE_NODE;IF DEVICE_FAMIL Y = FLEX8000 GENERA TE8kadder : flex_adder;d,e : NODE;ELSE

9、GENERATE7kadder : pterm_adder;f,g : NODE;END GENERATE;1) 函数变量声明例: VARIABLEcomp : compare;adder : lpm_add_sub WITH (LPM_WIDTH = 8);该变量段声明 comp 为函数 compare 的引用变量,声明 adder 为函数 lpm_add_sub 的引用变 量,一旦声明完毕,就意味着: 变量 comp 就是如下端口的代表:a3.0, b3.0: INPUT; - inputs to compareless, equal, greater : OUTPUT; - output

10、s 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.greater adder.dataa, adder.datab, adder.result2) 节点变量声明 AHDL 软件支持两种节点形式: NODE and TRI_STA TE_NODE 。 例:SUBDESIGN node_ex (a, oe : I

11、NPUT; b : OUTPUT; c : BIDIR;) VARIABLEb : 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_STA TE_NODE ):TRI 三态功能模块 输入端口( INPUT ) 端口从高层向下 输出或双向口( OUTPUT , BIDIR )从低层向上 当前文件中的双向口( BIDIR ) 当前文件中的三态节点 TR

12、I_STATE_NODE3) 寄存器变量声明 该声明用于声明寄存器: D 型: DFF , DFFE, T 型: TFF, TFFE JK 型: JKFF , JKFFE , SRFF, SRFFE 琐存器: LATCH 例: VARIABLE ff : TFF;该变量一旦声明完毕,就可以使用如下变量: ff.t , ff.clk , ff.clrn , ff.prn , ff.q 对于只有一个输出的功能模块,可以简化使用。 DFF 的功能说明为: FUNCTION DFF(d, clk, clrn, prn) RETURNS (q);. 则对于如下的变量段,逻辑段的意思是a.d = b.q;

13、VARIABLEa, b : DFF; BEGINa = b; END;4) 状态机变量声明 例:VARIABLEss : MACHINEOF BITS (q1, q2, q3)WITH STATES (s1 =B000,s2 =B010,s3 =B111);该例的意思是:状态机的名字是 SS,状态位q1, q2,和q3是该机寄存器的输出,状态机的状态是s3, 并给出了当前状态值。(9)逻辑段 在逻辑段中,说明设计文件的逻辑操作。1) 布尔方程 逻辑段中布尔方程用于表达节点之间的逻辑关系,该关系必须遵从逻辑规则。 例:a = (c & -B001101) + e6.1) # (p, q, r,

14、 S, t, v); 表达式的左边可以是一个字符变量、端口和组,右边是布尔方程表达式。2) 布尔控制方程 该控制方程用于建立状态机的时钟、复位和时钟使能信号,见下例:SS.clk = clk1;SS.reSet = a & b;SS.ena = clk1ena;该控制方程的格式为 . ,所以该例中状态机名是ss三个端口:位和使能。3) CASE 语句例:CASE f.q ISWHEN H00 =addr = 0;s = a & b;WHEN H01 =count.d = count.q + 1;s1,s2 和时钟、复WHEN H02, H03, H04 = f3.0.d = addr4.1;WHEN OTHERS =f.d = f.q;END CASE;3) 缺省叙述语句 该语句指定真值表中变量的缺省值, 例:BEGINDEFAULTSa = VCC;END DEFAULTS;IF y & z THENa = GND;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;ELSEd = VCC;END IF;4) FOR GENERATE 语句

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

当前位置:首页 > 办公文档 > 活动策划

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