Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
register_counters.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
993.79 Кб
Скачать

3. Сдвигающие регистры

Сдвигающий регистр (shift register) это n-разрядный регистр, содержимое которого можно сдвигать на каждом такте на несколько разрядов.

Сдвиг может осуществляться вправо (в сторону младших разрядов) и влево (в сторону старших разрядов).

Сдвигающий регистр может быть использован следующим образом:

  • для преобразования входного последовательного кода в выходной параллельный код

  • для преобразования входного параллельного кода в выходной последовательный код

  • для выполнения микрооперации сдвига

Микрооперации сдвига используются при выполнении таких операций, как умножение, деление, возведение в степень, операции сдвига.

3.1.Схема 4-битного регистра сдвига вправо на один разряд приведена на рис.28.

Выход предыдущего разряда подается на информационный вход следующего разряда.

Рис.28

RIN – вход последовательного ввода информации в регистр.

Таблица функционирования регистра (Таб.9).

Таб.9

Такт

RIN

q1 q2 q3 q4

t 0

1

0 1 1 0

t 1

0

1 0 1 1

t 0

1

0 1 0 1

t 0

1

1 0 1 0

t 0

0

0 1 1 0

t 0

0

0 0 1 1

t 0

1

0 0 0 1

3.2. Схема 4-разрядного сдвигаающего влево регистра представлена на рис. 29. Выход следующего разряда подается на информационный вход предыдущего .

Рис. 29

LIN – вход последовательного ввода информации в регистр.

Таблица функционирования регистра (Таб.10).

Таб.10

Такт

q1 q2 q3 q4

LIN

t 0

0 1 1 0

1

t 1

1 1 0 1

0

t 0

1 0 1 0

1

t 0

0 1 0 1

1

t 0

1 0 1 1

0

t 0

0 1 1 0

0

t 0

1 1 0 0

1

У регистра с последовательным вводом и параллельным выводом имеются выходы со всех разрядов хранимых в нем битов.

Описание n-разрядного сдвигающего регистра со входом параллельной синхронной загрузки на Verilog.

module shift_reg(data, load, rin,clk,q);

parameter n=16;

input [n-1:0] data;

input clk, load, rin;

output [n-1:0] q;

integer i;

always @(posedge clk )

if (load) q<=data;

else begin

for(i=0; i<n-1; i=i+1)

q[i] =q[i+1];

q[n-1]<=rin;

end

endmodule

В данном примере операция сдвига описана с помощью оператора цикла for.

3 .3. Схема реверсивного 3-разрядного регистра сдвига приведена на рис.30.

Рис. 30

В данной схеме имеются связи триггеров с обоими соседними разрядами. Одновременная подача разрешения сдвига вправо и влево запрещена. При одновременной подаче нулей на входы разрешения сдвига вправо и влево, а также нулей на входы последовательного ввода информации содержимоe регистра устанавливается в нуль.

RIN – вход для последовательного ввода информации при сдвиге вправо. Out_R – выход для последовательного вывода информации при сдвиге вправо.

LIN– вход для последовательного ввода информации при сдвиге влево. Out_L – выход для последовательного вывода информации при сдвиге влево.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]