Menu
Coddy logo textTech

Schieberegister

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

challenge icon

Aufgabe

Ein Schieberegister verschiebt Daten bei jeder Taktflanke von links nach rechts. Jedes Bit bewegt sich zur nächsten Position.

Funktionsweise eines 4-Bit-Schieberegisters

Initial: q0=0, q1=0, q2=0, q3=0
Each clock: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Shifting in d = 1, 0, 1, 0:
Clock 1 (d=1): q0=1, q1=0, q2=0, q3=0
Clock 2 (d=0): q0=0, q1=1, q2=0, q3=0
Clock 3 (d=1): q0=1, q1=0, q2=1, q3=0
Clock 4 (d=0): q0=0, q1=1, q2=0, q3=1

Nach 4 Taktzyklen erreicht das erste Eingangsbit q3.

Modulschnittstelle

PortRichtungBreiteBeschreibung
clkEingang1 BitTaktsignal
resetEingang1 BitAlle Ausgänge auf 0 zurücksetzen
dEingang1 BitDateneingang
q0Ausgang1 BitAusgang des ersten Flip-Flops
q1Ausgang1 BitAusgang des zweiten Flip-Flops
q2Ausgang1 BitAusgang des dritten Flip-Flops
q3Ausgang1 BitAusgang des vierten Flip-Flops

Deine Aufgabe ist es, das folgende Modul zu vervollständigen.

Aufgabe:

  1. Setze bei reset alle Ausgänge auf 0
  2. Verschiebe bei jeder steigenden Taktflanke die Daten von links nach rechts:
    1. q0 erhält d
    2. q1 erhält den alten Wert von q0
    3. q2 erhält den alten Wert von q1
    4. q3 erhält den alten Wert von q2

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: Add always @(posedge clk or posedge reset)
  // Bei Reset: q0<=0, q1<=0, q2<=0, q3<=0
  // Sonst: Daten schieben: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Alle Lektionen in Grundlagen

Übe selbstständig: Online-Verilog-Compiler