一、VHDL语言设计的基本单元及其构成
l 一个完整的VHDL语言程序通常包含实体(Entity)、构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library):
l 功能:
实体 -—- 用于描述所设计的系统的外部接口信号;
构造体—— 用于描述系统内部的结构和行为;
包集合—— 存放各设计模块都能共享的数据类型、常数和子程序库;
配置 —— 用于从库中选取所需单元来组成系统设计的不同版本;
库 —— 存放已经编译的实体、构造体、包集合和配置。
l 基本组成:实体说明和构造体两部分
实体说明(接口)
构造体(实现)
1. 实体说明:
规定此实体输入与输出的数目与类型。
l 结构:
entity 实体名 is
[generic(类属参数说明)];
[port(端口说明)];
end 实体名;
l 类属参数说明:
generic (
常数名:数据类型 :=数值);
在端口说明前,用于指定参数。
l 端口说明:
在entity语句的实体说明部分,常用port语句描述实体对外界连接的端口(数目、方向和数据类型)。
port (
端口名:端口方向 端口数据类型;
.
.
.
端口名:端口方向 端口数据类型;
);
端口方向:
in (输入),只能读,用于:时钟输入、控制输入(装入、复位、使能)、单向数据输入;
out (输出),只能被赋值,用于不能反馈的输出;
inout(输入输出) ,既可读又可被赋值,被读的值是端口输入值而不是被赋值,作为双向端口。
buffer(缓冲),类似于输出,但可以读,读的值是被赋值,用做内部反馈用,不能作为双向端口使用。
l 例1):
entity NAND2 is
port(A,B: in BIT;
Z: out BIT);
end NAND2;
l 例2):
--Define an entity (design) called COMP
--that has 2 N-bit input and one output.
entity COMP is
generic(N : INTEGER :=8 ) ; -- default is 8 bits
port ( x, y : in BIT_VECTOR ( 0 to N-1);
equal : out BOOLEAN );
end COMP;
2. 构造体
构造体定义实体功能的一种实现。
l 构造体的结构:
architecture 构造体名 of 实体名 is
{块说明项}
begin
{并发语句}
end 构造体名;
l 块说明项(或定义语句),位于architecture 和begin之间,对构造体内部的使用信号、常数、数据类型和函数进行说明,包括:
使用语句
子程序说明
子程序体
类型说明
子类型说明
常数说明
信号说明
元件说明
l 并行语句处于begin 与end之间,描述构造体的行为与连接关系。
l 构造体的描述方法:
行为描述(按算法的路径来描述);
数据流描述或RTL描述(采用寄存器传输描述);
结构化描述(采用例化元件)
例化(instantiation ):在高层次的设计中调用低层次的实体作为元件的过程。
l 构造体的组织
l 例
entity COUNTER3 is
port( clk: in bit;
reset : in bit;
count: out integer range 0 to 7);
end COUNTER3;
architecture MY_ARCH of COUNTER3 is
signal count_tmp : integer range 0 to 7;
begin
process
begin
wait until (clk'event and clk='1');
if reset='1' or count_tmp =7 then
count_tmp<=0;
else
count_tmp<=count_tmp + 1;
end if;
end process;
count<=count_tmp;