VHDL语言属性描述课件

上传人:我*** 文档编号:143667690 上传时间:2020-09-01 格式:PPT 页数:29 大小:83.50KB
返回 下载 相关 举报
VHDL语言属性描述课件_第1页
第1页 / 共29页
VHDL语言属性描述课件_第2页
第2页 / 共29页
VHDL语言属性描述课件_第3页
第3页 / 共29页
VHDL语言属性描述课件_第4页
第4页 / 共29页
VHDL语言属性描述课件_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《VHDL语言属性描述课件》由会员分享,可在线阅读,更多相关《VHDL语言属性描述课件(29页珍藏版)》请在金锄头文库上搜索。

1、第七章 VHDL语言属性描述 属性是指关于设计实体、结构体、类型、信号等项目的指定特性。 属性提供了描述特定对象的多个侧面值的手段 信号属性在检测信号变化和建立详细的时域模型时非常重要 为什么要有属性: 电路元件需要时钟信号同步 需要控制信号控制整个电路的行为(进程的执行) 时钟信号与控制信号的使用多种多样 利用属性可以使VHDL源代码更加简明扼要,便于理解,属性,VHDL提供5类预定义属性: 1、数值类属性 2、函数类属性 3、信号类属性 4、数据类型类属性 5、数组范围类属性,7.1.1 常用数据的数值属性 主要用于返回常用数据类型、数组或是块的有关值: 例如:返回数组长度、数据类型的上下

2、界等。 常用数据类型的数值类属性: left:返回一个数据类型或子类型最左边的值。 right:返回一个数据类型或子类型最右边的值。 high:返回一个数据类型或子类型的最大值。 low:返回一个数据类型或子类型的最小值。,7.1 数值类属性,属性规则: 上下限:对数值取最大、最小值;对枚举类型数据下限取左边界值,上限取右边界值;对数组取数组区间的最大最小值。 左右边界:按书写顺序取左边或右边值。 例: SUBTYPE nat IS Natural Range 0 to 255; X:=natHIGH; -x等于255 X:=natLOW; -x等于0 X:=natRIGHT; -x等于255

3、 X:=natLEFT; -x等于0,7.1 数值类属性,PROCESS(a) TYPE bit16 IS Array(15 downto 0) OF std_logic; VARIABLE lef, rig, up, low: NATURAL; BEGIN lef:=bit16LEFT;-15 rig:=bit16RIGHT;-0 up:=bit16HIGH;-15 low:=bit16LOW;-0 END PROCESS; PROCESS(a) TYPE bit16 IS Array(0 to 15) OF std_logic; VARIABLE lef, rig, up, low: NA

4、TURAL; BEGIN lef:=bit16LEFT;-0 rig:=bit16RIGHT;-15 up:=bit16HIGH;-15 low:=bit16LOW;-0 END PROCESS;,7.1 数值类属性,在递增区间 LEFT=LOW RIGHT=HIGH,在递减区间 LEFT=HIGH RIGHT=LOW,例7-1:,例7-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,

5、S3,S4: VOLT; BEGIN S1=voltHIGH;-kV S2=voltLOW;-uV S3=s_voltLEFT;-V S4=s_voltRIGHT;-mV END voltb;,7.1 数值类属性,7.1.1 数组的数值属性 数组属性只有一个:取数组的长度值。格式: LENGTH(n); 其中n是多维数组的维数;如二维数组n=2; 对一维数组n缺省。 例7-3 一维数组数值属性描述 PROCESS(b) TYPE bit8 IS array (7 downto 0) of bit; TYPE bit31_8 IS array (31 downto 8) of bit; VARI

6、ABLE b1,b2: integer; BEGIN b1:=bit8LENGTH;-b1=8 B2:=BIT31_8LENGTH;-b2=24 END PROCESS,7.1 数值类属性,指属性以函数的形式返回有关数据类型、数组或是信号的信息。 函数类属性使用时以函数表达式的形式出现,属性根据输入的自变量值去执行函数,返回一个相应的值。该返回值可能是数组区间的某一个值,也可能是信号的变化值,或是枚举数据的位置序号等。 函数类属性分三类: 数据类型属性函数 数组类型属性函数 信号属性函数,7.2 函数类属性,7.2 函数类属性,7.2.1 数据类型属性函数 主要用来得到数据类型的各种相关信息,

7、共6种: (1)POS(数据值) -返回数据类型定义中输入的X值的位置序号 (2)VAL(位置序号) -返回输入的位置序号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),7.2 函

8、数类属性,例7-4 PACKAGE 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)-得tue weekPRED(mon)-得sun weekLEFTOF(mon)-得sun week RIGHTOF(mon)-得tue r_weekSUCC(mon)-得tue r_weekPRED(mon)-得sun r_weekLEFTOF(mon)-得tue r_week RIG

9、HTOF(mon)-得sun,7.2 函数类属性,7.2.2 数组属性函数 主要用来得到数组的信息。共有4种属性: (1)LEFT (n) -得到n区间的左端边界号 (2)RIGHT(n) -得到n区间的右端边界号 (3)HIGH(n) -得到n区间的高端边界号 (4) LOW(n) -得到n区间的低端边界号 其中n表示数组的区间序号(即维数)。当n=1时可以缺省,默认为一维数组。 在递减区间 LEFT=HIGH RIGHT=LOW 在递增区间 LEFT=LOW RIGHT=HIGH,TYPE matrix IS ARRAY(0 TO 7, 15 DOWNTO 0) OF std_logic;

10、 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;,7.2 函数类属性,7.2.3 信号类型属性函数 主要用来得到信号的各种行为功能信息:包括信号值的变化、信号变化后经过的时间、变化

11、前的信号值等。共有5种属性: (1)EVENT -当前很短的时间内信号发生了变化,则返回TRUE,否则返回FALSE。 (2)ACTIVE -当前很短的时间内信号活跃,则返回TRUE,否则返回FALSE。 (3)LAST_EVENT -返回信号从前一个事件发生到现在的时间值。 (4)LAST_VALUE -返回信号在最近一个事件发生以前的值 (5)LAST_ACTIVE -返回信号从前一次活跃到现在的时间值,7.2 函数类属性,1 属性函数EVENT和 LAST_VALUE EVENT主要用来检测脉冲信号的正跳变或负跳变边沿,也可以检查信号是否刚发生变化并且正处于某一个电平值。 例7-9 D触

12、发器时钟脉冲上升沿的检测 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 IS BEGIN PROCESS(clk) BEGIN IF clk=1 AND clkEVENT THEN q = d; END IF; END PROCESS; END dff;,2 属性函数 LAST_ EVENT 例7-10 D触发器建立时间的检测 library iee

13、e; 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 IS BEGIN Setup_check:PROCESS(clk) BEGIN IF clkLAST_VALUE =0 AND clkEVENT THEN ASSERT(dLAST_EVENT = setup_time) REPORT “SE

14、TUP VIOLATON” SEVERITY ERROR; END IF;,7.2 函数类属性,END PROCESS; Dff_process: PROCESS(clk) BEGIN IF clkLAST_VALUE=0 AND clkEVENT THEN q = d; END IF; END PROCESS; END dff_behav ;,7.2 函数类属性,根据所加属性的信号去建立一个新的信号,称信号类属性。 信号类属性有4种: DELAYED(t) : t 为时间表达式,该属性将产生一个特别的延迟信号,该信号使主信号按t确定的时间产生附加的延迟。新信号与主信号类型相同。该属性可以用来

15、检查信号的保持时间。 STABLE(t) : 当所加属性的信号在时间t内没有发生变化,则返回true,否则返回false. 该属性中当t=0时可以得到与属性EVENT相反的值。 QUIET(t) : 信号在时间t内不活跃,则返回true,否则返回false。典型应用是用来对中断优先处理机制进行建模。 TRANSACTION: 所加属性的信号活跃时将对所建立的bit数据取反。,7.3 信号类属性,7.3 信号类属性,1 属性 DELAYED(t) 可以用DELAYED(t) 属性的信号建立一个延迟信号附加在该信号上。 例7-11 二输入与门附加延迟的描述,7.3 信号类属性,library ie

16、ee; 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; BEGIN inta = 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 IS BEGIN

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号