VHDL изходът внезапно е недефиниран, въпреки че компилацията е преминала

Аз съм студент със задача да създам и тествам пълен суматор, използвайки 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;

Testbench

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;

person Andrew King    schedule 02.03.2015    source източник
comment
Сигурни ли сте, че вашата симулация е настроена правилно? На пръв поглед не виждам причина вашият код да не работи.   -  person fru1tbat    schedule 02.03.2015
comment
Не съм сигурен, не съм променил никакви настройки, свързани със симулацията.   -  person Andrew King    schedule 02.03.2015
comment
Ако всички портове са недефинирани, може би не сте компилирали тестовия стенд. Името на портовете и в двата модула е едно и също и е възможно вълните в Modelsim да са свързани с FullAdder, а не с FullAdderTB.   -  person Amir    schedule 02.03.2015
comment
Моите мисли също - уверете се, че всички компоненти са компилирани и че вашият сим е насочен към правилния обект. Уверете се, че няма грешки/предупреждения при зареждане на SIM картата. Самият ви код не изглежда да е проблемът.   -  person fru1tbat    schedule 02.03.2015


Отговори (1)


Вашият код изглежда добре. Не виждам причина вашият код да не работи. Мисля, че проблемът ви е в modelsim:

  1. Създайте нов модел Sim проект.

  2. Добавете вашите VHDL файлове, след което компилирайте всички

  3. Отидете в менюто за симулация и изберете стартиране на симулация.

  4. Отидете в менюто за преглед и изберете обект и форма на вълната

  5. Плъзнете и пуснете вашите входове и изходи и натиснете бутона за изпълнение, след като промените периода на часовника за всеки вход и изход.

Късмет

person Community    schedule 02.06.2015