10电_第3章_3.4VHDL数据类型.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10电_第3章_3.4VHDL数据类型

EDA技术与FPGA应用设计;;一、VHDL中的数据类型 ;一、预定义数据类型(可直接引用);(1)布尔(BOOLEAN) 布尔数据类型实际上是一个二值枚举型数据类型,它的取值有FALSE(伪)和TRUE(真)两种。 可以进行关系运算和逻辑运算,不能用于算术运算。 布尔量常用来表示信号的状态或者总线上的情况。 例如:IF a=b 综合器用一个二进制位表示BOOLEAN型变量或信号。综合器将TRUE转变为信号量“1”,将FALSE转变为信号量“0”。 ;(2) 位(BIT) 位数据类型属于枚举型,取值 ‘1’或‘0’。 可以进行逻辑运算,运算结果仍是位数据类型。VHDL综合器用一个二进制位表示BIT。 例如: signal a,b,c: bit; c= a and b; ;(3)位矢量(BIT_VECTOR) 位矢量是基于BIT数据类型的数组。 在声明位矢量时必须注明位宽,即数组中的元素个数和排列,且元素的排列必须为自然数。 SIGNAL a: BIT_VECTOR(7 TO 0); 位矢量是用双引号括起来的一组位数据,每位取值只能是1或0 。在数据前面可加数制标记,如X(16进制)、B(2进制、默认)、O(8进制)等。 例如: Signal a:bit_vector(7 downto 0):=; ;(4) 字符(CHARACTER) 字符类型通常用单引号引起来,如‘A’。字符类型区分大小写,如‘B’不同于‘b’。 (5) 字符串(STRING) 非约束型字符数组,或称为字符串数组。 字符串必须用双引号标明,区分大小写。 VARIABLE STRING_VAR﹕STRING(1 TO 7); … STRING_VAR:=“A B C D”;;一、预定义数据类型(可直接引用);一、预定义数据类型(可直接引用);一、预定义数据类型(可直接引用); ;【标准数据类型小结】; ;(1) 标准逻辑位STD_LOGIC【参考 P69】 STD_LOGIC数据类型的定义如下所示: 在编程时需要注意考虑其多值性。 SIGNAL sig:STD_LOGIC:=?Z; --定义“sig”为“STD_LOGIC”类型的信号,并赋初值‘Z’ ; ;三、其它预定义数据类型;(1) 无符号数据类型(UNSIGNED TYPE) UNSIGNED数据类型代表一个无符号的数值,在综合器中,这个数值被解释为一个二进制数,这个二进制数的最左位是其最高位。 【例】UNSIGNED型举例: VARIABLE var : UNSIGNED(0 TO 9); --定义变量var为10位二进制数,最高位是var(0)。 SIGNAL sig : UNSIGNED(3 DOWNTO 0); --定义信号sig为4位二进制数,最高位为sig(3)。;(2) 有符号数据类型(SIGNED TYPE) SIGNED数据类型表示一个有符号的数值,补码表示,例如:SIGNED(“0101”) 代表+5;SIGNED(“1011”) 代表-5。 【例】SIGNED型举例: VARIABLE var : SIGNED(0 TO 9); --定义变量var为10位二进制数,最高位var(0)是符号位。 SIGNAL sig : SIGNED(3 DOWNTO 0); --定义信号sig为4位二进制数,最高位sig(3)是符号位。;用户自定义数据类型包括自定义的新类和子类即有约束范围的类; 可以自定义的数据类型有:整数、实数、枚举、物理、数组、记录等。 一般格式为: TYPE 数据类型名 {,数据类型名} IS 数据类型定义;;枚举类型(Enumerated) VHDL中的枚举数据类型是用文字符号来表示一组实际的二进制数的类型(若直接用数值来定义,则必须使用单引号)。;【例】 TYPE week IS(Sun,Mon,Tue,wed,Thu,Fri,Sat); Signal today:week; result=‘1’ when today= Fri else ‘0’; ;应用 TYPE M_STATE IS( STATE1,STATE2,STATE3,STATE4,STATE5); SIGNAL CURRENT_STATE,NEXT_STATE:M_STATE; 信号CURRENT_STATE和NEXT_STATE的数据类型定义为M_STATE,它们的取值范围是可枚举的,即从STATE1~STATE5共五种,而这些状态代表五组

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档