版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章 VHDL语言属性描述 属性是指关于设计实体、结构体、类型、信号等项目的指定特性。 属性提供了描述特定对象的多个侧面值的手段 信号属性在检测信号变化和建立详细的时域模型时非常重要 为什么要有属性: 电路元件需要时钟信号同步 需要控制信号控制整个电路的行为(进程的执行) 时钟信号与控制信号的使用多种多样 利用属性可以使VHDL源代码更加简明扼要,便于理解,属性,VHDL提供5类预定义属性: 1、数值类属性 2、函数类属性 3、信号类属性 4、数据类型类属性 5、数组范围类属性,8.1.1 常用数据的数值属性 主要用于返回常用数据类型、数组或是块的有关值: 例如:返回数组长度、数据类型的上下
2、界等。 常用数据类型的数值类属性: left:返回一个数据类型或子类型最左边的值。 right:返回一个数据类型或子类型最右边的值。 high:返回一个数据类型或子类型的最大值。 low:返回一个数据类型或子类型的最小值。,8.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,8.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;,8.1 数值类属性,在递增区间 LEFT=LOW RIGHT=HIGH,在递减区间 LEFT=HIGH RIGHT=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,
5、S3,S4: VOLT; BEGIN S1=voltHIGH;-kV S2=voltLOW;-uV S3=s_voltLEFT;-V S4=s_voltRIGHT;-mV END 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; VARI
6、ABLE b1,b2: integer; BEGIN b1:=bit8LENGTH;-b1=8 B2:=BIT31_8LENGTH;-b2=24 END PROCESS,8.1 数值类属性,指属性以函数的形式返回有关数据类型、数组或是信号的信息。 函数类属性使用时以函数表达式的形式出现,属性根据输入的自变量值去执行函数,返回一个相应的值。该返回值可能是数组区间的某一个值,也可能是信号的变化值,或是枚举数据的位置序号等。 函数类属性分三类: 数据类型属性函数 数组类型属性函数 信号属性函数,8.2 函数类属性,8.2 函数类属性,8.2.1 数据类型属性函数 主要用来得到数据类型的各种相关信息,
7、共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、例8-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 RIGHTOF(
9、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=HIGH RIGHT=LOW 在递增区间 LEFT=LOW RIGHT=HIGH,TYPE matrix IS ARRAY(0 TO 7, 15 DOWNTO 0) OF std_logic; i =
10、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 信号类型属性函数 主要用来得到信号的各种行为功能信息:包括信号值的变化、信号变化后经过的时间、变化前的信号值
11、等。共有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触发器时钟脉冲上升沿
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 例8-10 D触发器建立时间的检测 library ieee; use ie
13、ee.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 “SETUP VIOLA
14、TON” SEVERITY ERROR; END IF;,8.2 函数类属性,END PROCESS; Dff_process: PROCESS(clk) BEGIN IF clkLAST_VALUE=0 AND clkEVENT THEN q = d; END IF; END PROCESS; END dff_behav ;,8.2 函数类属性,根据所加属性的信号去建立一个新的信号,称信号类属性。 信号类属性有4种: DELAYED(t) : t 为时间表达式,该属性将产生一个特别的延迟信号,该信号使主信号按t确定的时间产生附加的延迟。新信号与主信号类型相同。该属性可以用来检查信号的保持时间
15、。 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 i
16、eee.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 AFT
17、ER c_opd; END int_signals ; ARCHITECTURE attr OF and2 IS BEGIN c = 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_re
18、sist 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 “SETUP VIOLATON” SEVERITY ERROR; END IF;,8.3 信号类属性,hold_check:PROCESS(clkDELAYED(2*hold_time) BEGIN IF (clk
19、DELAYED(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 THEN q = d; END IF; END PROCESS; END dff_behav ;,8.3
20、 信号类属性,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 IS BEGIN 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 信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理文书改进措施
- 病理科组织病理学标本处理流程
- 2026四川成都市青白江区医疗卫生事业单位考核招聘急需紧缺卫生专业技术人才18人备考题库及答案详解【网校专用】
- 2026福建泉州石狮市祥芝镇人民政府招聘编外工作人员3人备考题库及参考答案详解(预热题)
- 2026江苏宿迁市卫生健康委员会所属事业单位招聘11人备考题库带答案详解(培优)
- 2026春季中国工商银行宁波市分行校园招聘120人备考题库及参考答案详解(b卷)
- 2026西藏阿里地区革吉县人力资源和社会保障局(医疗保障局)补聘基层劳动就业社会保障公共服务平台工作人员1人备考题库附参考答案详解(a卷)
- 中华财险广州中心支公司2026届春季招聘备考题库附答案详解(夺分金卷)
- 2026西藏中共林芝市委员会宣传部招聘公益性岗位工作人员2人备考题库含答案详解(能力提升)
- 2026北京首华物业管理有限公司招聘2人备考题库含完整答案详解【名校卷】
- 小学刑法知识讲座
- 城发公司行业分析
- 口腔材料学课件
- 麻醉科临床诊疗指南2020版
- 中建综合支架专项施工方案
- 非常规时段施工安全管理方案
- 2023年北京市中国互联网投资基金管理有限公司招聘笔试题库含答案解析
- 普通气动调节阀规格书
- 如何保证伙伴成功举绩
- GB/T 41155-2021烧结金属材料(不包括硬质合金)疲劳试样
- 发展经济学 马工程课件 0.绪论
评论
0/150
提交评论