- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)