Мультиплексор компонентов VHDL не возвращает значение в modelsim

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

ModelSim

Основное АЛУ свернуто

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 ;

мультиплексор2-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;

person BreeZeR    schedule 26.05.2020    source источник
comment
Предоставьте минимально воспроизводимый пример. Проблема не может быть воспроизведена на основе информации, предоставленной с использованием входных данных, полученных из связанной формы волны . Примечание U3 (adder8bit) не связан (и не отвечает за все U), out0 управляется, но не используется в качестве входа, равно как и out12.   -  person    schedule 27.05.2020
comment
Я уменьшил пример.   -  person BreeZeR    schedule 27.05.2020
comment
Теперь, если бы вы только предоставили воспроизводимый пример. Проблему по-прежнему нельзя воспроизвести из информации, используя входные данные, полученные из связанной формы сигнала. . Рассмотрите возможность предоставления (и использования) испытательного стенда. Похоже, вы делаете что-то процедурно неправильное.   -  person    schedule 27.05.2020
comment
Спасибо еще раз. Это именно проблема. Код простой, но все равно выдает ошибку. Может быть, проблема не в коде, а в Modelsim есть настройка, которую нужно посмотреть? Знаете ли вы какую-либо другую тестовую среду, в которой я могу попробовать тот же код?   -  person BreeZeR    schedule 27.05.2020


Ответы (2)


процесс не нужен!

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

person Hamid R. Tanhaei    schedule 07.06.2020
comment
Пожалуйста, добавьте некоторое объяснение к вашему ответу, чтобы другие могли извлечь из него уроки. - person Nico Haase; 07.06.2020
comment
Параллельный оператор присваивания превращается в процесс с эквивалентным последовательным оператором присваивания. - person ; 12.06.2020

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

person BreeZeR    schedule 12.06.2020
comment
И снова проблема не может быть воспроизведена из вопроса. Как это поможет будущим читателям? - person ; 12.06.2020