Bit-Zähler
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 87 von 90.
Aufgabe
In diesem Kapitel wirst du Schritt für Schritt einen UART-Transmitter bauen. UART steht für Universal Asynchronous Receiver-Transmitter. Es ist ein einfaches Hardware-Protokoll, das es zwei Geräten ermöglicht, über nur eine Leitung (zum Senden) und eine weitere Leitung (zum Empfangen) zu kommunizieren.
Stell es dir wie zwei Personen vor, die am Telefon sprechen – einer spricht (sendet), der andere hört zu (empfängt). UART sendet Daten Bit für Bit, mit Start- und Stopp-Bits, um den Anfang und das Ende jedes Bytes zu markieren.
Ein UART-Transmitter sendet 10 Bits: Start-Bit (1), Daten-Bits (8), Stopp-Bit (1). Um zu verfolgen, welches Bit wir gerade senden, benötigen wir einen Bit-Zähler, der von 0 bis 10 zählt.
Wie der Bit-Zähler funktioniert
- Beginne bei 0
- Erhöhe bei jedem Taktzyklus um 1
- Wenn er 10 erreicht, gehe zurück auf 0
- Wiederhole dies endlos
In dieser Aufgabe werden wir ihn noch nicht zurücksetzen: Wir werden ihn nur erhöhen.
Was zu tun ist:
- Erstelle ein Modul namens
uart_txmit:- Einem Eingang:
clk - Einem Ausgang:
cnt(4 Bits, Typreg)
- Einem Eingang:
- Innerhalb des Moduls:
- Setze
cntzu Beginn innerhalb eines initial-Blocks auf 0 - Füge einen
always @(posedge clk)-Block hinzu - Lasse
cntbei jeder Taktflanke um 1 ansteigen
- Setze
Probier es selbst
// TODO: Erstelle das Modul uart_tx mit dem Eingang clk und dem Ausgang cnt (4 Bits)
// TODO: Setze cnt zu Beginn innerhalb eines initial-Blocks auf 0
// TODO: Füge einen always @(posedge clk) Block hinzu
// TODO: Inkrementiere cntAlle 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