Built In Gate Primitives
Часть раздела Основы путешествия по Verilog на Coddy. Урок 39 из 90.
В Verilog есть встроенные gate primitives, которые позволяют описывать логические схемы с использованием настоящих обозначений gate. Это называется моделированием structural. Вы создаёте схемы, соединяя gate, точно так же, как при рисовании принципиальной схемы.
Gate primitive — это предопределённые ключевые слова, моделирующие базовые логические gates. Вместо записи выражения вроде assign out = a & b вы создаёте экземпляр gate:
and(out, a, b); // вентиль AND с выходом out, входами a и bОбщий синтаксис
gate_type (output, input1, input2, ...);- Первый аргумент всегда является output
- Следующие аргументы — это inputs (1 или больше, в зависимости от gate)
Доступные Gate-примитивы
| Тип Gate | Ключевое слово | Количество inputs |
|---|---|---|
| AND | and | 2 или более |
| OR | or | 2 или более |
| NOT | not | 1 |
| NAND | nand | 2 или более |
| NOR | nor | 2 или более |
| XOR | xor | 2 или более |
| XNOR | xnor | 2 или более |
Как работают примитивы Gate
Когда вы пишете and(out, a, b), Verilog создаёт вентиль AND, который непрерывно подаёт в out result операции a & b. Каждый раз, когда изменяется a или b, out немедленно обновляется — совсем как у настоящего вентиля.
Примитивы Gate в сравнении с непрерывным присваиванием
Оба метода создают одинаковое аппаратное обеспечение:
// Примитив вентиля
and(out, a, b);
// Непрерывное присваивание (тот же результат)
assign out = a & b;Gate primitives полезны, когда вы хотите описать схему как collection of gates (стиль structural). Непрерывное присваивание лучше подходит для behavioral style (выражений).
Задание
Что нужно сделать:
- Добавьте правильный примитив gate, чтобы эта схема работала. module should выдавать AND входов
aиb. Порт output уже названc.
Попробуйте сами
module gate_challenge (
input a,
input b,
output c
);
// TODO: Добавьте правильный примитив вентиля
// Выход c должен быть a AND b
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog