Menu
Coddy logo textTech

Schieberegister

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

challenge icon

Aufgabe

Ein shift register (Schieberegister) verschiebt Daten bei jeder Taktflanke von links nach rechts. Jedes Bit bewegt sich an die nächste Position.

Funktionsweise eines 4-Bit-Schieberegisters

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 q2

Nach 4 Taktzyklen erreicht das erste Eingangsbit q3.

Modulschnittstelle

PortDirectionWidthDescription
clkinput1 BitClock-Signal
resetinput1 BitSetzt alle Ausgänge auf 0 zurück
dinput1 BitDateneingang
q0output1 BitErster Flip-Flop-Ausgang
q1output1 BitZweiter Flip-Flop-Ausgang
q2output1 BitDritter Flip-Flop-Ausgang
q3output1 BitVierter Flip-Flop-Ausgang

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

Was zu tun ist:

  1. Bei reset alle Ausgänge auf 0 setzen
  2. Bei jeder steigenden Taktflanke Daten von links nach rechts verschieben:
    1. q0 erhält d
    2. q1 erhält das alte q0
    3. q2 erhält das alte q1
    4. q3 erhält das alte 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 shiften: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Alle Lektionen in Grundlagen