《vhdl词法基础》ppt课件

上传人:tia****nde 文档编号:67309618 上传时间:2019-01-07 格式:PPT 页数:55 大小:308.01KB
返回 下载 相关 举报
《vhdl词法基础》ppt课件_第1页
第1页 / 共55页
《vhdl词法基础》ppt课件_第2页
第2页 / 共55页
《vhdl词法基础》ppt课件_第3页
第3页 / 共55页
《vhdl词法基础》ppt课件_第4页
第4页 / 共55页
《vhdl词法基础》ppt课件_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《《vhdl词法基础》ppt课件》由会员分享,可在线阅读,更多相关《《vhdl词法基础》ppt课件(55页珍藏版)》请在金锄头文库上搜索。

1、第2章 VHDL词法基础,2.1 标识符 2.2 数据对象 2.3 数据类型 2.4 类型转换 2.5 词法单元 2.6 运算符与操作符 2.7 属性,标识符规则是VHDL语言中符号书写的一般规则。不仅对电子系统设计工程师是一个约束,同时也为各种各样的EDA工具提供了标准的书写规范,使之在综合仿真过程中不生产生歧义,易于仿真。 VHDL语言有两个标准版:VHDL87版和VHDL93版。VHDL87版的标识符语法规则经过扩展后,形成了VHDL93版的标识符语法规则。前一部分称为短标识符,扩展部分称为扩展标识符。VHDL93版含有短标识符和扩展标识符两部分。,2.1 标识符,短标识符规则: 短标识

2、符由字母、数字以及下划线字符组成,且具有以下特征要求: 第一个字符必须是字母; 最后一个字符不能是下划线; 不允许连续两个下划线; 在标识符中大、小写字母是等效的。 VHDL中的注释文字一律为2个连续的连接线“-”,可以出现在任一语句后面,也可以出现在独立行; VHDL的保留字(关键字)不能用于标识符;,2.1.1 短标识符,如下标识符是非法的: _ tx_clk 8B10B large#number link_ _bar select rx_clk_,例如:如下标识符是合法的: tx_clk Three_state_Enable sel7D HIT_1124,-标识符必须起始于字母,-只能是

3、字母、数字、下划线,-不能有连续两个下划线,-关键字(保留字)不能用于标识符,-最后字符不能是下划线,扩展标识符规则: 扩展标识符是VHDL93版增加的标识符书写规则: (1) 扩展标识符用反斜杠来定界。例如:multi_screens, eda_centrol等都是合法的扩展标识符。 (2) 允许包含图形符号、空格符。例如:mode A, $100, p%name等。 (3) 反斜杠之间的字符可以用保留字。例如: buffer, entity, end等。 (4) 扩展标识符的界定符两个斜杠之间可以用数字打头。如: 100$, 2chip, 4screens等。 (5) 扩展标识符中允许多个

4、下划线相连。例如: Four_screens, TWO_Computer_sharptor等。 (6) 扩展标识符区分大小写。例如: EDA 与eda不同。 (7) 扩展标识符与短标识符不同。例如:COMPUTER 与Computer不同。,2.1.2 扩展标识符,2.2 数据对象,在VHDL中,凡是可以赋予一个值的客体称为数据对象。常用的数据对象为常量、变量 、信号和文件,其中文件类型是VHDL93标准中新通过的。 对象说明的一般书写格式为: 对象类别 标识符表:子类型标识: 初值; 对象说明举例: CONSTANT T1,T2:time :30ns,-常量说明 VARIABLE SUM:r

5、ead; -变量说明 SIGNAL CLOCK:bit; -信号说明 FILE input:Text IS IN “STD_INPUT” -文件说明,对象的赋值规则:,信号和变量可以连续的赋于不同的值。 常量只在它被说明时赋值,在整个器件工作期间值不变化。试图对常量多次赋值是错误的。 文件可以用参数向子程序传递数据,通过子程序对文件进行读和写操作。文件不可以通过赋值来更新文件的内容,文件参数没有模式。,可用函数调用的方法给对象赋初值。 例如: CONSTANT Busnumber:Integer :My_function(True,6); 如果在同一个对象说明语句中,对多个同一类型的对象指定初

6、始值,则多个对象同时取得了这一指定值。 信号和变量的默认值。当信号和变量没有指定初始值或没有给信号变量赋值时,即信号和变量的值在对象说明语句中默认时,信号变量的取值称为默认值。一般地,若变量为字符型变量则取最大值;若变量、信号为数值型变量,则取初始值,默认值为0,2.2.1 常量, 常量(CONSTANT) 常量是指在设计描述中不会变化的值。在VHDL描述中,一般用常量名代替数值。,常量说明语句的一般格式为: CONSTANT 常量名,常量名:数据类型 := 取值;,例:8位寄存器宽度指定: CONSTANT width:integer:8; 设计实体的电源供电电压指定: CONSTANT v

7、cc:real:5.0; 某一模块信号输入/输出的延迟时间: CONSTANT delay:time:100ns;,常量所赋值和定义的数据类型应一致。 常量一旦赋值就不能再改变。若要改变常量值,必须要改变设计,改变实体中的常量说明,然后重新编译。 常量必须在程序包、实体、结构体或进程的说明区域中对常量的标识符、类型、常量值进行指定。定义在程序包中的常量由所在的实体或结构体调用。定义在实体内的常量仅在实体内使用,定义在进程内的常量仅在进程内使用。, 常量的使用规则, 2.2.2 变量(VARIABLE) 变量是暂存数据的量。,变量说明语句的格式是: VARIABLE 变量名,变量名:数据类型 :

8、=初始值;,例如: VARIABLE count: INTEGER RANGE 0 TO 99 : =0 VARIABLE result: std_logic:0;变量赋初值 VARIABLE x,y,z : integer;,赋值语句中的表达式必须与目标变量具有相同的数据类型。,变量赋值语句格式为: 目标变量名 := 表达式;,变量是一个局部量 ,它只用于进程和子程序。变量必须在进程或子程序的说明区域中加以说明。 变量赋值是直接的、非预设的 ,它在某一时刻仅包含一个值。变量的赋值立即生效,不存在延时行为。 变量常用在实现某种运算的赋值语句中。变量赋值和初始化赋值符号用“:”表示。 变量不能用

9、于硬件连线和存储元件。, 变量的使用规则,在仿真模型中,变量用于高层次建模。 在系统综合时,变量用于计算,作为索引载体和数据暂存。 在进程中,变量的使用范围在进程之内。若将变量用于进程之外,必须将该值赋给一个相同类型的信号,即进程之间传递数据靠的是信号。, 变量的使用规则, 2.2.3 信号(SIGNAL) 信号是电子电路内部硬件实体相互连接的抽象表示。信号能够代表连线,也可内连元件,端口也是一种信号。,信号说明语句的格式为: SIGNAL 信号名,信号名 :数据类型 :=初始值;,例如: SIGNAL count: BIT_VECTOR(3 downto 0); -计数器宽度 SIGNAL

10、sys_clk:BIT :0; -系统时钟信号,信号赋值语句格式为: 目标信号名 = 表达式;,赋值语句中的表达式必须与目标信号具有相同的数据类型。 信号通常在构造体、包集合和实体中说明;信号不能在进程中 说明(但可以在进程中使用)。 “:”表示对信号直接赋值,表示信号初始值不产生延时。 “”表示代入赋值,代入赋值法允许产生延时。例如:T1 T2 after 20ns; 信号包括I/O引脚信号以及IC内部缓冲信号,有硬件电路与之对应,故信号之间的传递有实际的附加延时。 硬件中的信号总是同时工作的,即信号同时在各个模块中流动,这就是硬件电路的并发性 。HDL体现了实际电路中信号“同时”流动的这种

11、基本特性。,信号和变量的主要区别:,1. 变量 是一个局部量,只能用于进程或子程序中; 信号 是一个全局量,它可以用来进行进程之间的通信。,2. 变量赋值 立即生效,不存在延时行为; 信号赋值 具有非立即性,信号之间的传递具有延时性。,4. 信号赋值 可以出现在进程中,也可以直接出现在结构体中,但它们的运行含义不同:前者属顺序信号赋值,此时的赋值操作要视进程是否已被启动;后者属并行信号赋值,其赋值操作是各自独立并行发生的。,3. 变量 用作进程中暂存数据的单元; 信号 用作电路中的信号连线。,5. 在进程中变量和信号的赋值形式与操作过程不同: 在变量的赋值语句中,该语句一旦被执行,其值立即被赋

12、予变量。在执行下一条语句时,该变量的值即为上一句新赋的值。 在信号的赋值语句中,该语句即使被执行,其值不会使信号立即发生代入,在下一条语句执行时,仍使用原来的信号值。直到进程结束之后,所有信号赋值的实际代入才顺序进行处理。因此,实际代入过程和赋值语句的执行是分开进行的。 如例a所示。,例a 信号和变量值代入的区别举例 PROCESS (a,b,c,d) BEGIN d=a; x=b+d; d=c; y=b+d; END PROCESS; 结果: x=b+c; y=b+c; PROCESS (a,b,c) VARIABLE d:std_logic_vector(3 downto 0); BEGI

13、N d:=a; x=b+d; d:=c; y=b+d; END PROCESS; 结果: x=b+a; y=b+c;,当进程运行时,信号赋值将自上而下顺序执行,但第一项赋值操作并不会发生,这是因为信号赋值是在进程结束时才起作用。因为在进程结束更新时,d的最后一个赋值为c ,因此执行结果为该式。,2.2.4 文件,文件(files)是传输大量数据的客体,包含一些专门数据类型的数值。在仿真测试时,测试的输入激励数据和仿真结果的输出都要用文件来进行。 在IEEE1076标准中,TEXTIO程序包中定义了文件I/O传输的方法。它们是对过程的定义,调用这些过程就能完成数据的传递。 procedure R

14、eadline (F:in Text;L:out Line); procedure Writeline(F:out Text;L:in Line); Procedure Read(L:inout Line;Value:out std_logic; Good:out boolean); procedure Read(L:inout Line;Value:out std_logic); procedure Read(L:inout Line;Value:out std_logic_vector; Good:out boolean);,2. 3 数据类型,VHDL是一种强类型的语言。 对象的数据类型

15、 定义了该对象可以具有的值和对该对象可以进行的运算的限制。在VHDL中,这种限制是被强制执行的。 VHDL提供了多种标准的数据类型。在VHDL描述中,每个信号、常量、变量都要指定它的数据类型,以确定它能保持那一类数据。 VHDL对数据类型的定义相当严格,在进行赋值或变换过程中都要进行类型检查。VHDL不允许不同类型的数值相互赋值或使用类型不允许的运算符进行运算。这种特性可以帮助设计者在设计前期发现错误。,1. 标准数据类型 VHDL提供的10种标准数据类型。,(1)Integer(整数)。 取值范围为 (2311)(2311)。 在电子系统中,整数可以用进制来表示。 整数不能看作矢量,不能单独

16、对某一位操作。 整数不能用于逻辑运算,只能用于算术运算。 对象的数据类型定义为整数时,范围应有约束。 例如: variable a: integer range 255 to 255; 在电子系统设计过程中,整数可以用来抽象地表达总线的状态。,(2)Real(实数)。 取值范围为 1.0E+38 +1.0E+38。和整数一样,实数能被约束。由于实数运算需要大量的资源,因此综合工具常常并不支持实数类型。 有些数可用实数表示,也可用整数表示。例如99.0是实数,99是整数,两数具有相同的值;但两者具有不同的类型。 在有关文献中,实数类型也称为浮点类型(FLOATING TYPE)。但大多数EDA工具不支持浮点运算。,(3)Bit(位)。 只有两种取值,即 0 和 1 ,可用于描述信号的取值。 位通常用单引号来括住其位的值。

展开阅读全文
相关资源
相关搜索

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

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