一、VHDL具体特点
(1)支持系统级到门级电路的描述,既支持自底向上的设计也支持自顶向下的设计,同时也支持结构、行为和数据流三种形式的混合描述。
(2)VHDL的设计单元的基本组成部分是实体entity和结构体(architecture)、实体包含设计系统单元的输入和输出端口信息,结构体描述设计单元的组成共和行为,便于各模块之间数据传输。利用单元 (Componet)、块(block)、过程(procedure)、函数(function)等语句,用结构化、层次化的描述方法,使复杂电路设计更简单。采用包的概念,便于标准设计文档资料的保存和广泛使用。
(3)VHDL有常数、信号、变量三种数据对象,每一种数据对象都要指定数据类型。VHDL的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。VHDL既支持预定义的数据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义。VHDL是强类型语言。
(4)数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有串行和并行,VHDL常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构和行为状态。
二、VHDL的基本结构
第一部分是程序包,程序包是用VHDL编写的共享文件,定义在设计结构体和实体中将用到的常数、数据类型、子程序和设计好的电路单元等,放在文件目录名称为IEEE的程序包中。
第二部分是程序的实体,定义电路单元的输入输出引脚信号。程序实体名称任意,但是必须要跟VHDL程序的文件名相同。
第三部分是程序的结构体,具体描述电路的内部结构和逻辑功能。结构体有三种描述方式,分别是行为描述方式、数据流(dataflow)描述方式和结构体描述方式,其中数据流描述方式又称为寄存器(RTL)描述方式。
端口信号输入/输出状态有以下几种:
- IN——信号进入电路单元。
- OUT——信号从电路单元输出。
- INOUT——信号是双向的,既可以进入电路单元也可以从电路单元输出。
- BUFFER——信号从电路单元输出,同时在电路单元内部可以使用该输出信号。
常用的端口信号的数据类型
1)位(BIT)型:表示一位信号的值,可以取值0和1,放在单引号里面表示。
2)位向量(BIT_VECTOR)型:表示一组位型信号值,在使用时必须标明位向量的宽度和位向量的排列顺序。
3)标准逻辑位(STD_LOGIC)型:IEEE标准的逻辑类型。
4)标准逻辑位向量(STD_LOGIC_VECTOR)型:IEEE标准的逻辑向量,表示一组标准逻辑位型信号值。
结构体
结构体有三种描述方式,分别是行为描述方式、数据流描述方式和结构描述方式。
结构体说明语句是对结构体中用到的数据对象的数据类型、元件和子程序加以说明。电路描述语句用并行语句来描述电路的各种功能,这些并行语句包括并行信号幅值语句、条件幅值语句、进程语句、元件例化语句和子程序调用语句等。
库名 | 程序包名 | 定义的内容 |
---|---|---|
STD | STANDARD TEXTIO | 定义VHDL的数据类型,如BIT、BIT_VECTOR等;TEXT读写控制数据类型和子程序等 |
IEEE | STD_LOGIC_1164 | 定义STD_LOGIC、STD_LOGIC_VECTOR等 |
IEEE | STD_LOGIC_ARITH | 定义有符号与无符号数据类型,基于这些数据类型的算术运算符 |
IEEE | STD_LOGIC_signed | 定义STD_LOGIC与STD_LOGIC_VECTOR数据类型上有符号的算数运算 |
IEEE | STD_LOGIC_unsigned | 定义STD_LOGIC、STD_LOGIC_VECTOR数据类型上无符号的算数运算 |
其中work库。work库是用户进行VHDL设计的当前目录,用于存放用户设计好的设计单元和程序包。在使用该库中的内容时不需要进行任何说明。
用户在用到标准程序包中的内容时,除了STANDARD程序包以外,都要在设计程序中加以说明。