Я узнал, что сигнал сразу не изменяется при встрече с выражением, но когда процесс заканчивается. В этом примере:
...
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
, которое было обновлено, но это обновление не рассматривается.
Не могли бы вы рассказать мне, какой из них правильный?