Не могли бы вы помочь мне понять параллелизм в VHDL? - PullRequest
0 голосов
/ 03 ноября 2019

Я понимаю, что в процессе инструкции выполняются последовательно и что значение сигнала не обновляется до конца процесса, но я не могу понять принцип параллелизма? например, в следующем коде я знаю, что обе инструкции будут выполняться параллельно (в одно и то же время), но я не знаю, будет ли у Q новое значение Sig2 или точный также, когда мы вычисляем Sig2, используем ли мы новое значениеСиг1 или прецидент?

Sig1<=a and b; Sig2<=Sig1 and a; Q<=Sig2;

1 Ответ

0 голосов
/ 03 ноября 2019

Поскольку VHDL использует управляемую событиями семантику, фактически ничего не выполняется параллельно. Это просто похоже на параллелизм. Параллельные присвоения, которые вы показываете, выполняются всякий раз, когда изменяются операнды RHS - подразумеваемого упорядочения не существует. Если a изменяется с 1 на 0, вы не можете зависеть от того, в каком порядке выполняются первые два оператора. Возможно, сначала выполняется назначение 2 nd , затем выполняется назначение 1 st , а затем третье назначение 3 rd (потому что Sig2 изменилось), а затем назначение 2 nd выполняется снова, поскольку Sig1 изменилось.

Большинство инструментов попытаются упорядочить операторы, чтобы минимизировать количество повторных выполнений присваивания, и могут даже оптимизировать его, как если бы вы написали:

Q <= a and b;

и исключили Sig1 и Sig2 из симуляции.

...