VHDL的基本结构由实体(ENTITY)和结构体(ARCHITECTURE)两部分构成。ENTITY:规定了设计单元的输入/输出接口信号和引脚,相当于元器件;ARCHITECTURE:定义了设计单元的具体实现,指定输入和输出的行为。
一个完整的VHDL程序通常包含5个部分:实体(ENTITY)、结构体(ARCHITECTURE)、配置(Configuration)、程序包(Package)、库(Library)。
1. 实体(ENTITY)
ENTITY 实体名 IS
[GENERIC (类属参数表);]
[PORT (端口表);]
END 实体名;
1.1 类属参数表
类属 GENERIC 参数表是一种端口界面常数,常以一种说明的形式放在实体或块结构体前的说明部分。类属参数表用于设计实体和其外部环境通信的参数,传递静态的信息。
当用实体例化一个设计实体的器件时,可以用类属参数表中的参数项定制这个器件,如可以将一个实体的传输延迟,上升和下降延时等参数加到类属参数表中。比较常见的情况是利用类属来动态规定一个实体的端口的大小,或设计实体的物理特性,或结构体中的总线宽度,或设计实体中底层中同种元件的例化数量等等。
示例: GENERIC (buswide : INTEGER := 16);
1.2 端口表
端口表:对设计实体中输入输出接口进行的描述。
PORT (端口名1:端口模式 数据类型;
.......................................................
端口名n:端口模式 数据类型);
端口模式有5种类型:IN(输入)、OUT(输出)、INOUT(双向)、BUFFER(缓冲)、LINKAGE(无指定方向)
IN(输入): 仅允许信号进入端口,主要用于时钟输入、控制输入(如复位和使能等)、单向的数据输入;
OUT(输出): 仅允许信号从实体内部流出端口,通常用于计数输出等;
INOUT(双向): 信号可以从该端口进入和流出;
BUFFER(缓冲): 信号从实体内部流出端口,输出的信号可同时作为实体内部的反馈输入信号;
LINKAGE(无指定方向):可以与任何方向的信号连接。