Menu
Coddy logo textTech

State Machine

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

challenge icon

Aufgabe

Eine Zustandsmaschine ist eine Schaltung, die sich in einem von mehreren state befinden kann. Für UART haben wir für jedes bit unterschiedliche state: idle, start, Daten-bit 0-7 und stop. Der bit-Zähler (cnt) teilt uns mit, in welchem state wir uns befinden. Basierend auf cnt entscheiden wir, welchen Wert wir auf der tx-Leitung senden.

Du hast den bit-Zähler aus der vorherigen Lektion. Du musst ihn so ändern, dass er als UART-Sender funktioniert.

Zu sendende bit-Werte (für den Buchstaben 'A')

cnttx-Wert
01
10
21
30
40
50
60
70
81
90
101

Was zu tun ist

  1. Füge einen input namens start hinzu
  2. Füge einen output reg namens tx hinzu
  3. Setze im initial-Block tx = 1 (idle high)
  4. Ändere die Zählerlogik:
    • Wenn cnt == 0 und start == 1 gilt, setze cnt <= 1 (Übertragung starten)
    • Wenn cnt zwischen 1 und 9 liegt, erhöhe ihn: cnt <= cnt + 1
    • Wenn cnt == 10 gilt, setze ihn auf 0 zurück

Probier es selbst

module uart_tx (
  input clk,
  output reg [3:0] cnt
);

  initial begin
    cnt = 0;
  end

  always @(posedge clk) begin
      cnt <= cnt + 1;
  end

endmodule

Alle Lektionen in Grundlagen

Übe selbstständig: Online-Verilog-Compiler