VHDL语言数据类型及相互转换.doc

上传人:飞****9 文档编号:137854144 上传时间:2020-07-12 格式:DOC 页数:6 大小:22.50KB
返回 下载 相关 举报
VHDL语言数据类型及相互转换.doc_第1页
第1页 / 共6页
VHDL语言数据类型及相互转换.doc_第2页
第2页 / 共6页
VHDL语言数据类型及相互转换.doc_第3页
第3页 / 共6页
VHDL语言数据类型及相互转换.doc_第4页
第4页 / 共6页
VHDL语言数据类型及相互转换.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《VHDL语言数据类型及相互转换.doc》由会员分享,可在线阅读,更多相关《VHDL语言数据类型及相互转换.doc(6页珍藏版)》请在金锄头文库上搜索。

1、标准数据类型1,整数(INTEGER)范围:-2147483547-21474836462,实数(REAL)范围:-1.0E38-1.0E38 (综合器不支持)书写时一定要有小数.3,位(BIT)在数字系统中,信号经常用位值表示,位值用带单引号1和0来表示标准数据类型4,位矢量(BIT_VECTOR)位矢量是用双引号括起来一组位数据0101015,布尔量(BOOLEAN)只有真和假两个状态,可以进行关系运算6,字符(CHARACTER)字符量通常用单引号括起来,对大小写敏感明确说明1是字符时: CHARACTER(1) 标准数据类型7,字符串(STRING)字符串是双引号括起来由字母,数字或,

2、%,$组成一串字符.区分大小写laksdklakld 10101010108,时间(TIME)时间单位:fs,ps,ns,ms,sec,min,hr例: 10 ns整数数值和单位之间应有空格标准数据类型9,错误等级(SEVERITY LEVEL)在VHDL仿真器中,错误等级用来表示系统状态,它共有4种:NOTE(注意)WARNING(警告)ERROR(错误)FAILURE(失败)标准数据类型10,自然数(NATURAL) 正整数(POSITIVE)自然数是整数一个子类型,包括0和正整数;正整数也是整数一个子类型.只能是正整数数据除定义类型外,有时还需要定义约束范围.INTEGER RANGE

3、100 DOWNTO 0BIT_ VECTOR (3 DOWNTO 0)REAL RANGE 2.0 TO 30.0IEEE定义的逻辑位与矢量在IEEE程序包std_logic_1164中定义了两个非常重要数据类型:1 ,std_logic 取值:0,1,Z,X,W,L,HZ:高阻 X:不定 W:弱信号不定 L:弱信号0 H:弱信号12,Std_logic_vector注 意1,在使用std_logic和std_logic_vector时,在程序中必须声明库及程序包说明语句,即LIBRARY ieee和std_logic_1164.ALL这两句在程序中必不可少.2, std_logic有多个取

4、值,与BIT不同,在编程时应特别注意,需要考虑全所有情况.用户自定义的数据类型1,枚举类型格式:TYPE 数据类型名 IS(元素,元素,);TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);TYPE week IS (Sun,Mon,Tue,wed,Thu,Fri,Sat);TYPE color IS (red,green,yellow,blue) TYPE lift_state IS(stopon1,doorpeen,doorclose, doorwait1, doorwait2, doorwait3, doorwait4, doorwait5,up,down,sto

5、p) 枚举类型声明TYPE color IS (red,green,yellow,blue);VARIABLE A:COLOR;SIGNAL B:COLOR;A:=RED;B=YELLOW;TYPE lever IS (0,1,z);SIGNAL V:lever;V=1;用户自定义数据类型2,整数(INTEGER)格式:TYPE 数据类型名 IS 数据类型定义 约束范围例 TYPE digit IS INTEGER RANGE 0 TO 9 VARIABLE A:DIGIT;A:=5;A:=28;用户自定义数据类型3,实数(REAL)格式:TYPE 数据类型名 IS 数据类型定义 约束范围TY

6、PE current IS REAL RANGE -1E4 TO 1E4 VARIABLE A:CURRENT;A:=1E3;A:=1E10;用户自定义数据类型4,数组(ARRAY)格式:TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型名;例:TYPE word IS ARRAY (1 TO 8) OF STD_LOGIC;TYPE word IS ARRAY (INTEGER 1 TO 8) OF STD_LOGIC;数组常在总线,ROM和RAM中使用. 用户自定义数据类型5,记录(RECODE) 类型将不同数据类型放在一块,就是记录类型数据格式:TYPE 记录类型名 IS R

7、ECORD元素名:数据类型名;元素名:数据类型名;:END RECORD记录类型名; 记录(RECODE) 类型例:TYPE bank IS RECORDaddr0: STD_LOGIC_VECTOR(7 DOWNTO 0);addr1: STD_LOGIC_VECTOR(7 DOWNTO 0);r0: INTEGER;END RECORD; 记录(RECODE) 类型例:CONSTANT LEN:integer:=100;TYPE array logic IS ARRAY (99 downto 0)OF STD_LOGIC_VECTOR(7 DOWNTO 0)TYPE table IS RE

8、CORDa: array logic;b: STD_LOGIC_VECTOR(7 DOWNTO 0);c: integer RANGE 0 to len ;END RECORD; 数据类型的转换数据类型转换函数有VHDL语言包提供例如:STD_LOGIC_1164,STD_LOGIC_ARITHSTD_LOGIC_UNSIGNED等等 函数说明1、STD_LOGIC_1164包TO_STDLOGIC_VECTOR(A)TO_BITVECTOR(A)TO_LOGIC(A)TO_BIT(A)由BIT_VECTOR转换成STD_LOGIC_VECTOR由STD_LOGIC_VECTOR转换成BIT_

9、VECTOR由BIT转换成STD_LOGIC由STD_LOGIC转换成BIT2、STD_LOGIC_ARITH包CONV_STD_LOGIC_VECTOR(A,位长)CONV_INTEGER(A)由INTEGER,UNSIGNED和SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED和SIGNED转换成INTEGER3、STD_LOGIC_UNSIGNED包CONV_INTEGER(A)_STD_LOGIC_VECTOR转换成INTEGERVHDL属性VHDL没有一般程序语言中那些运算类标准函数,取而代之是多种能反映和影响硬件行为属性.属性在描述时序电路VHDL设计文件中几乎处

10、处可见,如检测上升沿,下降沿,知道前一次发生事件.VHDL属性属性指是关于实体,结构体,类型及信号一些特征.有属性对综合(设计)非常有用.VHDL属性可分为数值类属性,函数类属性,范围类属性,信号类属性,类型类属性.其引用一般形式为:对象属性.数值类属性数值类属性用于返回数组,块或一般数据有关值,如边界,数组长度等信息.对一般数据有4种数值类属性:对象类型左边界,右边界,上边界,下边界,对应关键字是:LEFT,RIGHT,HIGH,LOW.数组在加一个长度属性LENGTH.数值类属性sdown:IN std_logic_vector(8 DOWNTO 0);sup:IN std_logic-v

11、ector(0 to 8);这两个信号各属性值如下:sdownleft=8; sdownright=0; sdownlow=0; sdownhigh=8; sdownlength=9;supleft=0; supright=8; suplow=0; suphigh=8; suplength=9;数值类属性TYPE bit32 IS ARRAY (63 DOWNTO 32)OF BITVARIABLE:left_range,right_range,up_range,low_range,len:INTEGER;BEGIN left-range:=bit32LEFT; -return 63right

12、-range:=bit32RIGHT; -return 32up-range:=bit32HIGH; -return 63low-range:=bit32LOW; -return 32len:=bit32LENGTH; -return 32函数类属性信号属性函数属于函数类属性,用来返回有关信号行为功能信息.共有5种信号属性函数,分别是: EVENT(事件) ; ACTIVE(活跃); LAST_EVENT (最近一次事件到现在经过多少时间); LAST_ACTIVE (最近一次活跃到现在经过多少时间); LAST_VALUE(信号变化前取值是什么)EVENTEVENT:它值为布尔型,取值为TR

13、UE或FALSE;如果刚好有事件发生在该属性所附着信号上(即信号有变化),取值为TRUE.利用此属性可决定时钟边沿是否有效,即时钟是否发生.EVENTSIGNAL clk: IN std_logic;clk EVENT AND clk=1 clk=1 AND clk EVENTclk EVENT AND clk=0clk=0 AND clk EVENTrising_edge(clk) falling_edge(clk)EVENT 和ACTIVEEVENT 要求信号值发生变化;1到0,0到1ACTIVE 信号值任何变化,1到1,1 到0,0到1,0到0;所有事件都是活跃,但并非所有活跃都是事件范

14、围类属性RANGE属性,其生成一个限制性数据对象范围.例 SIGNAL data_bus:std_logic_vector(15 DOWNTO 0);data_bus RANGE=15 downto 0用VHDL语言设计分频电路,把1KHZ的时钟分至约1HZ左右的时钟LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider ISPORT (Clkin:IN Std_Logic; Clkout:OUT Std_Logic);END;ARCHITECTURE Devider OF FreDevider ISCONSTANT N:Integer:=499;signal counter:Integer range 0 to N;signal Clk:Std_Logic;BEGIN PROCESS(Clkin) begin IF rising_edge(Clkin)THEN IF Counter=N then counter=0; Clk=not clk; else counter

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

当前位置:首页 > IT计算机/网络 > 其它相关文档

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