实用EDA技术与VHDL教程 教学课件 ppt 作者 赵岩 林白 王志强 第3章 VHDL硬件描述语言

上传人:E**** 文档编号:89401051 上传时间:2019-05-24 格式:PPT 页数:375 大小:1.60MB
返回 下载 相关 举报
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第3章  VHDL硬件描述语言_第1页
第1页 / 共375页
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第3章  VHDL硬件描述语言_第2页
第2页 / 共375页
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第3章  VHDL硬件描述语言_第3页
第3页 / 共375页
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第3章  VHDL硬件描述语言_第4页
第4页 / 共375页
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第3章  VHDL硬件描述语言_第5页
第5页 / 共375页
点击查看更多>>
资源描述

《实用EDA技术与VHDL教程 教学课件 ppt 作者 赵岩 林白 王志强 第3章 VHDL硬件描述语言》由会员分享,可在线阅读,更多相关《实用EDA技术与VHDL教程 教学课件 ppt 作者 赵岩 林白 王志强 第3章 VHDL硬件描述语言(375页珍藏版)》请在金锄头文库上搜索。

1、第3章 VHDL硬件描述语言,和其他高级语言类似,VHDL也是由各种基本元素和基本结构,如常量、变量、运算符、语句、进程以及函数等组成的。,读者在学习硬件描述语言时,首先要掌握这些基本元素的用法,熟悉基本结构,同时总结硬件描述语言与其他高级程序语言的不同之处,为以后设计复杂数字系统打下坚实基础。,3.1 VHDL的基本元素,标识符、数据对象、数据类型及运算符和操作符是组成VHDL的基本元素,每一个VHDL程序都离不开这些基本元素,掌握它们对正确书写VHDL程序至关重要。,3.1.1 标识符,VHDL-87标准中有关标识符的语法规范被VHDL-93标准全部接受并加以扩展。 通常,称VHDL-87

2、标准中的标识符为短标识符,而将VHDL-93标准中的标识符称为扩展标识符。 下面对这两种标识符的命名规则分别进行介绍。,1短标识符,在VHDL中,VHDL-87标准中的短标识符应该遵循以下命名规则: (1)短标识符必须由英文字母、数字以及下画线组成;,(2)短标识符必须以英文字母开头; (3)短标识符不区分大小写; (4)短标识符最后一个字符不能是下画线;,(5)短标识符中不能含有两个连续的下画线; (6)VHDL中的保留字不能作为短标识符来使用。,2扩展标识符,在VHDL中,VHDL-93标准中的扩展标识符应该遵循以下命名规则: (1)扩展标识符用反斜杠来界定,例如,data_bus;,(2

3、)扩展标识符中可以包含图形符号和空格等,例如,data&_bus; (3)扩展标识符的两个反斜杠之间可以使用保留字,例如,ENTITY;,(4)扩展标识符的两个反斜杠之间可以用数字开头,例如,8_data_bus; (5)扩展标识符中允许多个下画线相连,例如,data_bus;,(6)同名的扩展标识符和短标识符是不同的,例如,data_bus和data_bus不同;,(7)扩展标识符中如果含有一个反斜杠,这时应该用两个相邻的反斜杠来代替,例如,如果扩展标识符的名称为databus,那么此时的扩展标识符应该表示为databus;,(8)与短标识符不同,扩展标识符是区分大小写的,例如,a和A是不同

4、的标识符。,3.1.2 数据对象,在VHDL中,通常把用来保存数据的单元称为对象,有的书中称之为客体。,VHDL的数据对象包括4类:常量(CONSTANT)、变量(VARIABLE)、信号(SIGNAL)及文件(FILE)。 其中,前3个是VHDL-87标准中通过的,文件(FILE)是VHDL-93标准中通过的。,1常量(CONSTANT),常量就是指在设计实体中不会发生变化的值,它可以在很多部分进行说明,并且可以具有任何的数据类型。,作为一种硬件描述语言的元素,常量在硬件电路设计中具有一定的物理意义,它通常用来代表硬件电路中的电源或者地线等。,一般来说,采用常量的最大好处是可以使设计人员编写

5、出更好的VHDL程序,并且可以使程序的修改变得更加容易。,这一点非常类似于其他高级编程语言中的常量。 通常,常量说明的格式如下所示: CONSTANT 常量名,常量名:数据类型 := 表达式;,其中,“CONSTANT”是表示常量的保留字,用来声明一个常量;“”中的部分表示可选项,即多个相同数据类型的常量可以在此一起声明;“数据类型”是对象所具有的类型说明;“表达式”用来对常量进行赋值,赋值符号为“:=”。,这里,所谓保留字就是指一些在VHDL中具有专门定义的特殊字符,参见3.1.1节。,一般可以根据自己的设计习惯来确定保留字的书写格式,本书中VHDL的保留字均采用大写形式。 同时有一点要说明

6、:除前面介绍的扩展标识符外,一般EDA工具对于VHDL的大小写是不加区分的。,常量被赋值以后的值将不再改变。 常量说明的范围十分广泛,它既可以在程序包、实体说明和结构体的说明部分进行说明,也可以在语句的说明部分进行说明。,在VHDL程序中不同部分说明的常量具有不同的作用范围:程序包中说明的常量可以在其所包含的任何实体和结构体中使用;实体说明中说明的常量可以在其对应的结构体中使用;结构体中说明的常量只能在本结构体中使用;进程语句中说明的常量只能在该进程语句中使用。,对于常量说明有一点要注意,常量所赋的值应该与定义的数据类型一致,否则将出现错误。,2变量(VARIABLE),变量主要用于对暂时数据

7、进行局部存储,它是一个局部量,只能在进程语句、过程语句和函数语句的说明部分中加以说明。,作为一种硬件描述语言的元素,变量 在硬件电路设计中具有一定的物理意义,变量主要用于局部数据的暂时存储,是一种载体。,通常,变量说明的格式如下所示: VARIABLE 变量名 ,变量名:数据类型 :=表达式;,其中,“VARIABLE”是表示变量的保留字,用来声明一个变量;“:=表达式”用来对变量进行初始赋值,它是一个可选项,赋值符号为“:=”。,与信号相同,对变量进行说明时可以对它赋予初始值,也可以不赋初始值。 如果在说明变量的时候没有赋予初始值,那么则认为它取默认值,即指定数据类型的最左值或者最小值。,例

8、如,在上面第四个变量的说明中,这里并没有赋予初始值,那么此时变量的初始值为0,因为数据类型STD_LOGIC的初始值为0。,3信号(SIGNAL),在硬件电路中,用导线将元件或模块连接构成电子系统。 在VHDL中,信号起着导线的作用,将实体与实体、进程与进程连接起来构成系统。 通常,将信号视为实际系统中的一条硬件连接线。,通常,信号说明的格式如下所示: SIGNAL 信号名 ,信号名:数据类型 :=表达式;,其中,“SIGNAL”是表示信号的保留字,用来声明一个信号;“:=表达式”用来对信号进行初始赋值,它是一个可选项,赋值符号为“:=”。,这里需要注意的是:在VHDL程序中,信号赋值的符号与

9、此不同,它应为“=”。,由于信号和变量具有一定的相似性,因此读者在某些场合下会将两者混淆。 实际上,信号和变量之间,不论在形式上还是在操作过程上,还是有很大差别的。,一般来说,信号和变量的区别主要体现在以下几个方面: (1)信号赋值是有一定延迟的,而变量赋值是没有延迟的;,(2)对于进程语句来说,进程只对信号敏感,而对变量不敏感; (3)信号在某一时刻除了具有当前值外,还具有一定的历史信息(保存在预定义属性中),而变量在某一时刻仅包含一个值;,(4)信号可以是多个进程的全局信号,而变量只在定义它的过程、函数和进程中可见;,(5)信号是硬件中连线的抽象描述,其功能是保存变化的数据值和连接子元件,

10、信号在元件的端口连接元件,变量在硬件中没有类似的对应关系,主要应用于高层次的建模中。,信号赋值和变量赋值的区别,是设计人员经常容易混淆的地方。 在VHDL中,信号赋值和变量赋值的格式如下所示: 信号 = 表达式; 变量 := 表达式;,可以看出,信号赋值和变量赋值分别使用不同的赋值符号:信号赋值使用符号“=”,而变量赋值则采用符号“:=”。 同时信号和变量之间允许相互赋值,但是要保证两者的数据类型一致。,4文件(FILE),文件是VHDL-93标准中新通过的,该标准将文件也作为一种对象。 在VHDL中,文件是一种传输大量数据的载体,它包含一些专门类型的数值。,这里需要注意的是:虽然文件也是一种

11、对象,但是设计人员不能通过复制来更新文件的内容。,通常,文件说明的格式如下所示: FILE文件名,文件名:文件类型IS 方向路径表达式;,其中,“FILE”是表示文件的保留字,用来声明一个文件;“文件类型”用来指明文件是什么形式的文件;“方向”是一个可选项,它用来表明文件是输入文件还是输出文件,分别用保留字“IN”和“OUT”来表示;“路径表达式”是用来指明文件的实际存储位置。,下面给出文件说明格式中的文件类型的定义格式: TYPE 文件类型名 IS FILE OF 数据类型;,其中,“TYPE”是定义类型的保留字,用来声明一个类型;“文件类型名”用来标识新定义的文件类型;“数据类型”用来表明

12、文件中数据所采用的类型。,下面是一个文件说明的例子: TYPE filetype IS FILE OF STD_LOGIC_VECTOR; FILE myfile : filetype IS IN“/export/home/user_name/vector.in“;,在上面的小例子中,第一条程序语句是 文件类型说明语句,用来说明filetype是一个 用STD_LOGIC_VECTOR类型的数据写成的 文件类型;第二条程序语句是文件说明语句,定义myfile是一个文件类型为filetype的输入 文件,“/export/home/user_name/vector.in”为 它的存储位置。,下面

13、介绍一些常用的关于文件对象操作的过程和函数。 (1)PROCEDURE readline (f : IN text;l : OUT line);,过程readline的功能是从指定的文本文件中读出某一行数据送到指定的行变量中,其中text表示文件类型为文本类型。,(2)PROCEDURE writeline (f : OUT text;l : IN line); 过程writeline的功能是将某一行变量中存放的一行数据写到文件变量所指定的文本文件中去。,(3)PROCEDURE read (l : INOUT line;value : OUT STD_LOGIC); 过程read的功能是从某

14、一行变量中存放的一行数据中取出第一个数据,然后放到指定的变量或信号中。,(4)PROCEDURE write (l : INOUT line;value : IN STD_LOGIC;justified : IN side := right; field : IN width :=0 );,过程write的功能是将某一个数据写到某一个指定行中的某一特定位置上去。 这里,变量justified表示把行的哪一边作为起始位置,有“right”和“left”两种选择;变量field表示数据写入的指定位置与起始位置之间的距离。,(5)FUNCTION endfile (f : text) RETURN

15、boolean; 函数endfile的功能是检查指定文本文件是否结束,如果检出文件结束标志,则返回“true”值;如果没有检出文件结束标志,则返回“false”值。,3.1.3 数据类型,VHDL是一种强类型语言,它具有丰富的数据类型。 正是由于这些数据类型的存在,才使得VHDL在描述硬件电路时具有较好的灵活性。 一般来说,VHDL的强类型性体现 在以下几个方面:,(1)一个对象只能具有一个数据类型; (2)对某对象进行操作的类型必须与该对象的数据类型相匹配;,(3)具有不同数据类型的对象之间不能直接进行赋值操作。例如,a和b是整数型变量,“a := b + 1;”这个表达式是非法的。因为1是

16、STD_LOGIC类型,而a和b是整数型,不同数据类型不能在同一表达式中进行运算操作。,正是由于上述原因,为了能够更好地应用VHDL进行硬件电路描述,必须要很好地理解各种数据类型的定义。,根据使用目的区分,有用于综合的数据类型和用于仿真的数据类型。 用于综合的数据类型有标量型(scalar type)和复合型(composite type)。,用于仿真的数据类型有存取型(access type)和文件型(file type)。 此外,还有用户自定义数据类型。 常用的数据类型如表3-1所示。,表3-1 常用数据类型,1整数,VHDL中的整数类型与数学中的整数相类似,它也定义了一个连续的整数 范围。 在VHDL-87标准中并没有定义整数应该为多长,长度一般取决于使用的开 发工具。,通常大多数EDA工具都用32位,因为这是VHDL的最小指定范围:从2 147 483 647到+2 147 483 647,即从(231-1)到+(231-1)。,由于这个整数最小

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

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

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