(4)执行仿真
该步骤是正式执行仿真了,在仿真前最重要的一个步骤就是加载激励,如要对下面的加法器进行仿真,加法器实体说明如下:
entityAdd is
port(D1: in std_logic_vector(7 downto 0);--输入
D2: in std_logic_vector(7 downto 0);--输入
D0: out std_logic_vector(7 downto 0);--输出
CE: in std_logic;-使能,低有效
Clk: in std_logic);--时钟
endAdd;
测试激励的加载
激励的加载有四种方法:
(1)命令行方式
这种方法是通过在命令行下直接输入命令给信号加载激励,然后进行仿真。如要对上面的加法器进行仿真,则输入如下命令:
Vsim –t ps work.add
//加载work 库中的实体add,时间分辨率为ps
Add wave –hex D1
Add wave –hex D2
Add wave –hex D0
Add wave ce
Add wave clk
//把信号加载到波形窗口,hex 表示以16进制显示
Force ce 0 //对ce 加激励为0
Force clk 0 0,1 25 –r 50 //对clk 加载激励
Force D1 16#2 //对D1 加载16 进制数2
Force D2 16#1 //对D2 加载16 进制数1
Run 100 //运行100 个时间单位
如果要仿真其它数据,在命令行中改变激励
就可以了,仿真的结果如图2 所示。
library ieee;
use ieee.std_logic_1164.all
use ieee.std_logic_signed.all
entity tb is
end tb
architecture a_tb of tb is
component Add
port(D1 : in std_logic_vector(7 downto 0);
D2 : in std_logic_vector(7 downto 0);
D0 : out std_logic_vector(7 downto 0);
CE : in std_logic;
Clk: in std_logic);
end component;
signal D1 : std_logic_vector(7 downto 0) :=(other => ‘1’);
signal D2 : std_logic_vector(7 downto 0) :=(other => ‘1’);
signal D0 : std_logic_vector(7 downto 0) :=(other => ‘0’);
signal CE : std_logic := ’0’;
signal Clk : std_logic
begin
dut : Add
port map(D1 => D1,
D2 => D2,
D0 => D0,
CE => CE,
Clk => Clk);
Clk <= not Clk after 25 ns;
process
begin
wait until Clk = ‘1’ and Clk’event;
D1 <= D1+1;
D2 <= D2+2;
end process;
end a_tb;