Menu
Coddy logo textTech

Zustandsautomat

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

challenge icon

Aufgabe

Eine Zustandscodierung (State Machine) 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, start, Datenbits 0-7 und stop. Der Bit-Zähler (cnt) gibt an, in welchem Zustand wir uns befinden. Basierend auf cnt entscheiden wir, welcher Wert auf der tx-line gesendet wird.

Sie haben den Bit-Zähler aus der vorherigen Lektion. Sie müssen ihn anpassen, damit er als UART-Transmitter funktioniert.

Zu sendende Bitwerte (für den Buchstaben 'A')

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

Was zu tun ist

  1. Fügen Sie einen input namens start hinzu
  2. Fügen Sie einen output reg namens tx hinzu
  3. Setzen Sie im initial-Block tx = 1 (idle HIGH)
  4. Ändern Sie die Zähler-logic:
    • Wenn cnt == 0 und start == 1, setzen Sie cnt <= 1 (Start der Übertragung / transmitting)
    • Wenn cnt zwischen 1 und 9 liegt, inkrementieren Sie: cnt <= cnt + 1
    • Wenn cnt == 10, führen Sie einen reset auf 0 aus

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