Clock Generation
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 71 sur 90.
Une horloge est un signal qui bascule continuellement entre 0 et 1 à intervalles réguliers. Les horloges sont essentielles pour la logique séquentielle, comme les bascules et les compteurs.
Pourquoi générer un signal d’horloge
Dans les bancs d’essai, vous avez besoin d’un signal d’horloge pour tester les circuits séquentiels. Le signal d’horloge pilote le comportement des bascules, des registres et des machines à états.
Méthodes pour générer une horloge
| Méthode | Description |
|---|---|
always avec un délai de # | Méthode la plus courante |
Boucle forever | Méthode alternative |
Boucle repeat | Pour un nombre fixe de cycles |
Méthode 1 : Always Block avec délai
reg clk;
initial begin
clk = 0;
end
always #5 clk = ~clk;clk = 0à l’instant 0- Toutes les 5 unités de temps,
clkchange d’état
- Period = 10 unités de time
- Fréquence = 1/10 = 0.1 par unité de time
Méthode 2 : boucle infinie
reg clk;
initial begin
clk = 0;
forever begin
#5 clk = ~clk;
end
endMême résultat qu’avec la méthode always.
Méthode 3 : Répéter pendant un nombre fixe de cycles
reg clk;
initial begin
clk = 0;
repeat (10) begin
#5 clk = ~clk;
end
endGénère exactement 10 fronts d’horloge (5 cycles complets), puis s’arrête.
Défi
Ajoutez le code manquant pour générer une horloge qui bascule toutes les 4 unités de time (période = 8 unités de time).
À faire :
- Initialisez
clkà 0 autime0 à l’aide d’un blocinitial - Utilisez un bloc
alwaysavec un délai pour basculerclktoutes les 4 unités detime
Essayez vous-même
module clock_challenge;
reg clk;
// TODO: Étape 1 - Ajouter un bloc initial pour définir clk = 0
// TODO: Étape 2 - Ajouter un bloc always pour basculer clk toutes les 4 unités de temps
initial begin
$monitor("Time %0t: clk = %b", $time, clk);
#20;
$display("Clock generated for 20 time units");
$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