Когда сигналы назначаются в VHDL? - PullRequest
4 голосов
/ 11 октября 2011

Учитывая этот код:

architecture synth of my_entity is
    signal a : std_logic;
begin

    a <= c and d;
    b <= a and c;

end synth;

Будет ли вторая строка учитывать, что a изменился в другом процессе, или все сигналы только в конце архитектуры назначены?

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Будет ли вторая строка учитывать, что изменение в другой обрабатывать или все сигналы назначены только в конце архитектуры?

Звучит так, будто вы думаете о поведении сигнала в рамках одного процесса , когда вы говорите это. В этом контексте сигналы не обновляются до конца процесса, поэтому при обновлении b будет использоваться «старое» значение a

.

Однако присвоения сигналов, не входящие в оператор process, выполняются непрерывно, нет ничего, что могло бы «запустить» архитектуру для «запуска». Или, в качестве альтернативы, все они являются отдельными отдельными подразумеваемыми процессами (как вы прокомментировали) со списком чувствительности, подразумеваемым всем с правой стороны.

В вашем конкретном случае присвоение b будет использовать новое значение a, и назначение произойдет через один дельта-цикл после присвоения a.

Подробное описание того, как работает время моделирования в VHDL, см. На странице Яна Декалуве:

http://www.sigasi.com/content/vhdls-crown-jewel

А также эта тема может быть поучительной:

https://groups.google.com/group/comp.lang.vhdl/browse_thread/thread/e47295730b0c3de4/d5bd4532349aadf0?hl=en&ie=UTF-8&q=vhdl+concurrent+assignment#d5bd4532349aadf0

1 голос
/ 11 октября 2011

Осторожнее с вашей терминологией. Когда вы говорите a изменилось в другом «процессе», это имеет особое значение в VHDL (процесс - это ключевое слово в VHDL), и в вашем коде нет процессов.

Синтезаторы будут обрабатывать ваш код как:

a <= c and d;
b <= (c and d) and c;

Симуляторы обычно назначают a на первом проходе, а затем назначают b на втором проходе на одну 'дельту' позже. Дельта - это бесконечно малая временная задержка, которая имеет место в то же время моделирования, что и первоначальное присвоение.

Обратите внимание, что это грубое обобщение того, что действительно происходит ... если вы хотите получить полную информацию, прочтите документацию, прилагаемую к вашей цепочке инструментов.

...