欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:6522940       资源大小:375.32KB        全文页数:29页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第八章 VHDL语言属性描述 属性是指关于设计实体、结构体、类型、信号等项目的指定特性。属性提供了描述特定对象的多个侧面值的手段信号属性在检测信号变化和建立详细的时域模型时非常重要为什么要有属性:电路元件需要时钟信号同步需要控制信号控制整个电路的行为(进程的执行)时钟信号与控制信号的使用多种多样利用属性可以使VHDL源代码更加简明扼要,便于理解,属性,VHDL提供5类预定义属性:1、数值类属性2、函数类属性3、信号类属性4、数据类型类属性5、数组范围类属性,8.1.1 常用数据的数值属性 主要用于返回常用数据类型、数组或是块的有关值:例如:返回数组长度、数据类型的上下界等。常用数据类型的数值类属性:left:返回一个数据类型或子类型最左边的值。right:返回一个数据类型或子类型最右边的值。high:返回一个数据类型或子类型的最大值。low:返回一个数据类型或子类型的最小值。,8.1 数值类属性,属性规则:上下限:对数值取最大、最小值;对枚举类型数据下限取左边界值,上限取右边界值;对数组取数组区间的最大最小值。左右边界:按书写顺序取左边或右边值。例:SUBTYPE nat IS Natural Range 0 to 255;X:=natHIGH;-x等于255X:=natLOW;-x等于0X:=natRIGHT;-x等于255X:=natLEFT;-x等于0,8.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_logic;VARIABLE lef,rig,up,low:NATURAL;BEGINlef:=bit16LEFT;-0rig:=bit16RIGHT;-15up:=bit16HIGH;-15low:=bit16LOW;-0END PROCESS;,8.1 数值类属性,在递增区间LEFT=LOWRIGHT=HIGH,在递减区间LEFT=HIGHRIGHT=LOW,例8-1:,例8-2 枚举类型数据数值属性描述Architecture voltb of volta IS TYPE volt IS(uV,mV,V,kV);SUBTYPE s_volt IS volt RANGE(V DOWNTO mV);SIGNAL S1,S2,S3,S4:VOLT;BEGINS1=voltHIGH;-kVS2=voltLOW;-uVS3=s_voltLEFT;-VS4=s_voltRIGHT;-mVEND voltb;,8.1 数值类属性,8.1.1 数组的数值属性 数组属性只有一个:取数组的长度值。格式:LENGTH(n);其中n是多维数组的维数;如二维数组n=2;对一维数组n缺省。例8-3 一维数组数值属性描述PROCESS(b)TYPE 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 PROCESS,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-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(mon)-得tuer_weekPRED(mon)-得sunr_weekLEFTOF(mon)-得tuer_week RIGHTOF(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,TYPE 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(2);-i=15;i=matrix low(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_VALUE EVENT主要用来检测脉冲信号的正跳变或负跳变边沿,也可以检查信号是否刚发生变化并且正处于某一个电平值。例7-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=d;END IF;END PROCESS;END dff;,2 属性函数 LAST_ EVENT 例8-10 D触发器建立时间的检测library ieee;use ieee.std_logic_1164.all;entity dff IS GENERIC(setup_time,hold_time:TIME);PORT(d,clk:IN cal_resist std_logic;q:OUT std_logic);end dff;ARCHITECTURE dff_behav OF dff ISBEGINSetup_check:PROCESS(clk)BEGIN IF clkLAST_VALUE=0 AND clkEVENT THENASSERT(dLAST_EVENT=setup_time)REPORT“SETUP VIOLATON”SEVERITY ERROR;END IF;,8.2 函数类属性,END PROCESS;Dff_process:PROCESS(clk)BEGIN IF clkLAST_VALUE=0 AND clkEVENT THENq=d;END IF;END PROCESS;END dff_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 信号类属性,library ieee;use ieee.std_logic_1164.all;entity and2 IS GENERIC(a_ipd,b_ipd,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=aDELAYED(a_ipd)AND bDELAYED(b_ipd)AFTER c_opd;END attr;,8.3 信号类属性,还可以用DELAYED(t)属性检测信号的保持时间。例8-12 D触发器的保持时间检测的描述library ieee;use ieee.std_logic_1164.all;entity dff IS GENERIC(setup_time,hold_time:TIME);PORT(d,clk:IN cal_resist std_logic;q:OUT std_logic);end dff;ARCHITECTURE dff_behav OF dff ISBEGINSetup_check:PROCESS(clk)BEGIN IF clkLAST_VALUE=0 AND clkEVENT THENASSERT(dLAST_EVENT=setup_time)REPORT“SETUP VIOLATON”SEVERITY ERROR;END IF;,8.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 clkLAST_VALUE=0 AND clkEVENT THENq=d;END IF;END PROCESS;END dff_behav;,8.3 信号类属性,2 属性 STABLE(TIME)可以用STABLE(TIME)属性确定在指定的时间内,参考信号是否变化从而返回一个布尔值,可以用这个布尔值赋给另外一个信号,使这个信号产生变化。例8-13 信号属性STABLE(TIME)的描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.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;,8.3 信号类属性,图8-4 属性STABLE 得到的输入输出波形,如果属性STABLE(TIME)中TIME 的时间值为0(也是默认值),则时间值可以没有。则可以检测信号的边沿。,8.3 信号类属性,3 属性 QUIET(TIME)可以用QUIET(TIME)属性确定在指定的时间内,参考信号是否变化从而返回一个布尔值,可以用这个布尔值赋给另外一个信号,使这个信号产生变化。,8.3 信号类属性,WHEN int5=END CASE;lock_out=FALSE;END PROCESS;END TEST,8.3 信号类属性,根据所加属性可以得到一个数据类型值。只有一种:类型名BASE用该属性可以得到一个数据类型或子类型的基本类型,并且使用时只能作为其他属性的前缀来使用。例:Do_nothing:process(x)TYPE color IS(red,blue,green,yellow,brown,black);SUBTYPE color_gun IS color RANGE red to green;VARIABLE a:color;Begina:=color_gunBASERIGHT;a:=colorBASELEFT;a:=color_gunBASESUCC(green);END PROCESS;,8.4 数据类型属性,该属性按指定输入参数可以得到一个确定的数组区间范围。只能用于数组,只有2种:1.RANGE其中n 是输入参数,该属性可以得到一个递减顺序的自然数区间:n downto 02.REVERSE_RANGE该属性可以得到一个递增顺序的自然数区间:0 to n,8.5 数组区间类属性,例:FUNCTION vector_to_int(vect:std_logic_vector)RETURN integer ISVARIABLE result:integer:=0;BeginFOR i IN vect REVERSE_RANGE LOOPresult:=result+vect(i)*(2*i);END LOOP;RETURN result;END vector_to_int;,8.5 数组区间类属性,

    注意事项

    本文(VHDL讲义第八章VHDL语言属性描述.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开