Чтобы угадать, чего вы хотите достичь, вам нужны переменные.
Переменные обновляются немедленно в присваивании переменной, тогда как последовательные назначения сигналов в соответствии с графиком до следующего wait
заявления достигаются.
Имейте в виду, что список чувствительности процесса является синтаксическим сахаром для оператора wait on <sensitivity list>;
, вставленного перед end process
.Таким образом, если список чувствительности процесса используется вместо операторов ожидания, сигналы обновляются в конце процесса.
process(<sensitivity list>)
variable a : std_logic_vector(7 downto 0);
begin
a := foo;
if (a = x"55") then
result <= a;
else
result <= not a;
end if;
end process;
Эквивалентный процесс с wait on
:
process
variable a : std_logic_vector(7 downto 0);
begin
a := foo;
if (a = x"55") then
result <= a;
else
result <= not a;
end if;
wait on <sensitivity list>;
end process;
Thisтакже объясняет, почему каждый процесс оценивается хотя бы один раз при запуске моделирования.