Задержки вентилей
Часть раздела Основы путешествия по Verilog на Coddy — урок 68 из 90.
В предыдущем уроке мы рассмотрели общие задержки, используемые как #10 a = b; — они ожидают перед выполнением инструкции.
В этом уроке мы рассмотрим задержки вентилей, которые характерны для встроенных примитивов вентилей, таких как and, or и not. Задержка вентиля моделирует время, необходимое аппаратному вентилю для формирования выходного сигнала после изменения его входных сигналов.
В реальном оборудовании вентили не срабатывают мгновенно — существует небольшая задержка. При использовании встроенных примитивов вентилей вы можете добавить задержку, чтобы имитировать время распространения сигнала в вентиле. Выходное значение изменяется только по истечении указанной задержки.
Разница между общей задержкой и задержкой вентиля
| Общая задержка (General Delay) | Задержка вентиля (Gate Delay) | |
|---|---|---|
| Синтаксис | #10 a = b; | and #5 (out, a, b); |
| Позиция | # перед оператором | # внутри примитива вентиля |
| Назначение | Ожидание перед выполнением | Моделирование времени распространения сигнала в вентиле |
Синтаксис:
gate_type #(delay) (output, input1, input2, ...);Параметр #(delay) определяет, сколько единиц времени требуется вентилю для срабатывания.
Простой пример
and #5 (out, a, b);Этому вентилю И требуется 5 единиц времени, чтобы изменить состояние своего выхода после изменения a или b.
Задержка вентиля с несколькими входами
nand #8 (out, a, b, c, d); // 4-входовый И-НЕ с задержкой в 8 единиц времениВажные правила
| Правило | Объяснение |
|---|---|
| Задержка указывается после имени вентиля | and #5 (out, a, b) |
| Значение задержки в единицах времени | На основе директивы timescale |
| Все входы влияют на выход | Любое изменение входа инициирует задержку |
| Не синтезируется | Задержки вентилей предназначены только для симуляции |
Задание
Добавьте недостающие задержки вентилей в этот модуль. Используйте разные задержки для каждого вентиля.
Что нужно сделать:
- Вентиль AND: задержка 5 единиц времени
- Вентиль OR: задержка 3 единицы времени
- Вентиль NOT: задержка 2 единицы времени
Шпаргалка
Задержки вентилей моделируют время распространения сигнала во встроенных примитивах вентилей.
Синтаксис:
gate_type #(delay) (output, input1, input2, ...);Примеры:
and #5 (out, a, b); // Вентиль AND, задержка 5 единиц времени
or #3 (out, a, b); // Вентиль OR, задержка 3 единицы времени
not #2 (out, a); // Вентиль NOT, задержка 2 единицы времени
nand #8 (out, a, b, c, d); // 4-входовый NAND, задержка 8 единиц времениКлючевые моменты:
#ставится после имени вентиля, перед списком портов- Любое изменение входного сигнала запускает задержку перед обновлением выхода
- Задержки вентилей предназначены только для симуляции — они не синтезируемы
Попробуйте сами
module gate_delay_challenge;
reg a, b;
wire and_out, or_out, not_out;
// TODO: Добавьте вентиль AND с задержкой 5 единиц времени (входы a, b)
// TODO: Добавьте вентиль OR с задержкой 3 единицы времени (входы a, b)
// TODO: Добавьте вентиль NOT с задержкой 2 единицы времени (вход a)
initial begin
$monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b",
$time, a, b, and_out, or_out, not_out);
a = 1; b = 1;
#10 $finish;
end
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogHardware против SoftwareУровни абстракции проектированияВаш первый модульКомментарии4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияОператоры сравненияПовторение: простая математикаПобитовые операторы7Оператор Assign и логические вентили
Непрерывное присваиваниеAssign с операторамиВстроенные примитивы вентилейВентили AND, OR, NOTВентили XOR, XNORИтоги: Схемы на логических вентилях10Принятие решений
Оператор ifКонструкция if - elseПовторение: простой компараторОператор caseОператоры casex и casezПовторение: проектирование ALU13Тайминг и задержки
Что такое задержкиЗадержки вентилейЗадержки в присваиванияхДиректива TimescaleГенерация тактового сигналаИтоги — управление таймингом5Операторы. Часть 2
Логические операторыОператоры редукцииОператоры сдвигаОператор конкатенацииУсловный операторПовторение — Испытание по операторам3Системы счисления
Двоичное представлениеЧисла с заданным размеромЧисла без заданного размераОтрицательные числаСпециальные значения X и ZИтоги — форматы чисел6Модули
Структура модуляВходные и выходные портыПорты InoutИнстанцирование модуляПодключение портов по имениПодключение портов по порядкуИтоги: создание модуля9Процедурные блоки
Блок alwaysБлок initialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеИтоги: always против initial