即使编译通过,VHDL输出也会突然未定义

时间:2015-03-02 14:32:34

标签: undefined vhdl simulation modelsim

我是一名学生,负责使用VHDL构建和测试完整的加法器,以便在将来的作业中使用。它在几天前工作得很好,但是我今天再次尝试模拟(在另一台计算机上),我的所有输入和输出现在都未定义。我使用的是Modelsim SE-64 10.1c。

全额加法

library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity FullAdder is

  port (A, B, Cin : in std_logic;
        Cout, sum : out std_logic);

end FullAdder;

architecture V1 of FullAdder is
  begin

    Cout <= ((B and Cin) or (A and Cin) or (A and B));
    sum  <= ((A and (not(B)) and (not Cin)) or ((not A) and (not B) and Cin) or (A and B and Cin) or ((not A) and B and (not Cin)));

end V1;

测试平台

library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity FullAdderTB is
end;

architecture TB1 of FullAdderTB is
  component FullAdder
    port (A, B, Cin : in std_logic;
          Cout, sum : out std_logic);

 end component;

  signal A, B, Cin, Cout, sum : std_logic;

begin

  stimuli: process
  begin
    A <= '0'; B <= '0'; Cin <= '0'; wait for 10 NS;
    A <= '0'; B <= '0'; Cin <= '1'; wait for 10 NS;
    A <= '0'; B <= '1'; Cin <= '0'; wait for 10 NS;
    A <= '0'; B <= '1'; Cin <= '1'; wait for 10 NS;
    A <= '1'; B <= '0'; Cin <= '0'; wait for 10 NS;
    A <= '1'; B <= '0'; Cin <= '1'; wait for 10 NS;
    A <= '1'; B <= '1'; Cin <= '0'; wait for 10 NS;
    A <= '1'; B <= '1'; Cin <= '1'; wait for 10 NS;
    wait;
 end process;

 G1: FullAdder port map (A=>A, B=>B, Cin=>Cin, Cout=>Cout, sum=>sum);

end;

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错。我没有看到你的代码不应该工作的任何原因。我认为你的问题出现在modelsim中:

  1. 创建一个新的Model Sim项目。

  2. 添加VHDL文件,然后编译所有

  3. 进入模拟菜单并选择开始模拟。

  4. 进入视图菜单并选择对象和波形

  5. 拖放输入和输出,并在更改每个输入和输出的时钟周期后按下运行按钮。

  6. 祝你好运