Zustandsautomat
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 88 von 90.
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')
| cnt | tx value |
|---|---|
| 0 | 1 |
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 0 |
| 8 | 0 |
| 9 | 1 |
| 10 | 1 |
Was zu tun ist
- Fügen Sie einen Eingang namens
starthinzu - Fügen Sie ein Output-Reg namens
txhinzu - Setzen Sie im
initial-Blocktx = 1(Idle High) - Ändern Sie die Zählerlogik:
- Wenn
cnt == 0undstart == 1, setzen Siecnt <= 1(Übertragung starten) - Wenn
cntzwischen 1 und 9 liegt, inkrementieren Sie:cnt <= cnt + 1 - Wenn
cnt == 10, setzen Sie ihn auf0zurück
- Wenn
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
endmoduleAlle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen