Задержки вентилей
Часть раздела Основы путешествия по Verilog на Coddy. Урок 68 из 90.
На предыдущем уроке мы рассмотрели общие задержки, используемые, например, так: #10 a = b;. Они выжидают перед выполнением оператора.
В этом уроке мы рассмотрим задержки логических элементов, которые относятся к встроенным примитивам логических элементов, таким как and, or и not. Задержка логического элемента моделирует, сколько времени требуется аппаратному логическому элементу для формирования выходного сигнала после изменения его входов.
В реальном аппаратном обеспечении логические элементы не реагируют мгновенно. Существует небольшая задержка. При использовании встроенных примитивов логических элементов можно добавить задержку, чтобы смоделировать время распространения сигнала через логический элемент. Выход изменяется только после указанной задержки.
Разница между общей задержкой и задержкой gate
| Общая задержка | Задержка gate | |
|---|---|---|
| Синтаксис | #10 a = b; | and #5 (out, a, b); |
| Позиция | # перед оператором | # внутри примитива gate |
| Назначение | Ожидать перед выполнением | Моделировать время распространения сигнала через gate |
Синтаксис:
gate_type #(delay) (output, input1, input2, ...);#(delay) указывает, сколько единиц времени требуется gate для ответа.
Простой пример
and #5 (out, a, b);Этим AND-gate требуется 5 единиц времени, чтобы изменить свой output после изменения a или b.
Задержка gate с несколькими inputs
nand #8 (out, a, b, c, d); // 4-входовый NAND с задержкой 8 единиц времениВажные правила
| Правило | Объяснение |
|---|---|
| Задержка указывается после имени gate | and #5 (out, a, b) |
| Значение задержки выражается в единицах времени | На основе директивы timescale |
| Все inputs влияют на output | Любое изменение input запускает задержку |
| Не поддерживает синтез | Задержки gate используются только для симуляции |
Задание
Add отсутствующие задержки gate в этом модуле. Используй разные задержки для каждого gate.
Что нужно сделать:
- AND gate: задержка 5 time unit
- OR gate: задержка 3 time unit
- NOT gate: задержка 2 time unit
Попробуйте сами
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Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU13Синхронизация и задержки
Что такое задержкиЗадержки вентилейЗадержки присваиванияДиректива timescaleГенерация тактового сигналаПовторение — управление временем5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog