第5章 VHDL语言的对象和数据类 型及运算操作符
第5章 VHDL语言的对象和数据类 型及运算操作符
EDA技术讲义 5VHDL文字规则 511数字 整数:整数都是十进制的数,如: 5,678,0,156E2(=15600),45234287(=45234287) 实数:实数也都是十进制的数,但必须带有小数点 1.35,88670551.453909(88670551453909),1.0,44.99E-2(=0.4499 以数制基数表示的文字:用这种方式表示的数由五个部分组成。 SIGNAL dId2. d3. d4. d5: INTEGER RANGE TO 255 d1<=10#170# (十进制表示,等于十进制170 d2<=16#FE#; (十六进制表示,等于十进制254) d3<=2#11111110# (二进制表示,等于十进制254) d4<=8#376# (八进制表示,等于十进制254 d5<=16#E#E1; (十六进制表示,等于十进制224) 物理量文字(VHDL综合器不接受此类文字)。如 60s(60秒),100m(100米),kg(千欧姆),177A(177安培)
EDA技术讲义 5.1 VHDL文字规则 5.1.1 数字 整数:整数都是十进制的数,如: 5, 678, 0, 156E2(=15600), 45_234_287 (=45234287) 实数:实数也都是十进制的数,但必须带有小数点,如: 1.335,88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499) 以数制基数表示的文字:用这种方式表示的数由五个部分组成。 SIGNAL d1,d2,d3,d4,d5 : INTEGER RANGE 0 TO 255; d1 <= 10#170# ; -- (十进制表示,等于十进制170) d2 <= 16#FE# ; -- (十六进制表示,等于十进制 254) d3 <= 2#1111_1110#; -- (二进制表示,等于十进制254) d4 <= 8#376# ; -- (八进制表示,等于十进制254) d5 <= 16#E#E1 ; -- (十六进制表示,等于十进制224) 物理量文字(VHDL综合器不接受此类文字)。如: 60s (60秒), 100m(100米), kΩ (千欧姆), 177A(177安培)
EDA技术讲义 51VHDL文字规贝 512字符串 (1)字符用单引号括起来的ASCⅡ字符,如:R,a',1, (2)文字字符串"ERQR"," Both s and q equal to","x","BsCc" (3)数位字符串 B:二进制基数符号,表示二进制位0或1,在字符串中的每位表示一个Bit O:八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个3 位(B的二进制数。 X:十六进制基数符号(0~F),代表一个十六进制数,即一个4位的二进制数。 data1<=B"l11011110 二进制数数组,位矢数组长度是9 data2<=0"15 八进制数数组,位矢数组长度是6 data3<=XADO 十六进制数数组,位矢数组长度是12 data4<=B"101010101010”二进制数数组,位矢数组长度是12 data5<="101010101010”-表达错误,缺B。 data6<= OADO'I 表达错误,缺X
EDA技术讲义 5.1 VHDL文字规则 5.1.2 字符串 (2)文字字符串 (3)数位字符串 用单引号括起来的ASCII字符,如:‘R’,’a’,’1’, ’-’ B:二进制基数符号,表示二进制位0或1,在字符串中的每位表示一个Bit。 O:八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个3 位(BIT)的二进制数。 X:十六进制基数符号(0~F),代表一个十六进制数,即一个4位的二进制数。 data1 <= B"1_1101_1110" -- 二进制数数组,位矢数组长度是9 data2 <= O"15" -- 八进制数数组,位矢数组长度是6 data3 <= X"AD0" -- 十六进制数数组,位矢数组长度是12 data4 <= B"101_010_101_010" -- 二进制数数组,位矢数组长度是12 data5 <= "101_010_101_010" --表达错误,缺B。 data6 <= "0AD0" --表达错误,缺X。 (1)字符 "ERROR" , "Both S and Q equal to 1" , "X" , "BB$CC
EDA技术讲义 51VHDL文字规贝 513标识符 标识符是最常用的操作符,可以是常数、变量、信号、端口、子程序 或参数的名字。ⅤHDL基本标识符的书写需遵循如下规则: ●有效的字符:包括26个大小写英文字母,数字包括0~9以及下划线“” ●任何标识符必须以英文字母开头。 ●必须是单一下划线“”,且其前后都必须有英文字母或数字 标识符中的英语字母不分大小写。 允许包含图形符号(如回车符、换行符等),也允许包含空格符 法的标识符 A fft, and 4, max2uc 非法的标识符: 21A. fft, and 4, max#2uc, a-b, return
EDA技术讲义 5.1 VHDL文字规则 5.1.3 标识符 标识符是最常用的操作符,可以是常数、变量、信号、端口、子程序 或参数的名字。VHDL基本标识符的书写需遵循如下规则: l有效的字符:包括26个大小写英文字母,数字包括0~9 以及下划线“_” 。 l任何标识符必须以英文字母开头。 l必须是单一下划线“_”,且其前后都必须有英文字母或数字。 l标识符中的英语字母不分大小写。 l允许包含图形符号(如回车符、换行符等),也允许包含空格符。 合法的标识符: A, fft,and_4,max2uc 非法的标识符: 21A, _fft,and_ _4, max#2uc,a-b,return
EDA技术讲义 51VHDL文字规贝 514下标名 下标名用于指示数组型变量或信号的某一元素。 格式:标识符(表达式 标识符必须是数组型的变量或信号的名字,表达式所代表的值必须是数 组下标范围中的一个值,这个值将对应数组中的一个元素。如果这个表达 式是一个可计算的值,则此操作数可很容易地进行综合。如果是不可计算 的,则只能在特定的情况下综合。 下例的两个下标名中一个是m,属不可计算,另一个是3,属可计算的 SIGNAL a, b: BIT VECTOR(OTO 3): SIGNAL M INTEGER RANGE 0TO 3 SIGNAL y, z: BIT; y<=a(m); 不可计算型下标表示 z<=b(3); -可计算型下标表示
EDA技术讲义 5.1 VHDL文字规则 5.1.4 下标名 下标名用于指示数组型变量或信号的某一元素。 格式:标识符(表达式) 标识符必须是数组型的变量或信号的名字,表达式所代表的值必须是数 组下标范围中的一个值,这个值将对应数组中的一个元素。如果这个表达 式是一个可计算的值,则此操作数可很容易地进行综合。如果是不可计算 的,则只能在特定的情况下综合。 下例的两个下标名中一个是m,属不可计算,另一个是3,属可计算的。 SIGNAL a,b : BIT_VECTOR (0 TO 3) ; SIGNAL m : INTEGER RANGE 0 TO 3 ; SIGNAL y,z : BIT ; y <= a(m) ; -- 不可计算型下标表示 z <= b(3) ; -- 可计算型下标表示
EDA技术讲义 52数据类型 标量型( Scalar Type) 复合类型( Composite Type) 存取类型( ccess Type) 文件类型( Files Type)
EDA技术讲义 5.2 数据类型 标量型(Scalar Type) 复合类型(Composite Type) 存取类型(Access Type) 文件类型(Files Type)
EDA技术讲义 521VHL的预定义数据类型 1.布尔( BOOLEAN)数据类型 2.位(BmT数据类型 如: constant a:bit:=1; variable q:bit:=0’; signal a, b: bit 3位矢量(BIⅴ ECTOR)数据类型 5: signal s: bit vector(15 downto O); constant g: bit vector (3 downto 0): 0110
EDA技术讲义 5.2.1 VHDL的预定义数据类型 1. 布尔(BOOLEAN)数据类型 2. 位(BIT)数据类型 如:constant a: bit :=‘1’; variable q: bit :=‘0’; signal a,b: bit; 3. 位矢量(BIT_VECTOR)数据类型 如:signal s: bit_vector (15 downto 0); constant q: bit_vector (3 downto 0) :=“0110”;
EDA技术讲义 521VHL的预定义数据类型 4.字符( CHARACTER)数据类型通常用单引号括起来,区分大小写。 5.字符串( STRING)数据类型 AA: VARIABLE string var: STRING(O TO 3 string var:="a bcd 6.实数(REAL)数据类型 8A: variable g: real range 0.0 to 255.0 1.0 constant a: real: =1.0 十进制浮点数 0.0 十进制浮点数 65971.3333 进制浮点数 659713333与上一行等价 8#43.6#e+4 八进制浮点数 43.6E-4 十进制浮点数
EDA技术讲义 5.2.1 VHDL的预定义数据类型 4. 字符(CHARACTER)数据类型 通常用单引号括起来,区分大小写。 6. 实数(REAL)数据类型 如:variable q: real range 0.0 to 255.0; constant a: real :=1.0; 1.0 十进制浮点数 0.0 十进制浮点数 65971.333333 十进制浮点数 65_971.333_3333 与上一行等价 8#43.6#e+4 八进制浮点数 43.6E-4 十进制浮点数 5. 字符串(STRING)数据类型 如:VARIABLEstring_var : STRING (0 TO 3 ) ; string_var := "a b c d" ;
EDA技术讲义 521VHDL的预定义数据类型 7.整数(Ⅰ NTEGER)数据类型 8: signal b: integer range-7 to 7 variable a integer: =5 8.时间TIME数据类型 TYPE time IS RANGE -2147483647TO 2147483647 units fs 飞秒,VHDL中的最小时间单位 ps=1000s 皮秒 ns=1000 ps 纳秒 us=1000 ns 微秒 ms=1000us; 毫秒 sec= 1000 ms 秒 60 sec i 分 hr=60 min i 时 end units
EDA技术讲义 8. 时间(TIME)数据类型 TYPE time IS RANGE -2147483647 TO 2147483647 units fs ; -- 飞秒,VHDL中的最小时间单位 ps = 1000 fs ; -- 皮秒 ns = 1000 ps ; -- 纳秒 us = 1000 ns ; -- 微秒 ms = 1000 us ; -- 毫秒 sec = 1000 ms ; -- 秒 min = 60 sec ; -- 分 hr = 60 min ; -- 时 end units ; 5.2.1 VHDL的预定义数据类型 7. 整数(INTEGER)数据类型 如:signal b: integer range –7 to 7; variable a : integer :=5;
EDA技术讲义 52数据类型 522IEEE预定义标准逻辑位与矢量 1.标准逻辑位 STD LOGIO数据类型 2.标准逻辑矢量( STD LOGIC VECTOR)数据类型
EDA技术讲义 5.2.2 IEEE预定义标准逻辑位与矢量 1. 标准逻辑位STD_LOGIC数据类型 2. 标准逻辑矢量(STD_LOGIC_VECTOR)数据类型 5.2 数据类型