vhdl语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章 VHDL硬件描述语言本章要点
VHDL语言的数据结构
VHDL语言的顺序语句和并行语句
VHDL程序设计
6.1 VHDL概述 6.1.1 VHDL的特点
(1)作为HDL的第一个国际标准,VHDL具有很强的可移植性。
(2)具有丰富的模拟仿真语句和库函数。
(3)VHDL有良好的可读性,接近高级语言,容易理解。
(4)系统设计与硬件结构无关。
(5)支持模块化设计。
(6)用VHDL完成的一个确定设计,可以利用EDA工具自动地把VHDL描述转变成门电路级网表文件。
(7)设计灵活,修改方便。
用VHDL设计电路主要的工作过程是:编辑、编译、功能仿真(前仿真)、综合、布局、布线、后仿真(时序仿真)。
6.1.2 VHDL的基本结构
一个VHDL程序必须包括实体(ENTITY)和结构体(ARCHITECTURE)。除实体和结构体外,多数程序还要包含库和程序包部分。实体中定义了一个设计模块的外部输入和输出端口,即模块(或元件)的外部特征,描述了一个元件或一个模块与其他部分(模块)之间的连接关系,可以看作是输入输出信号和芯片管脚信息。结构体主要用来说明元件内部的具体结构,即对元件内部的逻辑功能进行说明,是程序设计的核心部分。库是程序包的集合,不同的库有不同类型的程序包。程序包用来定义结构体和实体中要用到的数据类型、元件和子程序等。
【例6-1】用VHDL设计一个非门(反向器)。
非门即 y = a,设反相器的VHDL的文件名是not1.vhd,其中的.vhd是VHDL程序文件的扩展名。程序结构如下:--库和程序包部分
LIBRARY IEEE; --打开IEEE库
USE IEEE.STD_LOGIC_1164.ALL; --调用库中STD_LOGIC_1164程序包
--实体部分
ENTITY not1 IS --实体名为 not1
PORT ( --端口说明
a:IN STD_LOGIC; --定义端口类型和数据类型
y:OUT STD_LOGIC);
END not1: --实体结束
--结构体部分
ARCHITECTURE inv OF not1 IS --结构体名为 inv
BEGIN
y <= NOT a; --将a取反后赋值给输出端口y
END inv; --结构体结束
这是一个完整的VHDL源程序实例。其中的第一部分是库和程序包,是用VHDL编写的共享文件,定义结构体和实体中要用到的数据类型、元件、子程序等,放在名为IEEE的库中。第二部分是实体,相当于定义电路单元的管脚信息。第三部分是结构体,用来描述电路的内部结构和逻辑功能。两条短划线是注释标识符,其右侧内容是对程序的具体注释,并不执行。所有语句都是以“;”结束,另外程序中不区分字母的大小写。
6.1.3 VHDL的库和程序包
1.库库是专门用于存放预先编译好的程序包的地方,对应一个文件目录,程序包的文件就放在此目录中,其功能相当于共享资源的仓库,所有已完成的设计资源只有存入某个“库”内才可以被其他实体共享。常用的库有IEEE库、STD库和WORK库。库语句格式如下:
LIBRARY 库名;
2.程序包程序包是用VHDL语言编写的一段程序,可以供其他设计单元调用和共享,相当于公用的“工具箱”,各种数据类型、子程序等一旦放入了程序包,就成为共享的“工具”,类似于C语言的头文件,使用它可以减少代码的输入量,使程序结构清晰。程序包分为包头和包体两部分。
程序包格式如下。
包头格式:PACKAGE 程序包名 IS
[包头说明语句]
END 程序包名;
包体格式:
PACKAGE BODY 程序包名 IS
[包体说明语句]
END 程序包名;
调用程序包的通用模式为:USE 库名.程序包名.ALL;
常用预定义程序包有以下四个:
(1)STD_LOGIC_1164程序包
(2)STD_LOGIC_ARITH程序包
(3)STD_LOGIC_SIGNED程序包
(4)STD_LOGIC_UNSIGNED程序包
6.1.4 VHDL的实体
VHDL描述的对象称为实体,是设计中最基本的模块。实体的格式如下:
ENTITY 实体名 IS
[GENERIC(类属说明)]
[PORT(端口说明)]
END 实体名;
1.类属说明类属说明是实体说明的一个可选项(可选项用[…]表示),主要为设计实体指定参数,可以用来定义端口宽度、实体中元件的数目、器件延迟时间等。
类属说明语句的格式如下:
GENERIC(常数名1:数据类型1:= 设定值1;
……;
常数名n:数据类型n:= 设定值n);
2.端口说明端口说明也是实体说明的一个可选项,负责对实体中输入和输出端口进行描述。端口说明语句格式如下:
PORT(端口信号名1:端口模式1 数据类型1;
……;
端口信号名n:端口模式n 数据类型n);
6.1.5 VHDL的结构体
结构体用来描述设计实体的内部结构或行为,是实体的一个重要组成部分,定义了实体的具体功能,规定了实体中的信号数据流程,确定了实体中内部元件的连接关系。结构体用三种方式对设计实体进行描述,分别是行为描述、寄存器传输描述和结构描述。其格式如下:
ARCHITECTURE 结构体名 OF 实体名 IS
[结构体说明部分;]
BEGIN
功能描述语句;
END 结构体名;
【例6-4】通过中间信号m实现输入端到输出端的数据传输。
ENTITY mybody IS --实体名为mybody
PORT( in1 :IN BIT; --定义端口
output1 :OUT BIT );
END mybody;
ARCHITECTURE myprog OF mybody IS --结构体名为myprog
SIGNAL m:BIT; --定义中间信号m
BEGIN