Menu
Coddy logo textTech

Takterzeugung

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 71 von 90.

Ein Clock-Signal (Uhrsignal) ist ein Signal, das kontinuierlich in regelmäßigen Abständen zwischen 0 und 1 wechselt. Clocks sind essenziell für sequentielle Logik wie Flip-Flops und Zähler.

Warum ein Clock-Signal erzeugen

In Testbenches benötigen Sie ein Clock-Signal, um sequentielle Schaltungen zu testen. Das Clock-Signal steuert das Verhalten von Flip-Flops, Registern und Zustandsautomaten.

Methoden zur Erzeugung eines Takts (Clock)

MethodeBeschreibung
always mit #-VerzögerungHäufigste Methode
forever-SchleifeAlternative Methode
repeat-SchleifeFür eine feste Anzahl von Zyklen

Methode 1: always block mit Verzögerung

reg clk;

initial begin
  clk = 0;
end

always #5 clk = ~clk;
  • clk = 0 bei Zeit 0
  • Alle 5 Zeiteinheiten wechselt clk den Zustand
  • Period = 10 time units
  • Frequenz = 1/10 = 0.1 pro time unit

Methode 2: Forever-Schleife

reg clk;

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end

Dasselbe Ergebnis wie bei der always-Methode.

Methode 3: Repeat für eine feste Anzahl von Zyklen

reg clk;

initial begin
  clk = 0;
  repeat (10) begin
    #5 clk = ~clk;
  end
end

Erzeugt genau 10 Takflanken (5 vollständige Zyklen) und stoppt dann.

challenge icon

Aufgabe

Füge den fehlenden Code hinzu, um einen clk-Takt zu erzeugen, der alle 4 Zeiteinheiten umschaltet (Period = 8 Zeiteinheiten).

Was zu tun ist:

  1. Initialisiere clk zum Zeitpunkt 0 mit einem initial-Block auf 0
  2. Verwende einen always-Block mit einer Verzögerung, um clk alle 4 Zeiteinheiten umzuschalten (toggle)

Probier es selbst

module clock_challenge;
  reg clk;
  
  // TODO: Schritt 1 - Füge einen initial-Block hinzu, um clk = 0 zu setzen
  
  
  // TODO: Schritt 2 - Füge einen always-Block hinzu, um clk alle 4 Zeiteinheiten umzuschalten
  

  initial begin
    $monitor("Time %0t: clk = %b", $time, clk);
    #20;
    $display("Clock generated for 20 time units");
    $finish;
  end
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen