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
| Methode | Beschreibung |
|---|---|
always mit #-Verzögerung | Die gängigste Methode |
forever-Schleife | Alternative Methode |
repeat-Schleife | Fü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 = 0zum Zeitpunkt 0- Alle 5 Zeiteinheiten wechselt
clkseinen 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
endDasselbe 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
endErzeugt genau 10 Taktflanken (5 vollständige Zyklen) und stoppt dann.
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:
- Initialisiere
clkbei time 0 mithilfe einesinitial-Blocks auf 0 - Verwende einen
always-Block mit einer Verzögerung, umclkalle 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
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operators 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 LogicÜbe selbstständig: Online-Verilog-Compiler