《讲数据类型》PPT课件.ppt
《《讲数据类型》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《讲数据类型》PPT课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第三章 数据类型v预定义的数据类型预定义的数据类型v用户定义的数据类型用户定义的数据类型v子类型子类型v数组数组v端口数组端口数组v记录类型记录类型v有符号数和无符号数有符号数和无符号数v数据类型转换数据类型转换 要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。1 指在IEEE 1076和IEEE 1164标准中预先定义的一系列数据类型,可以在包集/库中找到。std库的standard包集:BIT、BOOLEAN、INTEGER、REAL数据类型;ieee库的std_logic_1164包集:STD_LOGIC、
2、STD_ULOGIC数据类型;ieee库的std_logic_arith包集:SIGNED、UNSIGNED数据类型;数据类型转换函数conv_integer(p),conv_unsigned(p,b)等;ieee库的std_logic_signed和std_logic_unsigned包集:一些函数,将STD_LOGIC_VECTOR类型数据进行类似SIGNED、UNSIGNED类型数据的运算;3.1 3.1 预定义的数据类型预定义的数据类型21)1)BIT(位,表示一位的信号值,位值为0或1)和BIT_VECTOR(位矢量,表示一组位数据)。声明:SIGNAL X:BIT;SIGNAL Y
3、:BIT_VECTOR(3 DOWNTO 0);SIGNAL W:BIT_VECTOR(0 DOWNTO 3);注意:最高位MSB(Most Significant Bit)的顺序!赋值:X=1;-单引号!Y=“1001”;-双引号!32)2)STD_LOGICSTD_LOGIC和和STD_LOGIC_VECTORSTD_LOGIC_VECTOR:这两者是IEEE 1164标准中引入的8逻辑值系统。std_logic_vector类型是由 std_logic 构成的数组。定义如下:type std_logic_vector is array(natural range)of std_logic
4、;赋值的原则:相同位宽,相同数据类型。定义8种数字逻辑值的原因:由std_logic 类型代替 bit 类型可以完成电子系统的精确模拟,并可实现常见的三态总线电路。4 两个或以上数字逻辑电路的输出端连接到同一个节点时(称为“线与”现象!),节点的电平该如何取值?典型案例:总线!1 1EN1ENAY11 1EN2ENBY21 1EN3ENCY3总总 线线 驱动能力强的电路可以将节点电平强行拉高或拉低,因此需建立多值逻辑系统加以细分。节点的电平取值取决于:两者或多者当前的输出电平值;两者的驱动能力强弱。X:强不确定值;W:弱不确定值;0:强0;L:弱0;1:强1;H:弱1;Z:高阻态(三态缓冲器,
5、常用于总线设计)-:不可能出现的情况58逻辑值系统数值关系表逻辑值系统数值关系表数值关系归纳:数值关系归纳:X或或-与其它数值连接时,最终电平取值均为与其它数值连接时,最终电平取值均为X;Z与其它数值连接时,最终电平取值均为其它数值;与其它数值连接时,最终电平取值均为其它数值;与与X类似,类似,W与与L/H数值连接时,最终电平取值均为数值连接时,最终电平取值均为W;0与与1、L与与H连接时,最终电平取值分别为连接时,最终电平取值分别为X、W;多个输出连接到同一个节点上时,节点的电平取值:6STD_LOGIC_VECTORSTD_LOGIC_VECTORSTD_LOGIC_VECTORSTD_L
6、OGIC_VECTOR类型数据的算术运算操作类型数据的算术运算操作类型数据的算术运算操作类型数据的算术运算操作vSTD_LOGIC_VECTOR类型数据不能直接进行算术运算。通过声明ieee库中的std_signed和std_logic_unsigned这两个包集,该类型数据即可进行算术运算。v例:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;signal a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);signal c:OUT STD_LOGIC_VECTOR(7 DO
7、WNTO 0);c=a+b;73 3)STD_ULOGICSTD_ULOGIC和和STD_ULOGIC_VECTORSTD_ULOGIC_VECTOR:比STD_LOGIC类型多引入了一个逻辑值U,代表初始不定值。但没有指定两个STD_ULOGIC信号连接到同一个节点上发生冲突后的逻辑值,因此要避免两个输出信号直接进行连接的情况。84 4)布尔类型()布尔类型(booleanboolean)布尔量具有两种状态:false 和 true 常用于逻辑函数,如相等(=)、比较()等中作逻辑比较。如,bit 值转化成boolean 值:boolean_var:=(bit_var=1);5 5)字符()
8、字符(CHARACTERCHARACTER):用单引号将字符括起来。variable character_var:character;.Character_var:=A;96 6)整数()整数(integerinteger)integer 表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整数范围为:-(231-1)to (231-1)VHDL综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路。如:signal s:integer range 0 to 15;信号 s 的取值范围是0-15,可用4位二进制数表示,因此 s 将被综合成由四条信号线构成的信号。107 7
9、)自然数()自然数(naturalnatural)和)和正整数(正整数(positivepositive)natural是integer的子类型,表示非负整数。positive是integer的子类型,表示正整数。定义如下:subtype natural is integer range 0 to integerhigh;subtype positive is integer range 1 to integerhigh;118 8)实数()实数(REALREAL)或称浮点数 取值范围:-1.0E38-+1.0E38 实数类型仅能用于VHDL仿真器,一般综合器 不支持。9 9)物理量字符()物
10、理量字符(Physical literalPhysical literal):时间、电压等,可以仿真,但不可综合(即综合库中没有直接可以调用的器件)。由整数和物理单位组成 如:55 ms,20 ns121010)SIGNED(有符号数)和UNSIGNED(无符号数):ieee库std_logic_arith包集中定义的数据类型,只能表示大于等于0的数,能够支持算术运算、比较运算,但不支持逻辑运算。只有在代码开始部分声明ieee库中的包集std_logic_arith,才能使用有符号数和无符号数。有符号数和无符号数的语法结构与STD_LOGIC_VECTOR相似,与整数不同,例如:SIGNAL
11、X:SIGNED(7 DOWNTO 0);SIGNAL Y:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL Z:INTEGER RANGE 0 TO 255;13v例:例:signedsigned和和unsignedunsigned数数的合法与非法的合法与非法操作操作:library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_1164.all;use use;-;-必须声明该包集才能使用必须声明该包集才能使用signedsigned和和unsignedunsigned数数。signa
12、l a,b:IN SIGNED(7 DOWNTO 0);signal x:OUT SIGNED(7 DOWNTO 0);x=a+b;-合法(支持算术运算)x=a AND b;-非法(不支持逻辑运算)14v例:例:STD_LOGIC_VECTORSTD_LOGIC_VECTOR的合法与非法操作的合法与非法操作:library ieee;library ieee;use ieee.std_logic_1164.all;-use ieee.std_logic_1164.all;-不必声明其它不必声明其它包集包集。signal a,b:IN std_logic_vector(7 DOWNTO 0);s
13、ignal x:OUT std_logic_vector(7 DOWNTO 0);x=a+b;-非法(不支持算术运算)x=a AND b;-合法(支持逻辑运算)-注意:如果声明std_logic_signed和std_logic_unsigned两个包集,则STD_LOGIC_VECTOR类型的数据也可以进行算术运算。15v例:例:STD_LOGIC_VECTORSTD_LOGIC_VECTOR的合法与非法操作的合法与非法操作:library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_1164.all;us
14、e use;signal a,b:IN std_logic_vector(7 DOWNTO 0);signal x:OUT std_logic_vector(7 DOWNTO 0);x=a+b;-合法(支持算术运算)x=a AND b;-合法(支持逻辑运算)163.2 3.2 用户定义的数据类型用户定义的数据类型 用类型定义语句TYPE实现用户自定义数据类型。TYPE语句格式:例:type byte is array(7 downto 0)of bit;variable addend:byte;type week is(sun,mon,tue,wed,thu,fri,sat);type 数据类
15、型名 is 数据类型定义 of 基本数据类型;可选171 1)用户定义的)用户定义的整数类型整数类型 用户定义的整数类型是标准包中整数类型的子范围。格式:例:type my_natural is range 0 to 9;-用户定义的自然数类型;type my_integer is range-3 to 3;-用户定义的整数类型;type 类型名称 is range 整数范围;182 2)枚举()枚举(enumeratedenumerated)类型)类型 枚举该类型的所有可能的值。格式:如:type my_logic is(0,1,Z);type state is(idle,forward,b
16、ackward,stop);-常用于有限状态机的定义。type color is(blue,green,yellow,red);variable hue:color;hue:=blue;type bit_vector is array(natural range)of BIT;-range表示数据取值范围没有约束,natural range表示数据值约束在自然数范围内。type 类型名称 is (枚举文字,枚举文字);19枚举类型的编码:综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0,以后的依次加1。编码用位矢量表示,位矢量的长度将取所需表达的所有枚举元素的最小值。如:
17、type color is(blue,green,yellow,red);编码为:blue=“00”;green=“01”;yellow=“10”;red=“11”;203.3 3.3 子类型子类型 子类型是已定义的类型或子类型的一个子集。格式:例:bit_vector 类型定义如下:type bit_vector is array(natural range)of bit;如设计中只用16bit;可定义子类型如下:subtype my_vector is bit_vector(0 to 15);注:子类型与基(父)类型具有相同的操作符和子 程序。可以直接进行赋值操作。subtype 子类型名
18、 is 数据类型名范围;21SUBTYPE语句格式:例:subtype digits is integer range 0 to 9;由subtype 语句定义的数据类型称为子类型。subtype 子类型名 is 基本数据类型 约束范围;220 1 0 0 000 1 0 0 01 1 0 1 00 1 1 0 00 1 0 0 01 1 0 1 00 1 1 0 0a.标量标量b.1D数组数组 矢量矢量c.1D*1D矢量数组矢量数组 d.2D 二维标量数组二维标量数组23type type_name is array(specification)of data_type;VHDL中预定义的数
19、据类型仅包括标量类型(单个位)和矢量类型(一维数组)两类,并没有预定义2D和1D*1D数组,用户可以自定义。定义的语法如下:数组类型对signal/variable/constant的声明的语法如下:signal(constant/variable)signal_name:type_name:=initial_value;可选24 例子:一种定义1D*1D数组的方法:TYPE row IS ARRAY(7 DOWNTO 0)OF STD_LOGIC;-1D数组;TYPE matrix IS ARRAY(0 TO 3)OF row;-1D*1D数组,矢量数组;SIGNAL x:matrix;-声
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 讲数据类型 数据类型 PPT 课件
限制150内