Menu
Coddy logo textTech

Zustandsautomat

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 Zuständen befinden kann. Für UART haben wir für jedes Bit unterschiedliche Zustände: idle, start, Datenbits 0–7 und stop. Der Bitzähler (cnt) teilt uns mit, in welchem Zustand wir uns befinden. Abhängig von cnt entscheiden wir, welchen Wert wir auf der Leitung tx senden.

Den Bitzähler aus der vorherigen Lektion hast du bereits. Du musst ihn so ändern, dass er als UART-Sender funktioniert.

Zu sendende Bitwerte (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 Eingang namens start hinzu
  2. Füge einen Ausgang vom Typ reg namens tx hinzu
  3. Setze im initial-Block tx = 1 (im Ruhezustand high)
  4. Ändere die Zählerlogik:
    • Wenn cnt == 0 und start == 1, setze cnt <= 1 (Übertragung starten)
    • Wenn cnt zwischen 1 und 9 liegt, inkrementiere: cnt <= cnt + 1
    • Wenn cnt == 10, setze den Wert 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