VHDL语言数据类型及相互转换_第1页
VHDL语言数据类型及相互转换_第2页
VHDL语言数据类型及相互转换_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、要定义约束范围INTEGER RANGE 100 DOWNTO 0 BIT_ VECTOR (3 DOWNTO 0)REAL RANGE 2.0 TO 30.0IEEE定义的逻辑位与矢量在IEEE的程序包std_logic_1164屮定义了两个非常重要的数据类型:1 ,stdjogic取值:0,1,Z,X,W,L,Hz:高阻X:不定w:弱信号不定L:弱信号o H:弱信号1 2,StdJogic_vector注意1, 在使用,std_logicH和”stdogic_vectorH时,在程序中必须声明库及程序包说明语句,即LIBRARY ieee和std_logic_1164.ALL这两句在程序屮

4、必不可少2, std.logic有多个取值,与BIT不同,在编程时应特别注意,需要考虑全所有情况用户自定义的数据类型1, 枚举类型格式:TYPE数据类型名IS(元素,元素厂);TYPE STD_LOGIC IS (,U;X,,,0,,,1,;乙TYPE week IS (Sun,Mon,Tue,wed,Thu,Fri,Sat);TYPE color IS (red,green,yellow,blue)TYPE lift_state IS(stoponl ,doorpeen,doorclose, doorwaitl, doorwait2, doorwait3, doorwait4,doorwai

5、t5, up,down,stop)枚举类型的声明TYPE color IS (red,green,yellow,blue);VARIABLE A:COLOR; SIGNAL B:COLOR;A:=RED; B=YELLOW;TYPE lever ISSIGNAL V:lever;V=1*;用户自定义的数据类型2, 整数(INTEGER)格式:TYPE数据类型名IS数据类型定义约束范围例TYPE digit IS INTEGERRANGE OTO 9 VARIABLE A:DIGIT;A:=5;A:=28;用户自定义的数据类型3, 实数(REAL)格式:TYPE数据类型名IS数据类型定义约朿范围

6、TYPE 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) OFSTD.LOGIC;TYPE word IS ARRAY (INTEGER 1 TO 8) OF STD_LOGIC;数组常在总线,ROM 和 RAM 中使用.用户自定义的数据类型5, 记录(RECODE)类型将不同的数据类型放在一块,就是记录类型数据格式:TYPE记录类型名ISREC

7、ORD元素名:数据类型名;元素名:数据类型名;END RECORD记录类型名;记录(RECODE)类型例:TYPE bank IS RECORD addrO:STD_LOGIC_VECTOR(7 DOWNTO 0); addrl: STD_LOGIC_VECTOR(7 DOWNTO 0); rO: 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 RECO

8、RD a: array logic;b: STD_LOGIC_VECTOR(7 DOWNTO 0);c: integer RANGE 0 to len ;END RECORD;数据类型的转换数据类型转换函数有VHDL语言的包提供例如:STD_LOGIC_1164,STD_LOGIC_ ARITH STD_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_VE

9、CTOR 转换成 BIT.VECTOR 由 BIT 转换 成 STD.LOGIC 由 STD.LOGIC 转换成 BIT2、STD_LOGIC_ARITH 包 CONV_STD_LOGIC_VECTOR(A,位长)CONVJNTEGER(A)由 INTEGER,UNSIGNED 和 SIGNED 转换成 STD_LOGIC_VECTOR由 UNSIGNED 和 SIGNED 转换成 INTEGER3、STD_LOGIC_UNSIGNED 包 CONVJNTEGER(A)STD_LOGIC_VECTOR 转换成 INTEGERVHDL属性VHDL没有一般程序语言屮的那些运算类标准函数,取而代Z的

10、是多种能反映和影响硬件行为的属 性属性在描述时序电路的VHDL设计文件中几乎处处可见,如检测上升沿,下降沿,知道前一次发生 的事件.VHDL属性属性指的是关于实体,结构体,类型及信号的一些特征有的属性对综合(设计)非常有用VHDL的属性可分为数值类属性,函数类属性,范围类属性,信号类属性,类型类属性其引用的一般 形式为:对象属性数值类属性数值类属性用于返回数组,块或一般数据的有关值,如边界,数组长度等信息对一般的数据有4种 数值类属性:对象类型的左边界,右边界,上边界,下边界,对应的关键字是:LEFT,RIGHT,HIGH,LOW.数组在加一个长度属性LENGTH.数值类属性sdown:IN

11、std_logic_vector(8 DOWNTO 0); sup:IN std_logic-vector(0 to 8);这两个信号的各属性值如下:sdownleft=8; sdownright=0; sdownlow=0; sdownhigh=8;sdowrflength=9; supleft=O; supright=8; suplow=0; suphigh=8; suplength=9;数值类属性TYPE bit32 IS ARRAY (63 DOWNTO 32) OF BITVARIABLE: left_ra ng e,right_ra ng e,up_ra ng e,low_ra n

12、g e,le n: INTEGER;BEGIN left-range:=bit32LEFT; -return 63 right-range:=bit32RIGHT; -return 32 up-range:=bit32 HIGH; -return 63 low-range:=bit32LOW; -return 32 len:=bit32LENGTH; -return 32 函 数类属性信号属性函数属于函数类属性,用来返回有关信号行为功能的信息共有5种信号属性函数分别是: EVENT (事件):1 ACTIVE (活跃);1 LAST.EVENT (最近一次事件到现在经过多少时间);LAST_A

13、CTIVE (最近一次活跃到现在经过多 少时间);LAST_V ALUE (信号变化前的取值是什么)EVENTEVENT:它的值为布尔型,取值为TRUE或FALSE;如果刚好有事件发生在该属性所附着 的信号上 (即信号有变化),取值为TRUE.利用此属性可决定时钟边沿是否有效,即时钟是否发生EVENTSIGNAL elk: IN stdjogic; elk EVENT AND clk=r clk=1* AND elk EVENT elk EVENT AND elk clk=O AND elk EVENT rising_edge (elk) falling_edge (elk) EVENT 和

14、ACTIVEEVENT要求信号值发生变化;1到0,0到1ACTIVE信号值的任何变化,1到1,1到0,0到1,0到0;所有的事件都是活跃,但并非所有的活跃都是 事件范围类属性RANGE属性,其生成一个限制性数据对彖的范虱例SIGNAL data_bus:std_logic_vector (15DOWNTO 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 IS CONSTANT N:lntege

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论