Я только что взял Руководство дизайнера по VHDL, и я прорабатываю упражнения в первой главе.Я столкнулся с проблемой с моим 2-битным мультиплексором, которую я не понимаю.
Код для моего мультиплексора:
library ieee;
use ieee.std_logic_1164.all;
entity multi2 is
port
(
a,b : in bit;
sel : in boolean;
z : out bit
);
end multi2;
architecture behave of multi2 is
begin
storage : process is
variable stored_d0 : bit;
begin
wait for 1 ns;
if sel then
z <= a;
else
z <= b;
end if;
end process storage;
end architecture behave;
Я не могу понять, зачем мне нужно "ждать"на 1 нс; "линия.Если я переместу его ниже строки «конец, если», симуляция не сработает, и я не получу вывод .vcd из GHDL.Без линии ожидания, или из-за того, что она находится не в том месте, я получаю сообщение об ошибке в моем файле vcd о том, что время начала и окончания совпадают.
Нужны ли мне операторы ожидания в моем процессе, чтобы работать?
Код моего стенда ниже:
library ieee;
use ieee.std_logic_1164.all;
entity multi2_tb is
end multi2_tb;
architecture test of multi2_tb is
component multi2
port
(
a,b : in bit;
sel : in boolean;
z : out bit
);
end component;
signal a,b : bit;
signal sel : boolean;
signal z : bit;
begin
multiplexer2: multi2 port map (a => a, b => b, sel => sel, z => z);
process begin
a <= '0';
b <= '1';
sel <= false;
wait for 3 ns;
a <= '0';
b <= '1';
sel <= true;
wait for 3 ns;
a <= '0';
b <= '1';
sel <= false;
wait for 3 ns;
assert false report "Reached end of test";
wait;
end process;
end test;