eda第4章vhdl基础文字规则与操作符(4.3-4.4)

上传人:tian****1990 文档编号:72535931 上传时间:2019-01-23 格式:PPT 页数:82 大小:986.50KB
返回 下载 相关 举报
eda第4章vhdl基础文字规则与操作符(4.3-4.4)_第1页
第1页 / 共82页
eda第4章vhdl基础文字规则与操作符(4.3-4.4)_第2页
第2页 / 共82页
eda第4章vhdl基础文字规则与操作符(4.3-4.4)_第3页
第3页 / 共82页
eda第4章vhdl基础文字规则与操作符(4.3-4.4)_第4页
第4页 / 共82页
eda第4章vhdl基础文字规则与操作符(4.3-4.4)_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《eda第4章vhdl基础文字规则与操作符(4.3-4.4)》由会员分享,可在线阅读,更多相关《eda第4章vhdl基础文字规则与操作符(4.3-4.4)(82页珍藏版)》请在金锄头文库上搜索。

1、4.3 VHDL的数据及文字规则,4.3.1 VHDL文字规则 VHDL文字(Literal)主要包括数值和标识符。数值型文字主要有数字型、字符串型和位串型等。,1、数字型文字 数字型文字的值有多种表达方式,现列举如下: (1) 整数文字:都是十进制的整数,如: 5,678,0,156E2(=15600), 45_234_287(=45234287) (2) 实数文字:实数文字也都是十进制的数,但必须带有小数点,如: 188.993, 88_670_551.453_909(=88670551.453909), 1.0,44.99E-2(=0.4499),1.335,0.0,(3) 以数制基数表

2、示的文字:用这种方式表示的数由五个部分组成。第一部分,用十进制数标明数制进位的基数;第二部分,数制隔离符号“#”;第三部分,表达的文字;第四部分,指数隔离符号“#”;第五部分,用十进制表示的指数部分,这一部分的数如果是0可以省去不写。现举例如下: 10#170# -(十进制数表示,等于170) 2#1111_1110# -(二进制数表示,等于254) 16#FE# -(十六进制数表示,等于254) 16#F.01#E+2 -(十六进制数表示,等于3841.00) (4) 物理量文字(VHDL综合器不接受此类文字)。如: 60s(60秒),100m(100米),k(千欧姆),177A(177安培

3、),2. 字符串型文字 字符是用单引号引起来的ASCII字符,可以是数值,也可以是符号或字母,如:R,A,*,Z。而字符串则是一维的字符数组,须放在双引号中。VHDL中有两种类型的字符串:文字字符串和数位字符串。 (1) 文字字符串:文字字符串是用双引号引起来的一串文字,如: “ERROR”,“BOTH S AND Q EQUA TO L”,“X”,“BB$CC”,(2) 数位字符串:数位字符串也称位矢量,是预定义的数据类型BIT的一维数组,它们所代表的是二进制、八进制或十六进制的数组,其位矢量的长度即为等值的二进制数的位数。 数位字符串的表示首先要有计算基数,然后将该基数表示的值放在双引号中

4、,基数符以“B”、“O”和“X”表示,并放在字符串的前面。它们的含义分别是: B:二进制基数符号,表示二进制数位0或1,在字符串中每一个位表示一个BIT。 O:八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个3位(BIT)的二进制数。,X:十六进制基数符号(0F),字符串中的每一位代表一个十六进制数,即代表一个4位的二进制数。 例如: B“1_1101_1110” -二进制数数组,位矢数组长度是9 O“15” - 八进制数数组,位矢数组长度是6 X“AD0” -十六进制数数组,位矢数组长度是12,3.标识符,用来定义常数、变量、信号、端口、子程序或参数的名字。,规则: 有效的字

5、符:包括26个大小写英文字母,数字包括09 以及下划线“_”。 任何标识符必须以英文字母开头。 必须是单一下划线“_”,且其前后都必须有英文字母或数字。 标识符中的英语字母不分大小写。 VHDL的保留字不能用于作为标识符使用。,标识符举例,例: _Decoder F 2fft ,sig_#n, data_ _bus, return FFT, sig_n, state0, return1 VHDL93版支持扩展标识符。,4.下标名,指示数组型变量或信号的某一元素。表达形式: 语句格式:标识符(表达式) 如: Signal a, b: bit_vector(0 to 3); Signal m: i

6、nteger range 0 to 3; Signal x, y :bit y = a(m) ; - 不可计算型下标表示 z = b(3) ; - 可计算型下标表示,对应数组中某一段元素,是多个下标名的组合。表达形式: 标识符(表达式 方向 表达式) 方向- To 由低到高 DOWNTO 由高到低 如:signal a, z: bit_vector(0 to 7);- 8位位矢量 z(0 to 3)=a(4 to 7); -以段的方式进行赋值 z(4 to 7)=a(0 to 3); -以段的方式进行赋值,5.段名,4.3.2 VHDL数据对象 在VHDL中,数据对象(Data Objects

7、)类似于一种容器,它接受不同数据类型的赋值。数据对象有四种,即常量(CONSTANT)、变量(VARIABLE)、信号(SIGNAL)和文件(FILE)。,1常量(CONSTANT) 常量的定义和设置主要是为了使设计实体中的常数更容易阅读和修改。例如,将位矢的宽度定义为一个常量,只要修改这个常量就能很容易地改变宽度,从而改变硬件结构。在程序中,常量是一个恒定不变的值,一旦作了数据类型的赋值定义后,在程序中不能再改变,因而具有全局意义。常量的定义形式如下: CONSTANT 常量名:数据类型:=表达式; 例如: CONSTANT FBUSBIT_VECTOR:=“010110”; CONSTAN

8、T VCC REAL:=5.0; CONSTANT DELAYTIME:=25 ns;,VHDL要求所定义的常量数据类型必须与表达式的数据类型一致。常量的数据类型可以是标量类型或复合类型,但不能是文件类型(File)或存取类型(Access)。 常量定义语句所允许的设计单元有实体、结构体、程序包、块、进程和子程序。在程序包中定义的常量可以暂不设具体数值,它可以在程序包体中设定。 常量的可视性,即常量的使用范围取决于它被定义的位置。在程序包中定义的常量具有最大全局化特征,可以用在调用此程序包的所有设计实体中;定义在设计实体中的常量,其有效范围为这个实体定义的所有的结构体;定义在设计实体的某一结构

9、体中的常量,则只能用于此结构体;定义在结构体的某一单元的常量,如一个进程中,则这个常量只能用在这一进程中。,2变量(VARIABLE) 在VHDL语法规则中,变量是一个局部量,只能在进程和子程序中使用。变量不能将信息带出对它作出定义的当前设计单元。变量的赋值是一种理想化的数据传输,是立即发生,不存在任何延时的行为。VHDL语言规则不支持变量附加延时语句。变量常用在实现某种算法的赋值语句中。 定义变量的语法格式如下: VARIABLE 变量名:数据类型:=初始值; 例如: VARIABLE A:INTEGER; -定义A为整数型变量 VARIABLE B,C:INTEGER:=2;-定义B和C为

10、整型变量,初始值为2 VARIABLE D:BIT_VECTOR(0 TO 5);-定义b为数组型变量,变量数值的改变是通过变量赋值来实现的,其赋值语句的语法格式如下: 目标变量名:=表达式; 如: VARIABLE A,B:BIT_VECTOR(0 TO 7); VARIABLE X,Y: REAL; X:=1.2; Y:=100.1+X; A:=“10101011”; A(7):=0;,变量的使用规则如下: (1)变量赋值和初始化赋值都用“:=”表示。 (2)变量赋的初值不是预设的,某一时刻只能有一个值。 (3)变量不能用于在进程间传递数据。 (4)变量不能用于硬件连线和存储元件。 (5)

11、仿真时,变量用于建模;综合时,变量充当数据的暂存。,3. 信号(SIGNAL) 信号是描述硬件系统的基本数据对象,它类似于连接线。信号可以作为设计实体中并行语句模块间的信息交流通道。在VHDL中,信号及其相关的信号赋值语句、决断函数、延时语句等很好地描述了硬件系统的许多基本特征。如硬件系统运行的并行性;信号传输过程中的惯性延时特性;多驱动源的总线行为等。,信号作为一种数值容器,不但可以容纳当前值,也可以保持历史值。这一属性与触发器的记忆功能有很好的对应关系。信号的定义格式如下: SIGNAL 信号名: 数据类型:=初始值; 信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。与

12、变量相比,信号的硬件特征更为明显,它具有全局性特性。,以下是信号的定义示例: SIGNAL S1:STD_LOGIG:=0; -定义了一个标准位的单值信号S1,初始值为低电平 SIGNAL S2,S3:BIT; -定义了两个为BIT的信号S2和S3 SIGNAL S4: STD_LOGIC_VECTOR(15 DOWNTO 0); -定义了一个标准位矢的位矢量(数组、总线)信号,共有16个信号元素,信号赋值语法: 目标信号名=表达式; 如:signal a:std_logic_vector(15 downto 0); a=X”FBFC”;,例 SIGNAL a,b,c,:INTEGER; PR

13、OCESS(a,b,c) BEGIN =a*b; =-; =b; END PROCESS;,A,B,C被列入敏感表,不发生赋值,被赋值b。,在进程中允许同一信号有多个赋值源,其结果只有最后的赋值 语句被启动,并进行赋值操作。,信号和变量之间的区别,(1)信号的代入过程与代入语句分开处理,执行代入语句不会使信号立即代入;而变量的赋值语句一旦执行,其值立即被赋予变量。 (2)在进程中,信号可以列入敏感表,而变量不能列入敏感表。 (3)仿真过程中,变量使用很少的存储器;而为了调度安排和处理信号属性,信号需要存储更多的信息。 (4)信号可能需要使用WAIT语句来为执行相同迭代做信号赋值的同步处理;而变

14、量不存在这个问题。,常量、信号、变量的使用比较 (1) 从硬件电路系统来看,常量相当于电路中的恒定电平,如GND或VCC接口,而变量和信号则相当于组合电路系统中门与门间的连接及其连线上的信号值。 (2) 从行为仿真和VHDL语句功能上看,信号和变量的区别主要表现在接受和保持信息的方式、信息保持与传递的区域大小上。 (3) 从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况下,信号和变量并没有什么区别。 (4) 虽然VHDL仿真器允许变量和信号设置初始值,但在实际应用中,VHDL综合器并不会把这些信息综合进去。,4.文件,IEEE STD1076-1987中定义了TEX

15、TIO程序包,它定义了几种文件 IO传输的方式。例如: (1)procedure Readline(F:inText;L:out Line); 读入测试矢量文件的一行 (2)procedure Writeline(F:outText;L:inLine); 向测试文件中写一行测试矢量 这些文件IO传输方式实际上是对一些过程的定义,调用这些过程就能完成数据的传递。,文件是传输大量数据的对象,可以包含一些专门数据类型的数值。在系统仿真测试时,为方便控制及观察,测试的输入激励数据和仿真结果的输出都要用文件来进行。,4.3.3 VHDL数据类型 VHDL是一种强类型语言,要求设计实体中的每一个常数、信号

16、、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且只有数据类型相同的量才能互相传递和作用。VHDL作为强类型语言的好处是能使VHDL编译或综合工具很容易地找出设计中的各种常见错误。VHDL中的数据类型可以分成四大类。,标量型(SCALAR TYPE):属单元素的最基本的数据类型,通常用于描述一个单值数据对象,它包括实数类型、整数类型、枚举类型和时间类型。 复合类型(COMPOSITE TYPE):可以由细小的数据类型复合而成,如可由标量复合而成。复合类型主要有数组型(ARRAY)和记录型(RECORD)。 存取类型(ACCESS TYPE):为给定的数据类型的数据对象提供存取方式。 文件类型(FILES TYPE):用于提供多值存取类型。 上述4大数据类型根据产生的来源又可分成预定义数据类型和用户自定义数据类型两大类别。,4.3.3.1VHDL的预定

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号