2. 测试平台文件的结构
使用VHDL语言编写测试平台文件时,所有的基本VHDL语法都是适用的,但是测试平台文件与一般的项目设计存在一些区别。一个测试平台文件必须包括与所测试的元件(UUT)相对应的原件声明,以及输入到UUT的激励描述。一个测试平台文件的基本结构如例1:
【例1】
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY test1 IS --测试平台文件的空实体(不需要定义端口)
END test1;
ARCHITECTURE behavior OF test1 IS
COMPONENT dff2 --被测试元件声明
PORT(
…
);
END COMPONENT;
Local-signal-declarations --局部信号声明
BEGIN
-- 被测试元件的例化或映射
process --产生时钟信号
begin
……
end process;
process --产生激励源
begin
……
end process;
从上面的基本结构中,可以看出其中包含几个最基本的语句,即实体的定义、所测试元件的例化、产生时钟信号和产生激励源等语句。测试平台中的实体定义不需要定义端口,也就是说测试平台没有输入输出端口,它只是和被测试元件(UUT)通过内部信号相连接。
3.测试平台文件的编写
前面提到了测试评台的文件,以及怎么编写激励信号,接下来我们将通过对组合和时序的实例程序说明测试文件的编写。下面的实例程序将即为一个测试平台程序以及它所测试的元件。
1)四选一选择器的仿真(组合逻辑电路)
① 测试平台文件。在例2中激励信号波形在一个进程中产生。实体为一个空实体,没有输入输出信号端口。
【例2】四选一数据选择器的测试平台文件
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY test IS --测试平台实体
END test;
ARCHITECTURE behavior OF test IS
COMPONENT mux --被测试元件的声明
PORT(
input : IN std_logic_vector(3 downto 0);
a : IN std_logic;
b : IN std_logic;
y : OUT std_logic
);
END COMPONENT;
--Inputs输入信号
signal input : std_logic_vector(3 downto 0) := (others => '0');
signal a : std_logic := '0';
signal b : std_logic := '0';
--Outputs输出信号
signal y : std_logic;
BEGIN
--被测试元件例化
uut: mux PORT MAP (
input => input,
a => a,
b => b,
y => y
);
input<="0101"; --这里我们固定数据输入,方面选择端选择
-- Stimulus process
stim_proc: process --激励信号
begin
a <= '0';
b <= '0';
wait for 10 ns;
a <= '0';
b <= '1';
wait for 10 ns;
a <= '1';
b <= '0';
wait for 10 ns;
a <= '1';
b <= '1';
wait for 10 ns;
end process;
END;
②测试文件的VHDL程序,例3是一个简单的四选一数据选择程序。
【例3】四选一数据选择器的VHDL程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux4 IS
PORT( d : IN STD_Logic_Vector(3 Downto 0);
a,b : IN Std_Logic;
y : OUT Std_Logic);
END mux4 ;
ARCHITECTURE mux4_arch OF mux4 IS
SIGNAL sel:Std_Logic_Vector(1 Downto 0);
BEGIN
sel<=b & a;
PROCESS (d,sel)
BEGIN
IF (sel="00") THEN
y <= d(0);
ELSIF (sel="01") THEN
y <= d(1);
ELSIF (sel="10") THEN
y <= d(2);
ELSE
y <= d(3);
END IF;
END PROCESS;
END mux4_arch;
在上面所定义的测试平台文件的基础上,当使用ISIM对上面所定义的元件进行仿真,所得到的仿真波形如图1所示。
图1四选一选择器仿真波形图