VHDL讲义第八章VHDL语言属性描述.ppt

上传人:za****8 文档编号:12668128 上传时间:2020-05-13 格式:PPT 页数:29 大小:306.96KB
返回 下载 相关 举报
VHDL讲义第八章VHDL语言属性描述.ppt_第1页
第1页 / 共29页
VHDL讲义第八章VHDL语言属性描述.ppt_第2页
第2页 / 共29页
VHDL讲义第八章VHDL语言属性描述.ppt_第3页
第3页 / 共29页
点击查看更多>>
资源描述
第八章VHDL语言属性描述属性是指关于设计实体、结构体、类型、信号等项目的指定特性。属性提供了描述特定对象的多个侧面值的手段信号属性在检测信号变化和建立详细的时域模型时非常重要为什么要有属性:电路元件需要时钟信号同步需要控制信号控制整个电路的行为(进程的执行)时钟信号与控制信号的使用多种多样利用属性可以使VHDL源代码更加简明扼要,便于理解,属性,VHDL提供5类预定义属性:1、数值类属性2、函数类属性3、信号类属性4、数据类型类属性5、数组范围类属性,8.1.1常用数据的数值属性主要用于返回常用数据类型、数组或是块的有关值:例如:返回数组长度、数据类型的上下界等。常用数据类型的数值类属性:left:返回一个数据类型或子类型最左边的值。right:返回一个数据类型或子类型最右边的值。high:返回一个数据类型或子类型的最大值。low:返回一个数据类型或子类型的最小值。,8.1数值类属性,属性规则:上下限:对数值取最大、最小值;对枚举类型数据下限取左边界值,上限取右边界值;对数组取数组区间的最大最小值。左右边界:按书写顺序取左边或右边值。例:SUBTYPEnatISNaturalRange0to255;X:=natHIGH;-x等于255X:=natLOW;-x等于0X:=natRIGHT;-x等于255X:=natLEFT;-x等于0,8.1数值类属性,PROCESS(a)TYPEbit16ISArray(15downto0)OFstd_logic;VARIABLElef,rig,up,low:NATURAL;BEGINlef:=bit16LEFT;-15rig:=bit16RIGHT;-0up:=bit16HIGH;-15low:=bit16LOW;-0ENDPROCESS;PROCESS(a)TYPEbit16ISArray(0to15)OFstd_logic;VARIABLElef,rig,up,low:NATURAL;BEGINlef:=bit16LEFT;-0rig:=bit16RIGHT;-15up:=bit16HIGH;-15low:=bit16LOW;-0ENDPROCESS;,8.1数值类属性,在递增区间LEFT=LOWRIGHT=HIGH,在递减区间LEFT=HIGHRIGHT=LOW,例8-1:,例8-2枚举类型数据数值属性描述ArchitecturevoltbofvoltaISTYPEvoltIS(uV,mV,V,kV);SUBTYPEs_voltISvoltRANGE(VDOWNTOmV);SIGNALS1,S2,S3,S4:VOLT;BEGINS1=voltHIGH;-kVS2=voltLOW;-uVS3=s_voltLEFT;-VS4=s_voltRIGHT;-mVENDvoltb;,8.1数值类属性,8.1.1数组的数值属性数组属性只有一个:取数组的长度值。格式:LENGTH(n);其中n是多维数组的维数;如二维数组n=2;对一维数组n缺省。例8-3一维数组数值属性描述PROCESS(b)TYPEbit8ISarray(7downto0)ofbit;TYPEbit31_8ISarray(31downto8)ofbit;VARIABLEb1,b2:integer;BEGINb1:=bit8LENGTH;-b1=8B2:=BIT31_8LENGTH;-b2=24ENDPROCESS,8.1数值类属性,指属性以函数的形式返回有关数据类型、数组或是信号的信息。函数类属性使用时以函数表达式的形式出现,属性根据输入的自变量值去执行函数,返回一个相应的值。该返回值可能是数组区间的某一个值,也可能是信号的变化值,或是枚举数据的位置序号等。函数类属性分三类:数据类型属性函数数组类型属性函数信号属性函数,8.2函数类属性,8.2函数类属性,8.2.1数据类型属性函数主要用来得到数据类型的各种相关信息,共6种:(1)POS(X)-返回数据类型定义中输入的X值的位置序号(2)VAL(X)-返回输入的位置序号X处的值(3)SUCC(数据值)-返回数据类型定义中该值的下一个对应值(4)PRED(数据值)-返回数据类型定义中该值的前一个对应值(5)LEFTOF(数据值)-返回数据类型定义中该值的左边值(6)RIGHTOF(数据值)-返回数据类型定义中该值的右边值对于递增区间:SUCC(x)=RIGHTOF(x)PRED(x)=LEFTOF(x)对于递减区间:SUCC(x)=LEFTOF(x)PRED(x)=RIGHTOF(x),8.2函数类属性,例8-4PACKAGEw_packISTYPEweekIS(sun,mon,tue,wed,thu,fri,sat);TYPEr_weekISweekRANGEsatDOWNTOsun;ENDw_pack;求自定义类型的属性:weekSUCC(mon)-得tueweekPRED(mon)-得sunweekLEFTOF(mon)-得sunweekRIGHTOF(mon)-得tuer_weekSUCC(mon)-得tuer_weekPRED(mon)-得sunr_weekLEFTOF(mon)-得tuer_weekRIGHTOF(mon)-得sun,8.2函数类属性,8.2.2数组属性函数主要用来得到数组的信息。共有4种属性:(1)LEFT(n)-得到n区间的左端边界号(2)RIGHT(n)-得到n区间的右端边界号(3)HIGH(n)-得到n区间的高端边界号(4)LOW(n)-得到n区间的低端边界号其中n表示数组的区间序号(即维数)。当n=1时可以缺省,默认为一维数组。在递减区间LEFT=HIGHRIGHT=LOW在递增区间LEFT=LOWRIGHT=HIGH,TYPEmatrixISARRAY(0TO7,15DOWNTO0)OFstd_logic;i=matrixleft(1);-i=0;i=matrixright(1);-i=7;i=matrixhigh(1);-i=7;i=matrixlow(1);-i=0;i=matrixleft(2);-i=15;i=matrixright(2);-i=0;i=matrixhigh(2);-i=15;i=matrixlow(2);-i=0;,8.2函数类属性,8.2.3信号类型属性函数主要用来得到信号的各种行为功能信息:包括信号值的变化、信号变化后经过的时间、变化前的信号值等。共有5种属性:(1)EVENT-当前很短的时间内信号发生了变化,则返回TRUE,否则返回FALSE。(2)ACTIVE-当前信号等于1,则返回TRUE,否则返回FALSE。(3)LAST_EVENT-返回信号从前一个事件发生到现在的时间值。(4)LAST_VALUE-返回信号在最近一个事件发生以前的值(5)LAST_ACTIVE-返回信号从上一次等于1到现在的时间值,8.2函数类属性,1属性函数EVENT和LAST_VALUEEVENT主要用来检测脉冲信号的正跳变或负跳变边沿,也可以检查信号是否刚发生变化并且正处于某一个电平值。例7-9D触发器时钟脉冲上升沿的检测libraryieee;useieee.std_logic_1164.all;entitydffISPORT(d,clk:INcal_resiststd_logic;q:OUTstd_logic);enddff;ARCHITECTUREdffOFdffISBEGINPROCESS(clk)BEGINIFclk=1ANDclkEVENTTHENq=setup_time)REPORT“SETUPVIOLATON”SEVERITYERROR;ENDIF;,8.2函数类属性,ENDPROCESS;Dff_process:PROCESS(clk)BEGINIFclkLAST_VALUE=0ANDclkEVENTTHENq=d;ENDIF;ENDPROCESS;ENDdff_behav;,8.2函数类属性,根据所加属性的信号去建立一个新的信号,称信号类属性。信号类属性有4种:DELAYED(t):t为时间表达式,该属性将产生一个特别的延迟信号,该信号使主信号按t确定的时间产生附加的延迟。新信号与主信号类型相同。该属性可以用来检查信号的保持时间。STABLE(t):当所加属性的信号在时间t内没有发生变化,则返回true,否则返回false.该属性中当t=0时可以得到与属性EVENT相反的值。QUIET(t):信号在时间t内不活跃,则返回true,否则返回false。典型应用是用来对中断优先处理机制进行建模。TRANSACTION:所加属性的信号活跃时将对所建立的bit数据取反。,8.3信号类属性,8.3信号类属性,1属性DELAYED(t)可以用DELAYED(t)属性的信号建立一个延迟信号附加在该信号上。例8-11二输入与门附加延迟的描述,8.3信号类属性,libraryieee;useieee.std_logic_1164.all;entityand2ISGENERIC(a_ipd,b_ipd,c_opd:TIME);PORT(a,b:INcal_resiststd_logic;c:OUTstd_logic);endand2;ARCHITECTUREint_signalsOFand2ISSIGNALinta,intb:std_logic;BEGINinta=TRANSPORTaAFTERa_ipd;intb=TRANSPORTbAFTERb_ipd;c=intaANDintbAFTERc_opd;ENDint_signals;ARCHITECTUREattrOFand2ISBEGINc=setup_time)REPORT“SETUPVIOLATON”SEVERITYERROR;ENDIF;,8.3信号类属性,hold_check:PROCESS(clkDELAYED(2*hold_time)BEGINIF(clkDELAYED(hold_time*2)=1)AND(clkDELAYED(hold_time*2)EVENT)thenASSERT(dLAST_EVENT=0ns)OR(dLAST_EVENThold_time)REPORT“HOLDVIOLATON”SEVERITYERROR;ENDIF;ENDPROCESS;Dff_process:PROCESS(clk)BEGINIFclkLAST_VALUE=0ANDclkEVENTTHENq=d;ENDIF;ENDPROCESS;ENDdff_behav;,8.3信号类属性,2属性STABLE(TIME)可以用STABLE(TIME)属性确定在指定的时间内,参考信号是否变化从而返回一个布尔值,可以用这个布尔值赋给另外一个信号,使这个信号产生变化。例8-13信号属性STABLE(TIME)的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYexamISPORT(a:INstd_logic;b:OUTstd_logic);ENDENTITY;ARCHITECTUREpulseOFexamISBEGINbENDCASE;lock_out=FALSE;ENDPROCESS;ENDTEST,8.3信号类属性,根据所加属性可以得到一个数据类型值。只有一种:类型名BASE用该属性可以得到一个数据类型或子类型的基本类型,并且使用时只能作为其他属性的前缀来使用。例:Do_nothing:process(x)TYPEcolorIS(red,blue,green,yellow,brown,black);SUBTYPEcolor_gunIScolorRANGEredtogreen;VARIABLEa:color;Begina:=color_gunBASERIGHT;a:=colorBASELEFT;a:=color_gunBASESUCC(green);ENDPROCESS;,8.4数据类型属性,该属性按指定输入参数可以得到一个确定的数组区间范围。只能用于数组,只有2种:1.RANGE其中n是输入参数,该属性可以得到一个递减顺序的自然数区间:ndownto02.REVERSE_RANGE该属性可以得到一个递增顺序的自然数区间:0ton,8.5数组区间类属性,例:FUNCTIONvector_to_int(vect:std_logic_vector)RETURNintegerISVARIABLEresult:integer:=0;BeginFORiINvectREVERSE_RANGELOOPresult:=result+vect(i)*(2*i);ENDLOOP;RETURNresult;ENDvector_to_int;,8.5数组区间类属性,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!