Menu
Coddy logo textTech

Clock Generation

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

Ein Taktsignal ist ein Signal, das in regelmäßigen Abständen kontinuierlich zwischen 0 und 1 wechselt. Taktsignale sind für sequentielle Logik wie Flip-Flops und Zähler unerlässlich.

Warum einen Takt erzeugen?

In Testbenches benötigst du einen Takt, um sequentielle Schaltungen zu testen. Der Takt steuert das Verhalten von Flip-Flops, Registern und Zustandsautomaten.

Methoden zum Erzeugen eines Takts

MethodeBeschreibung
always mit #-VerzögerungDie gängigste Methode
forever-SchleifeAlternative Methode
repeat-SchleifeFür eine feste Anzahl von cycles

Methode 1: always-Block mit Verzögerung

reg clk;

initial begin
  clk = 0;
end

always #5 clk = ~clk;
  • clk = 0 zum Zeitpunkt 0
  • Alle 5 Zeiteinheiten wechselt clk seinen 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: Für eine feste Anzahl von Zyklen wiederholen

reg clk;

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

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

challenge icon

Aufgabe

Füge den fehlenden Code hinzu, um eine Clock zu erzeugen, die alle 4 time units umschaltet (Period = 8 time units).

Was zu tun ist:

  1. Initialisiere clk bei time 0 mithilfe eines initial-Blocks auf 0
  2. Verwende einen always-Block mit einer Verzögerung, um clk alle 4 time units umzuschalten

Probier es selbst

module clock_challenge;
  reg clk;
  
  // TODO: Schritt 1 - Initial-Block hinzufügen, um clk = 0 zu setzen
  
  
  // TODO: Schritt 2 - Always-Block hinzufügen, 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

Übe selbstständig: Online-Verilog-Compiler