资源描述:
《第3章 maxplus软件的使用(第5节)59029》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.5用AHDL语言设计数字系统AHDL语言是ALTERA公司开发的高效、易学的硬件描述语言,在max+plus2软件中使用它比VHDL语言更有效。3.5.1AHDL简介一个AHDL逻辑设计至少必须包含一个分设计段(SubdesignSection)和一个逻辑设计段(LogicSection),其它段和语句是可选择的,AHDL的设计文件是用Max+PlusⅡ软件的文本编辑器编写的源程序(*.tdf)下面介绍AHDL的一些语句。(1)常数叙述语句该语句可以用一个字符串代表数字、算数表达式例:CONSTANTUPPER_LIMIT=130;CONSTA
2、NTBAR=1+2DIV3+LOG2(256);CONSTANTFOO=1;CONSTANTFOO_PLUS_ONE=FOO+1;(2)定义函数语句该语句可以定义一个在分设计中使用函数,例:DEFINEMAX(a,b)=(a>b)?a:b;SUBDESIGN(dataa[MAX(WIDTH,0)..0]:INPUT;datab[MAX(WIDTH,0)..0]:OUTPUT;)BEGINdatab[]=dataa[];END;此例中MAX函数保证最小的数据位宽度。(3)参数叙述语句该语句可以声明参数化巨功能模块和宏功能模块的一个或几个参数142例:
3、PARAMETERS(FILENAME="myfile.mif",--optionaldefaultvaluefollows"="signWIDTH,AD_WIDTH=8,NUMWORDS=2^AD_WIDTH);(4)函数描述语句共有4种形式的逻辑函数可以供用户调用,它们是:Megafunction—具有复杂逻辑功能的巨功能模块,放在mega_LPM库中,可以供用户调用Primitive—一些基本逻辑功能函数,可以直接调用Macrofunction—具有高水平的逻辑宏功能模块,共有300多种,放在max2lib子目录中StateMachine—一
4、种具有多个状态的时序电路,可以形成符号图形,用户可以调用以上几种逻辑功能函数都可以以逻辑函数名和符号图形的方式被调用,在AHDL源文件中调用时要首先进行声明,见如下例子。1)参数化函数:FUNCTIONlpm_add_sub(cin,dataa[LPM_WIDTH-1..0],datab[LPM_WIDTH-1..0],add_sub)WITH(LPM_WIDTH,LPM_REPRESENTATION,LPM_DIRECTION,ADDERTYPE,ONE_INPUT_IS_CONSTANT)RETURNS(result[LPM_WIDTH-1..
5、0],cout,overflow);该函数名为lpm_add_sub,输入端口为cin,dataa[LPM_WIDTH-1..0],anddatab[LPM_WIDTH-1..0];关键字WITH后是参数表,关键字RETURN后是输出口result[LPM_WIDTH-1..0],cout,andoverflow2)非参数化函数:FUNCTIONcompare(a[3..0],b[3..0])RETURNS(less,equal,greater);该函数名为compare,输入端口为a3,a2,a1,a0,b3,b2,b1,andb0.关键字RET
6、URN后是输出口less,equal,greater3)状态机函数:当输入和输出是状态机时,应该按照如下例子定义函数,在返回结果语句中加MACHINE关键字FUNCTIONss_def(clock,reset,count)142RETURNS(MACHINEss_out);(5)最小位数选择语句定义一组数据中的最小数位是否是MSB(mostsignificantbit)或LSB(leastsignificantbit)例:OPTIONSBIT0=MSB;(6)断言语句该语句可以检验表达式、参数、数据、计算函数有效性和端口的使用情况。例:ASSERT
7、(WIDTH>0)REPORT"Width(%)mustbeapositiveinteger"WIDTHSEVERITYERRORHELP_IDINTVALUE;--forinternalAlterauseonly在该例中,WIDTH>0是断言条件,若此条件不满足,将显示REPORT后的内容和SEVERITY后的错误等级。(7)分设计段分设计段声明输入、输出和双向口例:SUBDESIGNtop(foo,bar,clk1,clk2:INPUT=VCC;a0,a1,a2,a3,a4:OUTPUT;b[7..0]:BIDIR;)端口类型可以是:INPUT
8、,OUTPUT,BIDIR,MACHINEINPUT,或MACHINEOUTPU其中MACHINEINPUT或MACHIN