Menu
CoddyTech

Takterzeugung

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

Ein Taktsignal wechselt in regelmäßigen Abständen kontinuierlich zwischen 0 und 1. Taktsignale sind für sequenzielle Logik wie Flipflops und Zähler unverzichtbar.

Warum einen Takt erzeugen

In Testbenches brauchst du einen Takt, um sequenzielle Schaltungen zu testen. Der Takt steuert das Verhalten von Flipflops, Registern und Zustandsautomaten.

Methoden zur Erzeugung eines Takts

MethodeBeschreibung
always mit #-VerzögerungDie gebräuchlichste 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 zum Zeitpunkt 0
  • Alle 5 Zeiteinheiten wechselt clk seinen Zustand
  • Periode = 10 Zeiteinheiten
  • Frequenz = 1/10 = 0.1 pro Zeiteinheit

Methode 2: Endlosschleife

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 ein Taktsignal zu erzeugen, das alle 4 Zeiteinheiten umschaltet (Periode = 8 Zeiteinheiten).

Das ist zu tun:

  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

Probier es selbst

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