Мультиплексор компонентов VHDL не возвращает значение в modelsim - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь сделать ALU с сумматором, компонентом mux2 и mux4 с картой портов. Я должен написать ALU, который прошел компиляцию ОК. Проблема в том, что когда я пытаюсь передать значения в modelsim, сумматор работает нормально, но mux2 (sub_module) и mux4 (sub_module x2) не дают вывода. Я заменяю 2–3 раза код мультиплексора, и проблема та же. Я получаю только значения UUUUUUUU для outY. Я свернул код.

ModelSim

Основной ALU свернут

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity ALU7_minimal is
    Port ( inpA : IN STD_LOGIC_VECTOR (7 downto 0) :="10110001";
             inpB : IN STD_LOGIC_VECTOR (7 downto 0) :="00011001";
        ALUS0 : in  STD_LOGIC := '0';
            outY : out  STD_LOGIC_VECTOR (7 downto 0));
end ALU7_minimal;

architecture Behavioral  of ALU7_minimal is

component sub_module
port(x,y : in STD_LOGIC_VECTOR (7 downto 0);
s: in STD_LOGIC;
z: out STD_LOGIC_VECTOR (7 downto 0));
end component;


begin

U0: sub_module port map (inpA, inpB, ALUS0, outY );


end Behavioral ;

mux2-1

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity sub_module is
port(x,y : in STD_LOGIC_VECTOR (7 downto 0);
s: in STD_LOGIC;
z: out STD_LOGIC_VECTOR (7 downto 0));
end sub_module ;

architecture Behavioral of sub_module is

begin

process (x,y,s) is
begin
if (s ='0') then
z <= x;
else
z <= y;
end if;
end process;

end Behavioral;

Ответы [ 2 ]

0 голосов
/ 12 июня 2020

Просто для справки в будущем для других, которые столкнутся с той же проблемой (мой учитель обнаружит это): вам нужно было импортировать в модели все файлы компонентов перед запуском моделирования. Парадокс, сумматор 1 и 8 бит работал, даже если я их не импортировал, но мультиплексор (2-1 / 4-1) не дал никакого результата. Когда я импортировал все файлы компонентов (а не только основную программу), ModelSim правильно показывает результаты. Спасибо за ваше время и помощь, ребята, очень признательны.

0 голосов
/ 07 июня 2020

в процессе нет необходимости!

begin
with s select
    z <= x  when '0',
         y  when '1',
        'U' when others;

...