书签 分享 收藏 举报 版权申诉 / 29
上传文档赚钱

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

  • 上传人(卖家):晟晟文业
  • 文档编号:4622705
  • 上传时间:2022-12-26
  • 格式:PPT
  • 页数:29
  • 大小:80KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第七章VHDL语言属性描述课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第七 VHDL 语言 属性 描述 课件
    资源描述:

    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 数组区间类属性数组区间类属性

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第七章VHDL语言属性描述课件.ppt
    链接地址:https://www.163wenku.com/p-4622705.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库