Menu
Coddy logo textTech

Shift Register

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

challenge icon

Aufgabe

Ein shift-Register verschiebt data bei jeder Clock-Flanke von links nach rechts. Jedes Bit bewegt sich zur nächsten Position.

Funktionsweise eines 4-Bit-shift-Registers

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 Clock-Zyklen erreicht das erste input-Bit q3.

Modulschnittstelle

PortRichtungBreiteBeschreibung
clkinput1 BitClock-Signal
resetinput1 BitAlle outputs auf 0 zurücksetzen
dinput1 Bitdata-Eingang
q0output1 BitAusgang des ersten Flip-Flops
q1output1 BitAusgang des zweiten Flip-Flops
q2output1 BitAusgang des dritten Flip-Flops
q3output1 BitAusgang des vierten Flip-Flops

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

Aufgabe:

  1. Bei reset alle outputs auf 0 setzen
  2. Bei jeder steigenden Clock-Flanke data von links nach rechts verschieben:
    1. q0 erhält d
    2. q1 erhält old q0
    3. q2 erhält old q1
    4. q3 erhält old 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: Füge always @(posedge clk or posedge reset) hinzu
  // Bei Reset: q0<=0, q1<=0, q2<=0, q3<=0
  // Sonst: Daten verschieben: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Alle Lektionen in Grundlagen

Übe selbstständig: Online-Verilog-Compiler