EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱娜 张金保 王志强 李建利 第4章VHDL程序结构

上传人:E**** 文档编号:89454291 上传时间:2019-05-25 格式:PPTX 页数:59 大小:235.03KB
返回 下载 相关 举报
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第4章VHDL程序结构_第1页
第1页 / 共59页
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第4章VHDL程序结构_第2页
第2页 / 共59页
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第4章VHDL程序结构_第3页
第3页 / 共59页
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第4章VHDL程序结构_第4页
第4页 / 共59页
EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱娜 张金保 王志强 李建利 第4章VHDL程序结构_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱娜 张金保 王志强 李建利 第4章VHDL程序结构》由会员分享,可在线阅读,更多相关《EDA技术实用教程 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱娜 张金保 王志强 李建利 第4章VHDL程序结构(59页珍藏版)》请在金锄头文库上搜索。

1、第4章 VHDL程序结构,4.1 VHDL基本建模结构,数字系统的建模是指使用硬件描述语言对数字电路和系统进行性能描述和模拟的过程。对硬件系统进行描述,可以采用三种不同风格的描述方式,即行为描述方式、数据流描述方式和结构化描述方式。这三种描述方式从不同的角度对硬件系统进行行为和功能的描述。,4.1.1 行为描述,行为描述方式是对系统数学模型的描述,其抽象程度比数据流描述方式和结构化描述方式更高。在行为描述方式的程序中大量采用算术运算、关系运算、惯性延时、传输延时等难于进行逻辑综合和不能进行逻辑综合的VHDL语句 采用行为描述方式的VHDL语言程序主要用于系统数学模型的仿真或者系统工作原理的仿真

2、。 行为描述方式的优点在于只需要描述清楚输入与输出的行为,而不需要花费更多的精力关注设计功能的门级实现。VHDL语言的行为描述能力使数字系统的自顶向下的设计方式成为可能。,4.1.2 数据流描述,数据流描述方式,也称RTL描述方式。RTL是寄存器转换层次的简称。RTL级描述是以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。这类寄存器或者显式地通过元件具体装配,或者通过推论作隐含描述。VHDL的RTL描述方式类似于布尔方程,可以描述时序电路,也可以描述组合电路。它既含有逻辑单元的结构信息,又隐含某种行为,数据流描述主要是指非结构化的并行语句的描述 数据流描述是对从信号到信号的数

3、据流的路径形式进行描述,因此很容易进行逻辑综合。由于要对信号的流动路径进行描述,因此要求设计人员对设计实体的功能实现要有一定的了解,有时候还要求对内部的电路有清楚的认识,具有一定的难度,4.1.3 结构描述,结构描述建模步骤如下: 元件说明:描述局部接口。 元件例化:相对于其他元件放置元件。 元件配置:制定元件所用的设计实体。即对于一个给定实体,如果有多个可用的结构体,则由配置决定模拟中所用的一个结构。,4.2 VHDL实体,VHDL程序通常包括实体(ENTITY)、结构体(ARCHITECTURE)、配置(CONFIGURATION)、程序包(PACKAGE)和库(LIBRARY)五个部分。

4、 实体和结构体是每个程序必备的,是VHDL程序最基本的组成部分,4.2.1 实体语句,在VHDL中,一个实体说明的具体格式如下所示: ENTITY IS 类属参数说明; 端口说明; 实体说明部分; END ENTITY ;,4.2.2 参数传递说明语句,参数传递说明语句(GENERIC语句)是一种常数参数的端口界面,常以一种说明的形式放在实体或块结构体前的说明部分。参数传递说明语句为所说明的环境提供了一种静态信息通道。如用来器件延迟时间、定义端口宽度等参数。在VHDL中,类属参数说明的格式如下所示: GENERIC (CONSTANT参数名:数据类型 :=静态表达式;);,4.2.3 参数传递

5、映射语句,端口映射语句是本结构体对外部元件调用和连接过程中描述元件间端口的衔接方式,而参数传递映射语句具有相似的功能,它描述相应元件类属参数间的衔接和传送方式。参数传递映射语句可用于设计从外部端口改变元件内部参数或结构规模的元件,或称类属元件,这些元件在例化中特别方便,在改变电路结构或元件硬件升级方面显得尤为便捷,其语句格式是: GENERIC MAP (类属表),4.2.4 端口说明语句,实体说明中的每一个输入输出信号称为端口,端口对应于电路图上的一个引脚。端口说明描述的是设计实体与外部的接口,具体来说就是对端口名、数据类型和模式的描述。端口名是端口的标识符,数据类型说明经过该端口信号的数据

6、类型,模式用来说明端口信号的流动方向。在VHDL中,端口说明的格式如下所示: PORT (SIGNAL端口名:端口模式 数据类型:=静态表达式;);,端口模式主要有5种:输入模式(IN)、输出模式(OUT)、双向模式(INOUT)、缓冲模式(BUFFER)和链接模式(LINKAGE)。端口模式表示数据流的方向。 (1)输入模式:说明这种模式的保留字是“IN”。它的驱动源是由外部向实体内部进行的,信号自端口进入实体,而实体内部的信号不能从该端口输出。 (2)输出模式:说明这种模式的保留字是“OUT”。它的驱动源是由实体内部向外部进行的,信号从实体内部经该端口输出,而不能通过该端口向实体内部输入信

7、号。,(3)双向模式:说明这种模式的保留字是“INOUT”。它的驱动源既可由外部向实体内部进行的,也可以由实体内部向外部进行,实体内部的信号和外部向实体内部输入的信号都可以经过该端口。INOUT模式常常在具有双向传输数据功能的设计实体说明中使用。 (4)缓冲模式:说明这种模式的保留字是“BUFFER”。设计人员在设计时,有时候需要使用一个端口同时作为实体内部的驱动即用于内部反馈,这时可以将端口定义为缓冲模式。它与输出模式的区别就在于输出模式不能用于实体内部的反馈。但要注意,缓冲模式的端口只可以连接内部信号或另一个实体的具有缓冲模式的端口,而且缓冲模式的端口只能有一个驱动。 (5)链接模式:说明

8、这种模式的保留字是“LINKAGE”。它用来说明端口无指定方向,可以与任意方向的信号相连。,4.2.5 实体说明部分,在实体说明的书写格式中,实体说明部分通常放在端口说明的下面,它的作用是用来说明设计实体接口中的公共信息。例如,实体说明部分可以用来定义结构体需要用到的新的数据类型以及信号、常量等,如下所示: ENTITY ram IS PORT (addr : IN bit_vector(15 DOWNTO 0); sel : IN bit; data : OUT bit_vector(31 DOWNTO 0); TYPE instruction IS ARRAY (1 TO 5) OF na

9、tural; TYPE program IS ARRAY (natural RANGE ) OF instruction; CONSTANT delay : time := 10 ns; END ram;,4.3 VHDL结构体,在设计中,设计人员常常将一个设计实体比喻成一个盒子,实体说明可以被看作是一个 “黑盒子”,通过它我们只能了解其输入和输出,无法知道盒子的内容,而结构体就是描述盒子内部的详细内容。在VHDL中,一个结构体的具体格式如下所示: ARCHITECTURE OF IS 结构体说明部分; BEGIN ; END ARCHITECTURE ;,4.3.1 结构体名,结构体名可由设

10、计人员自由进行命名。但是在实际的应用中,结构体的命名一般遵循一定的惯例。在VHDL程序中,根据设计人员采用描述方式的不同,通常采用behave、rtl和structure来为结构体命名。,4.3.2 结构体说明部分,在结构体的具体书写格式中,位于保留字“ARCHITECTURE ”和“BEGIN”之间的部分称为结构体说明部分。在VHDL程序中,结构体说明部分主要用来对结构体内部使用的信号、常数、数据类型和函数等进行定义。,4.3.3 并行处理语句,在结构体的具体书写格式中,位于保留字“BEGIN”和“END”之间的部分是结构体的并行处理语句部分。在VHDL程序中,结构体中的并行处理语句的功能是

11、用来描述结构体的行为和连接关系。在结构体中,并行处理语句包括五种:块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句。,4.4 子程序,子程序是指在主程序调用它以后能够将处理结果返回主程序的程序模块。它的含义与其他高级编程语言中的子程序相同,同样具有高级编程语言中的子程序所具有的优点: (1)采用子程序可以极大地加强VHDL程序的功能和灵活性,它们可以被反复调用,使用起来十分方便; (2)采用子程序可以使VHDL程序模块清晰易懂,避免大量重复程序的书写。,在VHDL中,子程序有两种类型:过程(PROCEDURE)和函数(FUNCTION),它们广泛应用于数值计算、数据类型转换、运算符

12、重载或设计元件的高层设计中。与其他高级编程语言相比,过程与它们中的子程序相当;而函数则与它们中的函数相当。,VHDL中的过程与函数的主要区别体现在以下几个方面: (1)过程可以具有多个返回值;而函数只能有一个返回值; (2)过程通常用来定义一个算法;而函数往往用来产生一个特定的值; (3)过程中的参数可以具有三种端口模式:IN、OUT、INOUT;而函数中的参数只具有一种端口模式:IN。 (4)过程中允许使用WAIT语句和顺序赋值语句;而函数则不能使用这两种语句。,4.4.1 过程,过程通常包括过程说明部分和过程定义部分。其中:过程说明部分主要定义了其他设计调用过程时的接口;过程定义部分则描述

13、该过程具体功能的实现。,在VHDL中,过程说明部分的书写结构如下所示: PROCEDURE (对象类型 参数名,参数名 :端口模式 数据类型; 对象类型 参数名,参数名 :端口模式 数据类型; );,在VHDL中,过程定义部分的书写结构如下所示: PROCEDURE (对象类型 参数名,参数名 :端口模式 数据类型; 对象类型 参数名,参数名 :端口模式 数据类型; ) IS 过程说明部分; BEGIN ; END PROCEDURE ;,(1)过程在不同位置的定义 在VHDL中,过程可以在VHDL程序中的三个位置进行定义,它们分别是程序包、结构体和进程语句。在某些情况下,过程也可以在实体说明

14、部分进行定义,但是这种方式并不常见。 在实际的设计过程中,设计人员常常将过程定义在程序包中,这样可以在其他的设计中方便地调用这些过程。通常,过程在程序包中的定义规则为:过程说明部分书写在程序包的包说明部分,过程定义部分书写在程序包包体部分。,(2)过程的调用 在VHDL中,过程调用与其他高级编程语言中的子程序调用十分类似,即过程调用就是指过程作为子程序被主程序调用。过程被调用时主程序先要对过程进行初始化,即需要将初始值传递给过程的输入参数,从而启动过程语句;过程启动后,将会按照语句的顺序自上而下执行过程中的各条语句。过程执行完毕后,输出值将会传递给调用主程序所定义的变量或者信号中。 通常,过程

15、调用语句有两种方式:并行过程调用语句和顺序过程调用语句。其中:并行过程调用语句主要用于结构体的并行处理语句部分,它位于其他子程序和进程语句的外部;而顺序过程调用语句则位于进程语句或者另一个子程序的内部。,(3)过程的重载 两个或两个以上有相同的过程名和互不相同的参数数量及数据类型的过程称为重载过程(OVERLOADED PROCEDURE),或称复用过程。类似于高级语言中的重载函数,重载过程也是靠参量类型来辨别究竟调用哪一个过程。,4.4.2 函数,在VHDL的子程序中,函数的形式和使用与高级编程语言中的函数十分类似,因此可以借鉴高级编程语言中的函数特点来理解VHDL中的函数。 与过程一样,函

16、数也包括函数说明和函数定义两个部分:函数说明部分定义了主程序调用函数时的接口;函数定义部分则描述了该函数具体逻辑功能的实现。,在VHDL中,函数说明部分的书写结构如下所示: FUNCTION (对象类型 参数名,参数名 :IN 数据类型; 对象类型 参数名,参数名 :IN 数据类型; ) RETURN 数据类型;,在VHDL中,函数定义部分的书写结构如下所示: FUNCTION (对象类型 参数名,参数名 :IN 数据类型; 对象类型 参数名,参数名 :IN 数据类型; ) RETURN 类型 IS 函数说明部分; BEGIN ; RETURN (表达式); END FUNCTION ;,(1)函数在不同位置的定义 前面讨论过程的时候,曾经提到过程可以在程序包、结构体和进程中进行定义,有时候也可以在实体说明中进行定义。与过程相同,函数也可以在程序包、结构体和进

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

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

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