когда я назначаю сигнал F дополнением к сигналу B в следующем процессе:
architecture V1 of E is
signal B: bit;
begin
process (A) begin
B<=A;
F<=not b;
end process;
end architecture;
тогда F будет содержать старое инвертированное значение B в первом цикле.
Но почему то же самое не относится к этому примеру, где я просто использую параллельные операторы?
architecture V1 of E is
signal B : bit;
begin
B<=A;
F<=not b;
end architecture;
Когда я думаю об аппаратных компонентах F, они будут получать сигнал от B, поэтому в первом цикле F также должен содержать старое инвертированное значение B?
Параллельные назначения сигналов — это просто сокращение для процессов. Ваш второй код такой же, как:
process(A)
begin
B <= A;
end process;
process(b)
begin
F <= not b;
end process;
Причина, по которой поведение отличается, заключается в том, что с вашим первым кодом процесс возобновляется только при изменении сигнала A
, а со вторым каждый процесс возобновляется каждый раз, когда изменяется сигнал в его списке чувствительности.
IEEE Std 1076-2008 11.6 Параллельные операторы присваивания сигналов «Параллельный оператор присваивания сигналов представляет эквивалентный оператор процесса, который присваивает значения сигналам». ...поэтому в первом цикле F должен... 11. Параллельные операторы 11.1 Общие положения «В рамках заданного цикла моделирования реализация может выполнять параллельные операторы параллельно или в некотором порядке. Язык не определяет порядок, если таковой имеется, в котором такие операторы будут выполняться.... "Вы не указываете, какой из двух фрагментов. Предоставьте минимальный воспроизводимый пример один конкретный вопрос по программированию.