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 verschiedene Zustände für jedes Bit: Idle (Leerlauf), Start, Datenbits 0-7 und Stop. Der Bit-Zähler (cnt) sagt uns, in welchem Zustand wir uns befinden. Basierend auf cnt entscheiden wir, welchen Wert wir auf der tx-Leitung senden.

Sie haben den Bit-Zähler aus der vorherigen Lektion. Sie müssen ihn so modifizieren, dass er als UART-Sender funktioniert.

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

cnttx value
01
10
21
30
40
50
60
70
80
91
101

Was zu tun ist

  1. Fügen Sie einen Eingang namens start hinzu
  2. Fügen Sie ein Output-Reg namens tx hinzu
  3. Setzen Sie im initial-Block tx = 1 (Idle High)
  4. Ändern Sie die Zählerlogik:
    • Wenn cnt == 0 und start == 1, setzen Sie cnt <= 1 (Übertragung starten)
    • Wenn cnt zwischen 1 und 9 liegt, inkrementieren Sie: cnt <= cnt + 1
    • Wenn cnt == 10, setzen Sie 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