Я узнал, что сигнал изменяется не сразу при встрече с выражением, а когда процесс завершается. В этом примере здесь:
...
signal x,y,z : bit;
...
process (y)
begin
x<=y;
z<=not x;
end process;
Пример говорит следующее:
Если сигнал y изменяется, то событие будет запланировано на x, чтобы сделать его таким же, как y. Кроме того, на z запланировано событие, противоположное x. Вопрос в том, будет ли значение z противоположным y? Конечно, ответ отрицательный, потому что, когда выполняется второй оператор, событие на x еще не было обработано, а событие, запланированное на z, будет противоположным значению x до начала процесса.
Хорошо. , Мне нужно понять некоторые вещи:
x
обновляется как первая инструкция. Это по-прежнему не изменяет значение x
, это изменение помещается в очередь для выполнения после завершения процесса. Таким образом, все, что находится после этого оператора x <= y
, не увидит изменений и увидит x
со старым значением. Это правильно? z
. То же самое здесь, z не изменит своего значения, но это зависит от значения другого процесса. Изменение z
будет помещено в очередь для выполнения в конце процесса. Это правильно? Что происходит в конце процесса?
Номер возможности 1) Значение в x
изменяется, поэтому x имеет новое значение. Второй сигнал z
обновлен, первый сигнал x
обновлен, и, учитывая, что z
зависит от x
, его значение изменяется на основе НОВОГО ОБНОВЛЕННОГО значения x
. И пример должен работать нормально.
Номер возможности 2) Значение в x
изменено, поэтому x имеет новое значение. Второй сигнал z
обновляется. Учитывая, что z
было присвоено старое значение x
, это значение, которое будет содержать z
, старое значение x
, которое было обновлено, но это обновление не рассматривается.
Не могли бы вы сказать мне, какой из них правильный?