Menu
Coddy logo textTech

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éthodeDescription
always avec un délai de #Méthode la plus courante
Boucle foreverMéthode alternative
Boucle repeatPour 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, clk change 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
end

Mê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
end

Génère exactement 10 fronts d’horloge (5 cycles complets), puis s’arrête.

challenge icon

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 :

  1. Initialisez clk à 0 au time 0 à l’aide d’un bloc initial
  2. Utilisez un bloc always avec un délai pour basculer clk toutes les 4 unités de time

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
endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Verilog en ligne