Menu
Coddy logo textTech

Встроенные примитивы вентилей

Часть раздела Основы путешествия по 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)
ANDand2 или более
ORor2 или более
NOTnot1
NANDnand2 или более
NORnor2 или более
XORxor2 или более
XNORxnor2 или более

Как работают вентильные примитивы

Когда вы пишете 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 (выражений).

challenge icon

Задание

Что нужно сделать:

  1. Добавьте правильный примитив вентиля, чтобы эта схема заработала. Модуль должен выводить результат логического И (AND) для входов a и b. Выходной порт уже имеет имя c.

Попробуйте сами

module gate_challenge (
  input a,
  input b,
  output c
);
  
  // TODO: Добавьте правильный примитив вентиля
  // Выход c должен быть a AND b

endmodule
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы