Menu
Coddy logo textTech

Shift Register

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 86 / 90.

challenge icon

Görev

Bir shift register, her clock kenarında data değerini soldan sağa kaydırır. Her bit bir sonraki konuma ilerler.

4 bitlik shift register nasıl çalışır?

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

4 clock döngüsünden sonra ilk input biti q3'e ulaşır.

Module arayüzü

PortYönGenişlikAçıklama
clkinput1 bitClock sinyali
resetinput1 bitTüm output değerlerini 0'a sıfırla
dinput1 bitData input'u
q0output1 bitİlk flip-flop output'u
q1output1 bitİkinci flip-flop output'u
q2output1 bitÜçüncü flip-flop output'u
q3output1 bitDördüncü flip-flop output'u

Aşağıdaki module'ü tamamlama görevin var.

Yapılacaklar:

  1. reset durumunda tüm output değerlerini 0 yap
  2. Her yükselen clock kenarında data değerini soldan sağa kaydır:
    1. q0, d değerini alır
    2. q1, old q0 değerini alır
    3. q2, old q1 değerini alır
    4. q3, old q2 değerini alır

Kendin dene

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) ekle
  // Reset'te: q0<=0, q1<=0, q2<=0, q3<=0
  // Aksi halde: veriyi kaydır: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi