После успешной компиляции и моделирования с использованием Modelsim из кода ниже, который представляет собой простой мультиплексор 4to1, построенный с использованием двух мультиплексоров 2to1, я запустил тест формы волны, чтобы увидеть, как это будет выглядеть, вывод был непрерывно в состоянии Uнезависимо от значений входных данных, здесь приведен код вместе с результатами:
a. Код для мультиплексора 2to1:
entity mux2_1 is
port( a,b:in std_logic_vector(2 downto 0);
s:in std_logic;
e:out std_logic_vector(2 downto 0));
end mux2_1;
architecture wx of mux2_1 is
begin
process
begin
if(s='0') then
e<=a;
else
e<=b;
end if;
wait;
end process;
end wx;
b. Код для мультиплексирования 4to1:
entity mux4_1 is
port( a,b,c,d:in std_logic_vector(2 downto 0);
s1,s0:in std_logic;
e :out std_logic_vector (2 downto 0));
end mux4_1;
architecture nj of mux4_1 is
signal t1,t2:std_logic_vector (2 downto 0);
begin
k1: entity work.mux2_1 port map (a,b,s0,t1);
k2: entity work.mux2_1 port map (c,d,s0,t2);
k3: entity work.mux2_1 port map (t1,t2,s1,e);
end nj;
Вот консольный отчет сразу после моделирования:
Инаконец, осциллограммы с непоследовательным выходным сигналом: