Gate Delays
Часть раздела Основы путешествия по 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Аппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования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 Design13Timing And Delays
What Are DelaysGate DelaysAssignment DelaysTimescale DirectiveClock GenerationRecap - Timing Control5Operators 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