第七章VHDL语言属性描述课件.ppt

上传人(卖家):晟晟文业 文档编号:4622705 上传时间:2022-12-26 格式:PPT 页数:29 大小:80KB
下载 相关 举报
第七章VHDL语言属性描述课件.ppt_第1页
第1页 / 共29页
第七章VHDL语言属性描述课件.ppt_第2页
第2页 / 共29页
第七章VHDL语言属性描述课件.ppt_第3页
第3页 / 共29页
第七章VHDL语言属性描述课件.ppt_第4页
第4页 / 共29页
第七章VHDL语言属性描述课件.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、第七章第七章 VHDL语言属性描述语言属性描述 属性是指关于设计实体、结构体、类型、信号等项属性是指关于设计实体、结构体、类型、信号等项目的目的指定特性。指定特性。属性提供了描述特定对象的多个侧面值的手段属性提供了描述特定对象的多个侧面值的手段信号属性在检测信号变化和建立详细的时域模型时非常信号属性在检测信号变化和建立详细的时域模型时非常重要重要为什么要有属性:为什么要有属性:电路元件需要时钟信号同步电路元件需要时钟信号同步需要控制信号控制整个电路的行为(进程的执行)需要控制信号控制整个电路的行为(进程的执行)时钟信号与控制信号的使用多种多样时钟信号与控制信号的使用多种多样1.1.利用属性可以

2、使利用属性可以使VHDLVHDL源代码更加简明扼要,便于理解源代码更加简明扼要,便于理解属性属性VHDL提供提供5类类预定义预定义属性属性:1、数值类属性、数值类属性2、函数类属性、函数类属性3、信号类属性、信号类属性4、数据类型类属性、数据类型类属性5、数组范围类属性、数组范围类属性7.1.1 常用数据的数值属性常用数据的数值属性 主要用于返回常用数据类型、数组或是块的有关值:主要用于返回常用数据类型、数组或是块的有关值:例如:返回数组长度、数据类型的上下界等。例如:返回数组长度、数据类型的上下界等。常用数据类型的数值类属性:常用数据类型的数值类属性:left:返回一个数据类型或子类型:返回

3、一个数据类型或子类型。right:返回一个数据类型或子类型:返回一个数据类型或子类型。high:返回一个数据类型或子类型的:返回一个数据类型或子类型的。low:返回一个数据类型或子类型的:返回一个数据类型或子类型的。7.1 数值类属性数值类属性:对数值取最大、最小值;对枚举类型数据下限取:对数值取最大、最小值;对枚举类型数据下限取左边界值,上限取右边界值;对数组取数组区间的最大最左边界值,上限取右边界值;对数组取数组区间的最大最小值。小值。:按书写顺序取左边或右边值。:按书写顺序取左边或右边值。例:例:SUBTYPE nat IS Natural Range 0 to 255;X:=natHI

4、GH;-x等于等于255X:=natLOW;-x等于等于0X:=natRIGHT;-x等于等于255X:=natLEFT;-x等于等于07.1 数值类属性数值类属性PROCESS(a)TYPE bit16 IS Array(15 downto 0)OF std_logic;VARIABLE lef,rig,up,low:NATURAL;BEGINlef:=bit16LEFT;-15rig:=bit16RIGHT;-0up:=bit16HIGH;-15low:=bit16LOW;-0END PROCESS;PROCESS(a)TYPE bit16 IS Array(0 to 15)OF std_

5、logic;VARIABLE lef,rig,up,low:NATURAL;BEGINlef:=bit16LEFT;-0rig:=bit16RIGHT;-15up:=bit16HIGH;-15low:=bit16LOW;-0END PROCESS;7.1 数值类属性数值类属性在递增区间在递增区间LEFT=LOWRIGHT=HIGH在递减区间在递减区间LEFT=HIGHRIGHT=LOW例例7-2 枚举类型数据数值属性描述枚举类型数据数值属性描述Architecture voltb of volta IS TYPE volt IS(uV,mV,V,kV);SUBTYPE s_volt IS vo

6、lt RANGE(V DOWNTO mV);SIGNAL S1,S2,S3,S4:VOLT;BEGINS1=voltHIGH;-kVS2=voltLOW;-uVS3=s_voltLEFT;-VS4=s_voltRIGHT;-mVEND voltb;7.1 数值类属性数值类属性7.1.1 数组的数值属性数组的数值属性 数组属性只有一个:取数组的长度值。格式:数组属性只有一个:取数组的长度值。格式:LENGTH(n);其中其中n是多维数组的维数;如二维数组是多维数组的维数;如二维数组n=2;对一维数组对一维数组n缺省。缺省。例例7-3 一维数组数值属性描述一维数组数值属性描述PROCESS(b)T

7、YPE bit8 IS array(7 downto 0)of bit;TYPE bit31_8 IS array(31 downto 8)of bit;VARIABLE b1,b2:integer;BEGINb1:=bit8LENGTH;-b1=8B2:=BIT31_8LENGTH;-b2=24END PROCESS7.1 数值类属性数值类属性 指属性以函数的形式返回有关指属性以函数的形式返回有关数据类型数据类型、数组数组或是或是信号信号的信的信息。息。函数类属性使用时以函数表达式的形式出现,属性根据输入函数类属性使用时以函数表达式的形式出现,属性根据输入的自变量值去执行函数,返回一个相应的

8、值。该返回值可能是的自变量值去执行函数,返回一个相应的值。该返回值可能是数组区间的某一个值,也可能是信号的变化值,或是枚举数据数组区间的某一个值,也可能是信号的变化值,或是枚举数据的位置序号等。的位置序号等。函数类属性分三类:函数类属性分三类:数据类型属性函数数据类型属性函数数组类型属性函数数组类型属性函数1.信号属性函数信号属性函数7.2 函数类属性函数类属性7.2 函数类属性函数类属性7.2.1 数据类型属性函数数据类型属性函数主要用来得到数据类型的各种相关信息,共主要用来得到数据类型的各种相关信息,共6种:种:(1)POS(数据值数据值)-返回数据类型定义中输入的返回数据类型定义中输入的

9、X值的位置序号值的位置序号(2)VAL(位置序号位置序号)-返回输入的位置序号返回输入的位置序号X处的值处的值(3)SUCC(数据值数据值)-返回数据类型定义中该值的下一个对应值返回数据类型定义中该值的下一个对应值(4)PRED(数据值数据值)-返回数据类型定义中该值的前一个对应值返回数据类型定义中该值的前一个对应值(5)LEFTOF(数据值数据值)-返回数据类型定义中该值的左边值返回数据类型定义中该值的左边值(6)RIGHTOF(数据值数据值)-返回数据类型定义中该值的右边值返回数据类型定义中该值的右边值 对于递增区间:对于递增区间:SUCC(x)=RIGHTOF(x)PRED(x)=LEF

10、TOF(x)对于递减区间:对于递减区间:SUCC(x)=LEFTOF(x)PRED(x)=RIGHTOF(x)7.2 函数类属性函数类属性例例7-4PACKAGE w_pack IS TYPE week IS(sun,mon,tue,wed,thu,fri,sat);TYPE r_week IS week RANGE sat DOWNTO sun;END w_pack;求自定义类型的属性:求自定义类型的属性:weekSUCC(mon)-得得tueweekPRED(mon)-得得sunweekLEFTOF(mon)-得得sunweek RIGHTOF(mon)-得得tuer_weekSUCC(m

11、on)-得得tuer_weekPRED(mon)-得得sunr_weekLEFTOF(mon)-得得tuer_week RIGHTOF(mon)-得得sun7.2 函数类属性函数类属性7.2.2 数组属性函数数组属性函数主要用来得到数组的信息。共有主要用来得到数组的信息。共有4种属性:种属性:(1)LEFT(n)-得到得到n区间的区间的左端边界号左端边界号(2)RIGHT(n)-得到得到n区间的区间的右端边界号右端边界号(3)HIGH(n)-得到得到n区间的区间的高端边界号高端边界号(4)LOW(n)-得到得到n区间的区间的低端边界号低端边界号其中其中n表示数组的区间序号(即维数)。当表示数组

12、的区间序号(即维数)。当n=1时可以缺省,默认为一维时可以缺省,默认为一维数组。数组。在递减区间在递减区间LEFT=HIGHRIGHT=LOW在递增区间在递增区间LEFT=LOWRIGHT=HIGHTYPE matrix IS ARRAY(0 TO 7,15 DOWNTO 0)OF std_logic;i=matrix left(1);-i=0;i=matrix right(1);-i=7;i=matrix high(1);-i=7;i=matrix low(1);-i=0;i=matrix left(2);-i=15;i=matrix right(2);-i=0;i=matrix high(

13、2);-i=15;i=matrix low(2);-i=0;7.2 函数类属性函数类属性7.2.3 信号类型属性函数信号类型属性函数主要用来得到信号的各种行为功能信息:包括信号值的变化、主要用来得到信号的各种行为功能信息:包括信号值的变化、信号变化后经过的时间、变化前的信号值等。共有信号变化后经过的时间、变化前的信号值等。共有5种属性:种属性:(1)EVENT -当前很短的时间内信号发生了变化,则返回当前很短的时间内信号发生了变化,则返回TRUE,否则返回否则返回FALSE。(2)ACTIVE-当前很短的时间内信号活跃,则返回当前很短的时间内信号活跃,则返回TRUE,否则返,否则返回回FALS

14、E。(3)LAST_EVENT -返回信号从前一个事件发生到现在的时间值。返回信号从前一个事件发生到现在的时间值。(4)LAST_VALUE-返回信号在最近一个事件发生以前的值返回信号在最近一个事件发生以前的值(5)LAST_ACTIVE-返回信号从前一次活跃到现在的时间值返回信号从前一次活跃到现在的时间值7.2 函数类属性函数类属性1 属性函数属性函数EVENT和和 LAST_VALUE EVENT主要用来检测脉冲信号的正跳变或负跳变边沿,也可以检查主要用来检测脉冲信号的正跳变或负跳变边沿,也可以检查信号是否刚发生变化并且正处于某一个电平值。信号是否刚发生变化并且正处于某一个电平值。例例7-

15、9 D触发器时钟脉冲上升沿的检测触发器时钟脉冲上升沿的检测library ieee;use ieee.std_logic_1164.all;entity dff IS PORT(d,clk:IN cal_resist std_logic;q:OUT std_logic);end dff;ARCHITECTURE dff OF dff ISBEGIN PROCESS(clk)BEGIN IF clk=1 AND clkEVENT THENq=setup_time)REPORT“SETUP VIOLATON”SEVERITY ERROR;END IF;7.2 函数类属性函数类属性 END PROC

16、ESS;Dff_process:PROCESS(clk)BEGIN IF clkLAST_VALUE=0 AND clkEVENT THENq=d;END IF;END PROCESS;END dff_behav;7.2 函数类属性函数类属性dclkqHold timeSetup time 根据所加属性的信号去建立一个新的信号,称信号类根据所加属性的信号去建立一个新的信号,称信号类属性。属性。信号类属性有信号类属性有4种:种:DELAYED(t):t 为时间表达式,该属性将产生为时间表达式,该属性将产生一个特别的延迟信号,该信号使主信号按一个特别的延迟信号,该信号使主信号按t确定的确定的时间产

17、生附加的延迟。新信号与主信号类型相同。时间产生附加的延迟。新信号与主信号类型相同。该属性可以用来检查信号的保持时间。该属性可以用来检查信号的保持时间。STABLE(t):当所加属性的信号在时间当所加属性的信号在时间t内没有内没有发生变化,则返回发生变化,则返回true,否则返回否则返回false.该属性中当该属性中当t=0时可以得到与属性时可以得到与属性EVENT相反的值。相反的值。QUIET(t):信号在时间信号在时间t内不活跃,则返回内不活跃,则返回true,否则返回否则返回false。典型应用是用来对中断优先处理。典型应用是用来对中断优先处理机制进行建模。机制进行建模。1.TRANSAC

18、TION:所加属性的信号活跃时将对所加属性的信号活跃时将对所建立的所建立的bit数据取反。数据取反。7.3 信号类属性信号类属性7.3 信号类属性信号类属性1 属性属性 DELAYED(t)可以用可以用DELAYED(t)属性的信号建立一个延迟信号附加在该信号上。属性的信号建立一个延迟信号附加在该信号上。例例7-11 二输入与门附加延迟的描述二输入与门附加延迟的描述c_opda_ipdb_ipdintbintaabc7.3 信号类属性信号类属性library ieee;use ieee.std_logic_1164.all;entity and2 IS GENERIC(a_ipd,b_ipd,

19、c_opd:TIME);PORT(a,b:IN cal_resist std_logic;c:OUT std_logic);end and2;ARCHITECTURE int_signals OF and2 IS SIGNAL inta,intb:std_logic;BEGINinta=TRANSPORT a AFTER a_ipd;intb=TRANSPORT b AFTER b_ipd;c=inta AND intb AFTER c_opd;END int_signals;ARCHITECTURE attr OF and2 ISBEGINc=setup_time)REPORT“SETUP

20、VIOLATON”SEVERITY ERROR;END IF;7.3 信号类属性信号类属性hold_check:PROCESS(clkDELAYED(2*hold_time)BEGIN IF(clkDELAYED(hold_time*2)=1)AND(clkDELAYED(hold_time*2)EVENT)then ASSERT(dLAST_EVENT=0 ns)OR(dLAST_EVENT hold_time)REPORT“HOLD VIOLATON”SEVERITY ERROR;END IF;END PROCESS;Dff_process:PROCESS(clk)BEGIN IF clk

21、LAST_VALUE=0 AND clkEVENT THENq=d;END IF;END PROCESS;END dff_behav;7.3 信号类属性信号类属性2 属性属性 STABLE(TIME)可以用可以用STABLE(TIME)属性确定在指定的时间内,参考信号是否变化属性确定在指定的时间内,参考信号是否变化从而返回一个布尔值,可以用这个布尔值赋给另外一个信号,使这个信号产生从而返回一个布尔值,可以用这个布尔值赋给另外一个信号,使这个信号产生变化。变化。例例7-13 信号属性信号属性STABLE(TIME)的)的描述描述LIBRARY IEEE;USE IEEE.STD_LOGIC_11

22、64.ALL;ENTITY exam IS PORT(a:IN std_logic;b:OUT std_logic);END ENTITY;ARCHITECTURE pulse OF exam ISBEGIN b=aSTABLE(10 ns);END PULSE;7.3 信号类属性信号类属性102030405060708090nsVab图图7-4 属性属性STABLE 得到的输入输出波形得到的输入输出波形如果属性如果属性STABLE(TIME)中)中TIME 的时间值为的时间值为0(也是(也是默认值),则时间值可以没有。则可以检测信号的边沿。默认值),则时间值可以没有。则可以检测信号的边沿。7

23、.3 信号类属性信号类属性3 属性属性 QUIET(TIME)可以用可以用QUIET(TIME)属性确定在指定的时间内,参考信号是否变化从属性确定在指定的时间内,参考信号是否变化从而返回一个布尔值,可以用这个布尔值赋给另外一个信号,使这个信号产生变而返回一个布尔值,可以用这个布尔值赋给另外一个信号,使这个信号产生变化。化。例例7-14 具有优先级中断的描述具有优先级中断的描述ARCHITECTURE test OF test IS TYPE t_int IS(int1,int2,int3,int4,int5);signal int,intsig1,intsig2,intsig3:t_int;s

24、ignal lock_out:BOOLEAN;BEGIN int1_proc:PROCESS begin .WAIT ON trigger1;WAIT UNTIL clk=1;IF NOT(lock_our)THENintsig1=int1;END IF;END PROCESS;int2_proc:PROCESS begin .WAIT ON trigger2;WAIT UNTIL clk=1;IF NOT(lock_our)THENintsig2=int2;END IF;END PROCESS;int3_proc:PROCESS begin .WAIT ON trigger3;WAIT UN

25、TIL clk=1;IF NOT(lock_our)THENintsig3=int3;END IF;END PROCESS;7.3 信号类属性信号类属性 int=intsig1 WHEN NOT(intsig1QUIET)ELSE intsig2 WHEN NOT(intsig2QUIET)ELSE intsig3 WHEN NOT(intsig3QUIET)ELSE int;Int_handle:PROCESS begin WAIT ON intTRANSACTION;lock_out WHEN int2=WHEN int3=WHEN int4=WHEN int5=END CASE;lock

26、_out=FALSE;END PROCESS;END TEST7.3 信号类属性信号类属性 根据所加属性可以得到一个数据类型值。只有一种根据所加属性可以得到一个数据类型值。只有一种:类型名类型名BASE用该属性可以得到一个数据类型或子类型的基本类型,用该属性可以得到一个数据类型或子类型的基本类型,并且使用时只能作为其他属性的前缀来使用并且使用时只能作为其他属性的前缀来使用。例:例:Do_nothing:process(x)TYPE color IS(red,blue,green,yellow,brown,black);SUBTYPE color_gun IS color RANGE red t

27、o green;VARIABLE a:color;Begina:=color_gunBASERIGHT;a:=colorBASELEFT;a:=color_gunBASESUCC(green);END PROCESS;7.4 数据类型属性数据类型属性 该属性按指定输入参数可以得到一个确定的数组区间范围。该属性按指定输入参数可以得到一个确定的数组区间范围。只能用于数组,只有只能用于数组,只有2种:种:1.RANGE(n)其中其中n 是输入参数,该属性可以得到一个递增顺序的数组区间范是输入参数,该属性可以得到一个递增顺序的数组区间范围:围:0 to N2.REVERSE_RANGE(n)该属性可以

28、得到一个递减顺序的数组区间范围该属性可以得到一个递减顺序的数组区间范围:N downto 07.5 数组区间类属性数组区间类属性例:例:FUNCTION vector_to_int(vect:std_logic_vector)RETURN integer ISVARIABLE result:integer:=0;BeginFOR i IN vectRANGE LOOPresult:=result*2;IF vect(I)=1 THENresult:=result+1;END IF;END LOOP;RETURN result;END vector_to_int;7.5 数组区间类属性数组区间类属性

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第七章VHDL语言属性描述课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|