Menu
Coddy logo textTech

Сдвиговый регистр

Часть раздела Основы путешествия по Verilog на Coddy. Урок 86 из 90.

challenge icon

Задание

Регистр сдвига сдвигает данные слева направо на каждом фронте тактового сигнала. Каждый бит перемещается на следующую позицию.

Принцип работы 4-битного регистра сдвига

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

После 4 тактов первый входной бит достигает q3.

Интерфейс модуля

ПортНаправлениеРазрядностьОписание
clkвход1 битТактовый сигнал
resetвход1 битСброс всех выходов в 0
dвход1 битВход данных
q0выход1 битВыход первого триггера
q1выход1 битВыход второго триггера
q2выход1 битВыход третьего триггера
q3выход1 битВыход четвёртого триггера

Твоя задача — завершить приведённый ниже модуль.

Что нужно сделать:

  1. При reset установить все выходы в 0
  2. На каждом восходящем фронте тактового сигнала сдвигать данные слева направо:
    1. В q0 записывается d
    2. В q1 записывается старое значение q0
    3. В q2 записывается старое значение q1
    4. В q3 записывается старое значение q2

Попробуйте сами

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)
  // При сбросе: q0<=0, q1<=0, q2<=0, q3<=0
  // Иначе: сдвиг данных: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Все уроки раздела Основы

16Заключительные задания

4-битный счётчикПроектирование дешифратораСдвиговый регистр

Потренируйтесь самостоятельно: Онлайн-компилятор Verilog