Schieberegister
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 86 von 90.
Aufgabe
Ein Schieberegister verschiebt Daten bei jeder Taktflanke von links nach rechts. Jedes Bit bewegt sich an die nächste Position.
Wie ein 4-Bit-Schieberegister funktioniert
Initial: q0=0, q1=0, q2=0, q3=0
Clock 1: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Clock 2: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2Nach 4 Taktzyklen erreicht das erste Eingangsbit q3.
Modulschnittstelle
| Port | Richtung | Breite | Beschreibung |
|---|---|---|---|
clk | input | 1 Bit | Taktsignal |
reset | input | 1 Bit | Setzt alle Ausgänge auf 0 zurück |
d | input | 1 Bit | Dateneingang |
q0 | output | 1 Bit | Ausgang des ersten Flip-Flops |
q1 | output | 1 Bit | Ausgang des zweiten Flip-Flops |
q2 | output | 1 Bit | Ausgang des dritten Flip-Flops |
q3 | output | 1 Bit | Ausgang des vierten Flip-Flops |
Ihre Aufgabe ist es, das folgende Modul zu vervollständigen.
Was zu tun ist:
- Bei
resetsetzen Sie alle Ausgänge auf 0 - Verschieben Sie bei jeder steigenden Taktflanke die Daten von links nach rechts:
q0erhältdq1erhält das alteq0q2erhält das alteq1q3erhält das alteq2
Probier es selbst
module shift_register (
input clk,
input reset,
input d,
output reg q0,
output reg q1,
output reg q2,
output reg q3
);
// TODO: always @(posedge clk or posedge reset) hinzufügen
// Bei reset: q0<=0, q1<=0, q2<=0, q3<=0
// Ansonsten: Daten verschieben: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2
endmodule
Alle 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