{PLD可编程逻辑器件}08可编程逻辑电路技术VHDL的预定义属性1hr

上传人:卓****库 文档编号:140719000 上传时间:2020-07-31 格式:PPTX 页数:43 大小:149.95KB
返回 下载 相关 举报
{PLD可编程逻辑器件}08可编程逻辑电路技术VHDL的预定义属性1hr_第1页
第1页 / 共43页
{PLD可编程逻辑器件}08可编程逻辑电路技术VHDL的预定义属性1hr_第2页
第2页 / 共43页
{PLD可编程逻辑器件}08可编程逻辑电路技术VHDL的预定义属性1hr_第3页
第3页 / 共43页
{PLD可编程逻辑器件}08可编程逻辑电路技术VHDL的预定义属性1hr_第4页
第4页 / 共43页
{PLD可编程逻辑器件}08可编程逻辑电路技术VHDL的预定义属性1hr_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《{PLD可编程逻辑器件}08可编程逻辑电路技术VHDL的预定义属性1hr》由会员分享,可在线阅读,更多相关《{PLD可编程逻辑器件}08可编程逻辑电路技术VHDL的预定义属性1hr(43页珍藏版)》请在金锄头文库上搜索。

1、可编程逻辑电路技术,陈 李 CL,第8章 VHDL设计实例,主要内容 8.1 值类属性 8.2 函数类属性 8.3 信号类属性 8.4 数据类型类属性 8.5 数据范围类属性 8.6 自定义属性,值类属性主要用于返回常用数据类型、数组、块的有关值。如返回数组长度、数组类型的上下边界等。 可分为三个子类: 常用数据类型的值类属性 数组的值类属性 块的值类属性,8.1 值类属性,1、常用数据类型的值类属性 这类属性有四种: (1)left:返回数据类型或子类型最左边的值; (2)right:返回数据类型或子类型最右边的值; (3)high:返回一个数据类型或子类型最大值; (4)low:返回一个数

2、据类型或子类型最小值; 属性用字符“ ” 来指定属性,后面跟属性名, “ ”前面是所附属性的项目,这种定义格式对所有的属性是通用的。,8.1 值类属性,注意: 对于枚举类型,属性left的值和low的值相同,属性right的值和high的值相同; 对于用保留字to定义的整数类型,属性left的值和low的值相同,属性right的值和high的值相同; 对于用保留字downto定义的整数类型,属性right的值和low的值相同,属性left的值和high的值相同;,8.1 值类属性,如: type number is integer range 0 to 9; type week is (Mon

3、day, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday); type word is array (15 downto 0) of std_logic;,numberleft = 0 numberright = 9 numberhigh = 9 numberlow = 0,weekleft = Monday weekright = Sunday weekhigh = Sunday weeklow = Monday,wordleft = 15 wordright = 0 wordhigh = 15 wordlow = 0,8.1 值

4、类属性,2. 数组的值类属性 只有一种属性length: 返回限定性数组的长度值,即元素的个数。该属性可用于任何标量的一维数组和多维数组。,8.1 值类属性,定义下列数据类型: type number is integer range 0 to 9; type week is (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday); type word is array (15 downto 0) of std_logic; 则有: numberlength = 10 worklength = 7 wordlength

5、= 16,3. 块的值类属性 主要用来返回块和结构体建模的信息 有两种属性 (1) behavior: 如果块有标号说明或者结构体有结构体名,并且它们中不含有元件例化语句,则返回布尔值“true”。 (2)structure: 如果块和结构体中只含有元件例化语句或进程语句,将返回布尔值“true”。,8.1 值类属性,对于不含有任何元件例化语句的块语句或是结构体,则属性behavior的返回值为“true”,而属性structure返回值“false”; 对于只含有元件例化语句或进程语句的块语句或是结构体,则属性behavior的返回值为“false” ,而属性structure返回值“tru

6、e” ; 对于以混合描述方式描述的块语句或是结构体来说,属性behavior和structure的返回值都为“false” 。,8.1 值类属性,例:用3个二输入与门来实现四输入与门的VHDL描述。 Entity and4 is port(a, b, c, d :in bit; q : out bit); End and4; Architectture structural of and4 is component and_gate port( a , b : in bit; c : out bit); end component; signal q1, q2 :bit; Begin U1:

7、and_gate port map( a, b ,q1); U2: and_gate port map( c, d ,q2); U3: and_gate port map( q1, q2 ,q); End structural; 对结构体structural则有如下属性: (1) structuralbehavior的返回值为“false”; (2) structural structure的返回值为“true”。,8.1 值类属性,第8章 VHDL设计实例,主要内容 8.1 值类属性 8.2 函数类属性 8.3 信号类属性 8.4 数据类型类属性 8.5 数据范围类属性 8.6 自定义属性,

8、是指属性以函数的形式为设计人员返回有关数据类型、数组或是信号的信息。 执行时,属性根据输入的自变量值去执行函数,然后返回一个数据类型、数组或是信号相关信息的值。 可分为三个子类: 数据类型属性函数 数组属性函数 信号属性函数,8.2 函数类属性,1. 数据类型属性函数 用来得到数据类型的各种相关信息,能够返回数据类型的位置信息或是左右邻值等。 共有6种: (1)pos(数据值): 返回数据值的位置序号 (2)val(位置序号):返回该位置序号的值 (3)succ(数据值):返回该数据值的下一个值 (4)pred(数据值):返回该数据值的前一个值 (5)leftof(数据值):返回该数据值左边的

9、值 (6)rightof(数据值):返回该数据值右边的值,8.2 函数类属性,如: Type current is range 0 to 1000000 Units uA; mA = 1000 uA; A =1000 mA; End units; Type week is (Monday,Tuesday,Wednesday,Thursday, Friday,Saturday, Sunday); 则有:,Currentpos(10 uA) = 10 Currentval(10) = 10 uA Currentsucc(7 uA) = 8 uA Currentpred(7 uA) = 6 uA C

10、urrentleftof(10 uA) = 9 uA Currentrightof(10 uA) = 11 uA,weekpos(Tuesday) = 1 weekval(3) = Thursday weeksucc(Thursday) = Friday weekpred(Thursday) = Wednesday weekleftof(Friday) = Thursday weekrightof(Friday) = Saturday,8.2 函数类属性,2. 数组属性函数 有4种: (1)left(n): 得到索引号为n的区间的左端位置号; (2)right(n):得到索引号为n的区间的右端

11、位置号; (3)high(n):得到索引号为n的区间的高端位置号; (4)low(n):得到索引号为n的区间的低端位置号; 其中,索引号n就是多维数组中所定义的多维区间的序号,缺省为n=1。当索引号取缺省值时,数组属性函数就代表对一维区间进行操作。,8.2 函数类属性,type ram_data is array ( 0 to 511) of integer; . for i in ram_data1low to ram_data1high loop,8.2 函数类属性,3. 信号属性函数 主要有以下5种: (1)signal_nameevent: 该函数返回值为“true”或“false”。

12、在当前相当小的时间间隔内有信号事件发生,返回值为“true”;反之,则返回“false”。 (2)signal_nameactive: 如果在当前相当小的时间间隔内信号活跃,则函数的返回值为“true”;如果不活跃,则返回“false”。,8.2 函数类属性,注:“信号活跃”和“事件发生” “信号活跃”定义为信号的任何变化,例如信号从0变到1是一个信号活跃,而信号从0到0也是一个信号活跃。 “事件发生”定义为信号的值发生变化,如信号从0变到0不是一个事件,原因是信号值没有变。 不难看出:所有的事件发生都是信号活跃,但是所有的信号活跃不一定是事件发生。,8.2 函数类属性,(3)signal_n

13、amelast_event: 返回该信号从前一个事件发生到现在时刻所经历的时间值。 (4)signal_namelast_active: 返回该信号从前一次信号活跃到现在时刻所经历的时间值。 (5)signal_namelast_value: 返回该信号在最近一个事件发生以前的值。 信号属性函数event应用十分广泛,对于确定信号的边沿十分有效。如果一个信号有事件发生,则表明有跳变沿产生;再根据信号的值就可以确定是上升沿跳变还是下降沿跳变。,8.2 函数类属性,例:D触发器的源代码 Library ieee; Use ieee.std_logic_1164.all; Entity dff is

14、 port(d : in std_logic ; clk : in std_logic ; q : out std_logic); End dff; Architecture rtl of dff is Begin process(clk) begin if (clkevent and clk = 1 ) then q = d; end if; end process; End rtl;,8.2 函数类属性,上例中在检测上升沿时,当时钟clk原来的值为“0”时,那么逻辑上是正确的;当时钟clk原来的值不为“0”时,虽然出现了上升沿,那么逻辑上是不正确的。可以用last_value将上述程序作一

15、下改进: 将 if (clkevent and clk = 1 ) then 改为: if (clkevent and clk = 1 and (clklast_value = 0 ) then 这样就保证了时钟信号clk是从0变到1的,确定了上升沿触发。,8.2 函数类属性,第8章 VHDL设计实例,主要内容 8.1 值类属性 8.2 函数类属性 8.3 信号类属性 8.4 数据类型类属性 8.5 数据范围类属性 8.6 自定义属性,是根据一个信号去建立一个新信号,建立的新信号是以所加属性的信号为基础而形成的,因此这个信号带有了所加属性的有关信息。 用信号类属性得到的有关信息类似于某些函数类

16、属性所得到的信息,所不同的是信号类属性可以用于正常信号能用到的任何场合,包括敏感表中。 有以下四种: (1)信号delayed (t) :建立一个与所加属性的信号同类型的信号,该信号就是以所加属性的信号为参考信号,经过延迟时间t 后得到.,8.3 信号类属性,(2)信号stable (t) :当所加属性的信号在时间t 内没有事件发生,则返回 “true”的布尔信号;反之,则返回“false”的布尔信号。 (3)信号quiet (t) :当所加属性的信号在时间t 内信号不活跃时,则返回一个值为“true”的布尔信号;反之,则返回“false”的布尔信号。 (4)信号transaction:该属性可以建立一个bit类型的信号,当所加属性的信号活跃时,信号将对前值进行翻转。,

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

当前位置:首页 > 商业/管理/HR > 企业文档

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