Встроенные примитивы вентилей
Часть раздела Основы путешествия по Verilog на Coddy — урок 39 из 90.
В Verilog есть встроенные gate primitives, которые позволяют описывать логические схемы с использованием реальных символов вентилей. Это называется structural modeling — вы строите схемы, соединяя gates, подобно рисованию принципиальной схемы.
Примитивы gate — это предопределённые ключевые слова, которые моделируют базовые логические вентили. Вместо написания выражения вида assign out = a & b вы создаёте экземпляр вентиля:
and(out, a, b); // Логический элемент AND с выходом out, входами a и bОбщий синтаксис
gate_type (output, input1, input2, ...);- Первый аргумент — это всегда output
- Последующие аргументы — это inputs (1 или более, в зависимости от gate)
Доступные примитивы вентилей (Gate Primitives)
| Тип вентиля | Ключевое слово | Количество входов (inputs) |
|---|---|---|
| AND | and | 2 или более |
| OR | or | 2 или более |
| NOT | not | 1 |
| NAND | nand | 2 или более |
| NOR | nor | 2 или более |
| XOR | xor | 2 или более |
| XNOR | xnor | 2 или более |
Как работают вентильные примитивы
Когда вы пишете and(out, a, b), Verilog создает вентиль И, который непрерывно передает в out результат a & b. Всякий раз, когда a или b меняется, out обновляется немедленно — прямо как реальный вентиль.
Gate primitives против Continuous assignment
Оба метода создают одинаковую аппаратную схему:
// Примитив вентиля
and(out, a, b);
// Непрерывное присваивание (тот же результат)
assign out = a & b;Gate primitive полезны, когда вы хотите описать схему как коллекцию gates (стиль structural). Continuous assignment лучше подходит для стиля behavioral (выражений).
Задание
Что нужно сделать:
- Добавьте правильный примитив вентиля, чтобы эта схема заработала. Модуль должен выводить результат логического И (AND) для входов
aиb. Выходной порт уже имеет имяc.
Попробуйте сами
module gate_challenge (
input a,
input b,
output c
);
// TODO: Добавьте правильный примитив вентиля
// Выход c должен быть a AND b
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogHardware против SoftwareУровни абстракции проектированияВаш первый модульКомментарии4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияОператоры сравненияПовторение: простая математикаПобитовые операторы7Оператор Assign и логические вентили
Непрерывное присваиваниеAssign с операторамиВстроенные примитивы вентилейВентили AND, OR, NOTВентили XOR, XNORИтоги: Схемы на логических вентилях10Принятие решений
Оператор ifКонструкция if - elseПовторение: простой компараторОператор caseОператоры casex и casezПовторение: проектирование ALU5Операторы. Часть 2
Логические операторыОператоры редукцииОператоры сдвигаОператор конкатенацииУсловный операторПовторение — Испытание по операторам3Системы счисления
Двоичное представлениеЧисла с заданным размеромЧисла без заданного размераОтрицательные числаСпециальные значения X и ZИтоги — форматы чисел6Модули
Структура модуляВходные и выходные портыПорты InoutИнстанцирование модуляПодключение портов по имениПодключение портов по порядкуИтоги: создание модуля9Процедурные блоки
Блок alwaysБлок initialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеИтоги: always против initial