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 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')
| cnt | tx-Wert |
|---|---|
| 0 | 1 |
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 0 |
| 8 | 1 |
| 9 | 0 |
| 10 | 1 |
Was zu tun ist
- Füge einen Eingang namens
starthinzu - Füge einen Ausgang vom Typ reg namens
txhinzu - Setze im
initial-Blocktx = 1(im Ruhezustand high) - Ändere die Zählerlogik:
- Wenn
cnt == 0undstart == 1, setzecnt <= 1(Übertragung starten) - Wenn
cntzwischen 1 und 9 liegt, inkrementiere:cnt <= cnt + 1 - Wenn
cnt == 10, setze den Wert 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. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – einfache MathematikBitweise Operatoren7Zuweisungen und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-GrundelementeUND-, ODER- und NICHT-GatterXOR- und XNOR-GatterRückblick – Logikgatter-Schaltung10Entscheidungsfindung
If-AnweisungIf – ElseRückblick – Einfacher KomparatorCase-AnweisungCasex und CasezRückblick – ALU-Entwurf13Zeitsteuerung und Verzögerungen
Was sind Verzögerungen?GatterverzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Zeitsteuerung2Datentypen
Wire-TypReg-TypInteger und RealVektorenArraysParameterZusammenfassung – Signale deklarieren5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenSchiebeoperatorenVerkettungsoperatorBedingter OperatorRückblick – Operatoren-Herausforderung11Schleifen
For-SchleifeWhile-SchleifeWiederholungsschleifeEndlosschleifeAnweisung deaktivierenRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit fester BreiteZahlen ohne feste BreiteNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturInput- und Output-PortsInout-PortsModulinstanziierungPortzuordnung nach NamenPortzuordnung nach ReihenfolgeRückblick – Ein Modul erstellenÜbe selbstständig: Online-Verilog-Compiler