Verilog - в ореховой скорлупе
Весь поведенческий код написан внутри 08
и 11
. Таким образом, какой бы цифровой дизайн вы ни собирались создать, он помещается в 23
блокировать. Он может иметь определенные порты, а может и не иметь их — разрешить вход сигналов в блок как 39
или экранируйте блок как 49
.
Модуль
Пустой модуль в приведенном ниже примере называется testbench. . Вы можете назвать его как угодно, за исключением того, что оно должно быть буквенно-цифровым и может содержать '_'.
01
Давайте посмотрим на другой модуль. Он имеет несколько сигналов (d, clk, rstb ), объявленные как входные данные, и q объявлен как выход.
10Типы данных
Теперь, когда мы увидели, как выглядит модуль, давайте посмотрим, что можно поместить внутрь модуля, еще раз взглянув на модуль тестового стенда. В Verilog есть в основном два типа типов данных:
- рег
- провод
57
тип данных используется для хранения значений, таких как переменная, а тип 64
просто аналогичен электрическому проводу, который должен постоянно двигаться. Обычно 70
используется для соединения между несколькими модулями и другими сигналами. 28
Задания
Verilog имеет три основных блока:
84 @ (условие ) | всегда выполняется при выполнении условия |
96 | выполняется только один раз, когда начинается симуляция |
109 [ЛЕВАЯ] =[ПРАВАЯ] | Значение LHS будет обновляться при каждом изменении RHS |
При написании Verilog следует помнить несколько правил:
115
может быть назначен только в129
и136
блоки147
может быть присвоено значение только через152
заявление- Если в initial/always несколько операторов блок, они должны быть завернуты в
160
32
Примечание следующее из приведенного выше примера:
- Поскольку есть несколько строк для
179
блокировать, начать и конец используются - Сигналы d, rst_b и clk назначаются в начальном блоке, поскольку они имеют тип
188
. - Код внутри начального блока будет выполнен в 0 нс, т. е. в начале моделирования.
- Поскольку для
191
нет условия блок, он будет работать как бесконечный цикл в C - # используется для обозначения временной задержки. #10 указывает симулятору увеличить время моделирования на 10 единиц.
201
будет переключать значение часов, а поскольку #10 ставится перед оператором, часы будут переключаться через каждые 10 единиц времени.215
это способ закончить симуляцию. В этом случае он будет работать 100 единиц времени и завершится.
Verilog