Вы можете использовать неблокирующий процедурный оператор всякий раз, когда вы хотите сделать несколько назначений регистров в течение одного и того же временного шага независимо от порядка или зависимости друг от друга. Это означает, что неблокирующие операторы больше похожи на реальное оборудование, чем на блокирующие присваивания.
Почему мы используем неблокировку в блоке?
Блокирующие (=) и неблокирующие (<=) присваивания предусмотрены для управления порядком выполнения в всегда блочном выполнении оператора. Неблокирующие присваивания буквально не блокируют выполнение следующих операторов. Сначала определяется правая часть всех утверждений, затем левые части присваиваются вместе.
Когда вы бы использовали блокирующие и неблокирующие присваивания при кодировании последовательной логики?
Рекомендация №1: При моделировании последовательной логики используйте неблокирующие присваивания Рекомендации №2: При моделировании защелок используйте неблокирующие присваивания. Существует множество способов кодирования комбинационной логики с использованием Verilog, но когда комбинационная логика кодируется с использованием постоянного блока, следует использовать блокирующие назначения.
Что такое блокирующие и неблокирующие присваивания?
блоки с немного другим поведением. • Блокирующее назначение: оценка и назначение выполняются немедленно. • Неблокирующее назначение: все назначения отложены до выполнения всех . оценены правые части (конец симуляции.
Где используется блокирующий и неблокирующий Verilog?
Вот хорошее практическое правило для Verilog: В Verilog, если вы хотите создать последовательную логику, используйте синхронизированный блок Always с неблокирующими назначениями Если вы хотите создать комбинационную логику, используйте постоянный блок с блокирующими назначениями. Старайтесь не смешивать их в одном всегда блоке.