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 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 q2

Nach 4 Taktzyklen erreicht das erste Eingangsbit q3.

Modulschnittstelle

PortRichtungBreiteBeschreibung
clkinput1 BitTaktsignal
resetinput1 BitSetzt alle Ausgänge auf 0 zurück
dinput1 BitDateneingang
q0output1 BitAusgang des ersten Flip-Flops
q1output1 BitAusgang des zweiten Flip-Flops
q2output1 BitAusgang des dritten Flip-Flops
q3output1 BitAusgang des vierten Flip-Flops

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

Was zu tun ist:

  1. Bei reset setzen Sie alle Ausgänge auf 0
  2. Verschieben Sie bei jeder steigenden Taktflanke die Daten von links nach rechts:
    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: 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