Menu
CoddyTech

Register Geser

Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 86 dari 90.

challenge icon

Tantangan

shift register menggeser data dari kiri ke kanan pada setiap tepi clock. Setiap bit berpindah ke posisi berikutnya.

Cara Kerja shift register 4-bit

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

Setelah 4 siklus clock, bit input pertama mencapai q3.

Antarmuka Module

PortArahLebarDeskripsi
clkinput1 bitSinyal clock
resetinput1 bitAtur ulang semua output ke 0
dinput1 bitInput data
q0output1 bitOutput flip-flop pertama
q1output1 bitOutput flip-flop kedua
q2output1 bitOutput flip-flop ketiga
q3output1 bitOutput flip-flop keempat

Tugasmu adalah melengkapi module di bawah ini.

Yang harus dilakukan:

  1. Saat reset, atur semua output ke 0
  2. Pada setiap tepi naik clock, geser data dari kiri ke kanan:
    1. q0 menerima d
    2. q1 menerima q0 lama
    3. q2 menerima q1 lama
    4. q3 menerima q2 lama

Coba sendiri

module shift_register (
  input clk,
  input reset,
  input d,
  output reg q0,
  output reg q1,
  output reg q2,
  output reg q3
);
  
  // TODO: Tambahkan always @(posedge clk or posedge reset)
  // Saat reset: q0<=0, q1<=0, q2<=0, q3<=0
  // Jika tidak: geser data: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online