Когда должен быть вставлен сигнал в список чувствительности процесса

Я не понимаю, когда сигнал, объявленный в архитектуре, должен быть вставлен в список чувствительности процесса.

Есть ли какой-то общий закон, которому можно следовать в любой ситуации?

Мне трудно понять, когда мне нужно включить сигнал в список чувствительности процесса.

22
задан icc97 10 October 2014 в 10:30
поделиться

2 ответа

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

Для комбинаторной логики: Вероятно, вы хотите, чтобы все ваши входные сигналы были включены в список чувствительности. Если они не включены в список чувствительности, это приведет к тому, что ваш выходной сигнал не изменится даже при изменении этого входного сигнала. Это распространенная ошибка (из-за небрежности). Обратите внимание, что в VHDL 2008 вы можете использовать ключевое слово «all», чтобы автоматически включать все необходимые сигналы в ваш процесс и избегать создания защелок.

Для синхронной логики: Скорее всего, вам нужен только ваш сигнал часов (и, возможно, ваш сброс) в списке чувствительности. Это потому, что вас интересует только значение ваших сигналов (кроме часов), когда ваши системные часы изменились. Это потому, что вы обычно описываете регистры (составленные из триггеров), которые позволяют изменять только их выходные значения по фронту тактовой частоты.

Все это может сбивать с толку в случае использования HDL для синтеза, потому что только подмножество схем, которые вы описываете в VHDL, может быть фактически реализовано в FPGA. Например, у вас не может быть примитивного элемента памяти, чувствительного к двум независимым фронту тактового сигнала, даже если вы могли бы описать такую ​​схему, включив два тактовых сигнала в список чувствительности.

14
ответ дан 29 November 2019 в 04:53
поделиться

... также, будьте осторожны, список чувствительности не будет влиять на поведение вашего проекта после его синтеза. Используется только во время симуляции. Следовательно, довольно просто ввести разницу в поведении между RTL и синтезированным кодом путем изменения списка чувствительности.

Правила, которые дает Джош, хороши, но, прежде всего, прочитайте предупреждения, которые дают вам ваши инструменты, и действуйте в соответствии с ними. Обычно они проверяют правильность списка чувствительности и отмечают любые проблемы. В режиме Emacs VHDL также есть команда для обновления списка чувствительности, и, как правило, он довольно хорош.


Хмммм, ниндзя'д

0
ответ дан 29 November 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: