Gate Delays
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 68 sur 90.
Dans la leçon précédente, nous avons abordé les délais généraux, utilisés comme #10 a = b;. Ils attendent avant d’exécuter une instruction.
Dans cette leçon, nous abordons les délais des portes, qui sont spécifiques aux primitives de porte intégrées comme and, or et not. Un délai de porte modélise le temps qu’une porte matérielle met à produire une sortie après la modification de ses entrées.
Dans le matériel réel, les portes ne réagissent pas instantanément. Il y a un court délai. Lorsque vous utilisez des primitives de porte intégrées, vous pouvez ajouter un délai pour simuler le temps de propagation de la porte. La sortie ne change qu’après le délai spécifié.
Différence entre le délai général et le délai de porte
| Délai général | Délai de porte | |
|---|---|---|
| Syntaxe | #10 a = b; | and #5 (out, a, b); |
| Position | # avant une instruction | # à l’intérieur de la primitive de porte |
| Objectif | Attendre avant l’exécution | Modéliser le temps de propagation de la porte |
Syntaxe :
gate_type #(delay) (output, input1, input2, ...);#(delay) indique combien d’unités de time la porte met à réagir.
Exemple simple
and #5 (out, a, b);Cette porte AND met 5 unités de temps à modifier sa sortie après que a ou b a changé.
Délai de porte avec plusieurs entrées
nand #8 (out, a, b, c, d); // NAND à 4 entrées avec un délai de 8 unités de tempsRègles importantes
| Règle | Explication |
|---|---|
| delay vient après le nom du gate | and #5 (out, a, b) |
| Valeur de delay en unités de time | Basée sur la directive timescale |
| Tous les inputs affectent output | Tout changement d'input déclenche le delay |
| Non synthétisable | Les delays de gate servent uniquement à la simulation |
Défi
Add les délais gate manquants à ce module. Utilisez des délais différents pour chaque gate.
À faire :
- AND gate : délai de 5 time unit
- OR gate : délai de 3 time unit
- NOT gate : délai de 2 time unit
Essayez vous-même
module gate_delay_challenge;
reg a, b;
wire and_out, or_out, not_out;
// TODO: Ajouter une porte AND avec un délai de 5 unités de temps (entrées a, b)
// TODO: Ajouter une porte OR avec un délai de 3 unités de temps (entrées a, b)
// TODO: Ajouter une porte NOT avec un délai de 2 unités de temps (entrée 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
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Operators 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 LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne