FPGA 第七章:VHDL描述方式
7.1 行为描述
行为描述表示输出与输入之间转换的行为,无须包含任何结构信息。
行为描述主要使用顺序描述语句,以算法的形式描述数据的变化和传送。
行为描述方式通常由一个或多个进程构成,每一个进程又包含了一系列顺序语句。
7.2 寄存器传输(数据流)RTL描述
RTL描述既显式地表示了设计单元的行为,又隐含了该设计单元的结构。
主要是指非结构化的并行语句描述。
举例:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY full_adder IS
GENERIC(tpd : TIME := 10 ns);
PORT(x,y,c_in : IN STD_LOGIC;
Sum, c_out : OUT STD_LOGIC);
END full_adder;
ARCHITECTURE dataflow OF full_adder IS
BEGIN
s <= x XOR y AFTER tpd;
sum <= s XOR c_in AFTER tpd;
c_out <= (x AND y) OR( s AND c_in) AFTER 2* tpd;
END dataflow;
7.3 结构化描述
结构描述是侧重描述设计单元之间的硬件结构。
主要使用元件例化语句或生成语句来完成这种描述。
举例:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY full_adder IS
GENERIC(tpd:TIME:=10ns);
PORT(x,y,c_in: IN STD_LOGIC;
Sum, c_out: OUT STD_LOGIC);
END full_adder;
ARCHITECTURE structural OF full_adder IS
COMPONENT half_adder
PORT(in1, in2: IN STD_LOGIC;
sum, carry: OUT STD_LOGIC);
END COMPONENT;
COMPONENT or_gate
PORT(in1, in2: IN STD_LOGIC;
out1: OUT STD_LOGIC);
END COMPONENT;
SIGNAL a, b, c:STD_LOGIC;
FOR u1,u2 : half_adder USE
ENTITY WORK.half_adder
(behavioral);
FOR u3: or_gate USE ENTITY
WORK. or_gate (structural);
BEGIN
u1: half_adder PORT MAP
(x, y, b, a);
u2: half_adder PORT MAP
(c_in, b, sum, c);
u3: or_gate PORT MAP (in1=>c, in2=>a, out1=>c_out);
END structural;