Вывод 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;

Испытательный стенд

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
Мои мысли также - убедитесь, что все компоненты скомпилированы, и что ваш сим нацелен на правильный объект. Убедитесь, что при загрузке сима нет ошибок/предупреждений. Сам ваш код не кажется проблемой.   -  person fru1tbat    schedule 02.03.2015


Ответы (1)


Ваш код выглядит хорошо. Я не вижу причин, по которым ваш код не должен работать. Я думаю, что ваша проблема в modelim:

  1. Создайте новый проект Model Sim.

  2. Добавьте файлы VHDL, затем скомпилируйте все

  3. Перейдите в меню симуляции и выберите «Начать симуляцию».

  4. Перейдите в меню просмотра и выберите объект и сигнал.

  5. Перетащите свои входы и выходы и нажмите кнопку запуска после изменения периода часов для каждого входа и выхода.

Удачи

person Community    schedule 02.06.2015