ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:26.67KB ,
资源ID:2968266      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2968266.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MAXPLUS软件的使用.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MAXPLUS软件的使用.docx

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

2、AR = 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;)BEGIN datab = dataa;END;此例中MAX函数保证最小的数据位宽度。(3)参数叙述语句该语句可以声明参数化巨功能模块和宏功能模块的一个或几个参数例:PARAMET

3、ERS( FILENAME = myfile.mif, - optional default value follows = sign WIDTH, AD_WIDTH = 8, NUMWORDS = 2AD_WIDTH );(4)函数描述语句共有4种形式的逻辑函数可以供用户调用,它们是:Megafunction具有复杂逻辑功能的巨功能模块,放在mega_LPM库中,可以供用户调用Primitive一些基本逻辑功能函数,可以直接调用Macrofunction具有高水平的逻辑宏功能模块,共有300多种,放在max2lib子目录中State Machine一种具有多个状态的时序电路,可以形成符号图形

4、,用户可以调用以上几种逻辑功能函数都可以以逻辑函数名和符号图形的方式被调用,在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_IS_CONSTANT) RETURNS (resultLPM_WIDTH-1.0, cout, overflow);该函数名为lpm_add_sub,输入端

5、口为 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, a2, a1, a0, b3, b2, b1, and b0.关键字RETURN后是输出口less, equal, greater3)状态机函数:当输入和输出是状态机时,应该按照如下

6、例子定义函数,在返回结果语句中加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) REPORT Width (%) must be a positive integer WIDTH S

7、EVERITY ERROR HELP_ID INTVALUE; - 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, OUTPUT, BIDIR, MACHINE INPUT, 或 MACHINE OUTPU其中MAC

8、HINE INPUT或MACHINE OUTPUT口不能用于TDF的顶层,在端口类型说明后可以加端口当前电平VCC或者是GND。(8)变量段该段是声明和产生逻辑段中使用的变量的地方,如下是变量段的例子。VARIABLE a, b, c : NODE; temp : halfadd; ts_node : TRI_STATE_NODE; IF DEVICE_FAMILY = FLEX8000 GENERATE 8kadder : flex_adder; d,e : NODE; ELSE GENERATE 7kadder : pterm_adder; f,g : NODE; END GENERATE

9、;1)函数变量声明例:VARIABLE comp : compare; adder : lpm_add_sub WITH (LPM_WIDTH = 8);该变量段声明comp为函数compare的引用变量,声明adder为函数lpm_add_sub的引用变量,一旦声明完毕,就意味着:变量comp就是如下端口的代表: a3.0, b3.0 : INPUT; - inputs to compare less, equal, greater : OUTPUT; - outputs of compare而变量adder是如下端口的代表: a8.1, b8.1 : INPUT; - inputs of

10、adder sum8.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_STATE_NODE。例:SUBDESIGN node_ex( a, oe : INPUT; b : OUTPUT; c : BIDIR;)VARIABLE b : NODE; t : TRI_STATE_NODE

11、;BEGIN b = 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): TRI 三态功能模块 输入端口(INPUT) 端口从高层向下 输出或双向口(OUTPUT, BIDIR)从低层向上 当前文件中的双向口(BIDIR) 当前文件中的三态节点TRI_STATE_NODE 3)寄存器变量声明该声明用于声明寄存器:D型:DFF,DFFE,T型:TFF,TFFEJK型:JKFF,JKFFE,SR

12、FF,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;VARIABLE a, b : DFF;BEGIN a = b;END;4)状态机变量声明例:VARIABLE ss : MACHINE OF BITS (q1, q2, q3) WITH STATES ( s1

13、= B000, s2 = B010, s3 = B111);该例的意思是:状态机的名字是ss,状态位q1, q2, 和 q3是该机寄存器的输出,状态机的状态是s1,s2,和s3, 并给出了当前状态值。(9)逻辑段在逻辑段中,说明设计文件的逻辑操作。1) 布尔方程逻辑段中布尔方程用于表达节点之间的逻辑关系,该关系必须遵从逻辑规则。例:a = (c & -B001101) + e6.1) # (p, q, r, s, t, v);表达式的左边可以是一个字符变量、端口和组,右边是布尔方程表达式。2) 布尔控制方程该控制方程用于建立状态机的时钟、复位和时钟使能信号,见下例:ss.clk = clk1;

14、ss.reset = a & b;ss.ena = clk1ena;该控制方程的格式为.,所以该例中状态机名是ss,三个端口:时钟、复位和使能。3)CASE语句例:CASE f.q IS WHEN H00 = addr = 0; s = a & b; WHEN H01 = count.d = count.q + 1; WHEN H02, H03, H04 = f3.0.d = addr4.1; WHEN OTHERS = f.d = f.q;END CASE;3) 缺省叙述语句该语句指定真值表中变量的缺省值,例:BEGIN DEFAULTS a = VCC; END DEFAULTS; IF y & z THEN a = GND; END IF;END;4)IF THEN语句例:IF a = b THEN c8.1 = H 77; addr3.1 = f3.1.q; f.d = addr + 1;ELSIF g3 $ g4 THEN f.d = addr;ELSE d = VCC;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1