- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
fpgakj4
VHDL语言的数据类型 在VHDL语言中信号、变量、常数都要指定数据类型,为此,VHDL语言提供了多种标准的数据类型。另外,为使用户设计方便,还可以由用户自定义数据类型。 标准的数据类型 整数(Integer) 整数与数学中的定义相同。在VHDL中,整数的表示范围为-2 147 483 647 ~ 2 147 483 647,既-(231-1) ~ (231-1) 。 注意千万不要把一个实数赋予一个整数变量,因为VHDL是一个强类型语言。 对整数不能用逻辑操作符,当需要进行位操作时,可以用转换函数,将整数转转成位矢量。 实数(Real) 在进行算法研究或者实验时,做为对硬件的抽象手段,常常采用实数四则运算,实数的定义值范围为-1.0e+38 ~ +1.0e+38 ,实数有正有负,书写时要有小数点,例如: -1.0,+2.5,-1.0e38 位(Bit) 在数字系统中,信号值通常用一个位来表示。位值的表示方法是,用字符‘0’或者‘1’表示。 位矢量(bit_vector) 位矢量是用双引号括起来的一组位数据,例如:“001100” X”00BB” 在这里,位矢量最前面的X表示十六进制,用位矢量数据表示总线状态最形象也最方便。 布尔量(boolean) 一个布尔量具有两种状态,“真(ture)”或者“假(false)”。虽然布尔量也是二值枚举量,但它和位不同,没有数值的含义,也不能进行算术运算。 字符character 字符也是一种数据类型,所定义的字符量通常用单引号括起来,如‘A’。一般情况下VHDL对大小写不敏感,但是对字符量中的大、小写字符则认为是不一样的。例如,‘B’不同于‘b’。 字符量中的字符可以是a-z中的任一个字母,0-9中的任一个数以及空白或者特殊字符,如$,@,%等等。 字符串(string) 字符串是由双引号括起来的一个字符序列,它也称字符矢量或字符串数组。例如:“integer range”。字符串常用于程序的提示和说明。 时间(time) 时间是一个物理量数据。完整的时间量数据应包含整数和单位部分,而且整数和单位之间至少应留一个空格的位置。例如,55 sec, 2 min等。在包集合STNADARD中给出了时间的预定义,其单位为fs,ps,ns,us,ms,sec,min,hr。 错误等级(severity level) 错误等级类型数据用来表征系统的状态,它共有4种:NOTE,WARNING,ERROR,FAILURE。在系统仿真过程中可以用这4种状态来提示系统当前的工作情况。这样可以使操作人员随时了解当前系统工作的情况,并根据系统的不同状态采取相应的对策。 大于等于零的整数(natural),正整数(positive) 这两类数据是整数的子类,natural类型只能取值0和0以上的正整数;而positive则只能为正整数。 用户定义的数据类型 枚举(enumerated)类型 整数(integer)类型 数据(real)类型、浮点数(floating)类型 数组(array)类型 存取(access)类型 文件(file)类型 记录(recode)类型 时间time类型(物理类型) IEEE标准STD_LOGIC, STD_LOGIC_VECTOR 在VHDL的标准数据类型“BIT”,它是一个逻辑的数据类型。这个类型取值只能是“0”和“1”,由于该类型数据不存在不定状态‘X’,故不便于仿真。另外,由于它不存在高阻状态,因此也很难用它来描述双向数据总线。 数据类型转换 实例 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY add5 IS PORT(num: IN STD_LOGIC_VECTOR(2 DOWNTO 0); …. ); END add5; ARCHITECTURE rtl OF add5 IS SIGNAL in_num: INTEGER RANGE 0 TO 5; …. BEGIN in_num=CON_INTEGER(num); …. END rtl; VHDL语言的运算操作符 VHDL语言的运算操作符(续) 逻辑运算符 AND 逻辑与 OR 逻辑或 NAND 逻辑与非 NOR 逻辑或非 XOR 逻辑异或 逻辑运算符(续) 注意:当一个语句存在两个以上的逻辑表达式时,在c语言中有自左到右的优先级顺序的规定,而在VHDL语言中,左右没有优先级
文档评论(0)