- •1.Регистры
- •2. Счетчики
- •2.1 Классификация счетчиков
- •Двоичные счетчики
- •Последовательные (асинхронные счетчики)
- •2.3. Параллельные счетчики
- •2.4.Синтез двоичного реверсивного счетчика
- •2.5. Счетчик с асинхронной загрузкой параллельного кода
- •Описание 8-битного реверсивного счетчика на Verilog
- •Построение счетчика с заданным модулем счета
- •Описание счетчика на Verilog
- •Описание счетчика с модулем счета 5 на Verilog
- •3. Сдвигающие регистры
- •3.4.Сдвигающие регистры, реализованные в виде ис средней степени интеграции
- •Режимы работы сдвигающего регистра определяются комбинацией значений на управляющих входах микросхемы s1, s0. (Таб. 11 )
- •3.5.Устройство быстрого сдвига
- •4. Счетчики на сдвигающих регистраx
- •4.1 Кольцевые счетчики (Ring Counters)
- •4.2. Счетчик Джонсона
- •Полиномиальные счетчики
- •4.3.1. Некоторые определения и понятия из высшей алгебры
- •4.4. Генератор элементов поля Галуа (Galois lfsr)
- •4.8. Сравнение lfsr
- •1.Описание lfsr Галуа на Verilog
- •2. Описание lfsr Fibonacci на Verilog
- •4.9. Загрузка начального состояния в lfsr
3.4.Сдвигающие регистры, реализованные в виде ис средней степени интеграции
Чаще всего регистры сдвига применяются для преобразования последовательных данных в параллельный формат, а также для обратного преобразования.
Самый распространенный пример преобразования – цифровая телефония.
Распространенной схемой сдвига является микросхема 74x194. Это универсальный 4-разрядный сдвигающий вправо/влево (реверсивный - bidirectional) регистр с параллельным вводом и параллельным выводом информации. Условное обозначение и таблица истинности приведены на рис. 31.
Режимы работы сдвигающего регистра определяются комбинацией значений на управляющих входах микросхемы s1, s0. (Таб. 11 )
Рис.31
Таблица истинности IC 74x 194 Taб.11
Входы |
Следующее состояние |
Режим |
CLK R S1 S0 DR DL D3…D0 |
Q3 Q2 Q1 Q0 |
|
х 0 х х х х х … х |
0 0 0 0 |
Сброс |
1 0 0 х х х … x |
Q3Last Q2Last Q1LastQ0Last |
Хранение |
1 0 1 DR x x … x |
RIN Q3 Q2 Q1 |
Сдвиг вправо |
1 1 0 x DL x … x |
Q2 Q1 Q0 LIN |
Сдвиг влево |
1 1 1 x x D3…D0 |
D3 D2 D1 D0 |
Параллельная загрузка |
Рис. 32
Описание сдвигающего регистра, подобного IC 74x 194, на Verilog
module shift_reg_bidirect (clock, s1,s0, din, q, reset, dr,dl);
input clock, reset, s1, s0, rin, lin;
input [3:0] din;
output q;
reg [0:7] q;
always @ (posedge clock or negedge reset)
begin if (! reset )
q = 4‘d 0;
else case ({s1, s0})
2 ‘b00: q<=q ;
2 ‘b01: q<= {rin, q[3:1]};
2 ‘b10: q<= {q[2:0], lin};
2 ‘b11: q<= din;
endcase
end
endmodule
3.5.Устройство быстрого сдвига
(Barrel Shifter)
Устройство быстрого сдвига (Barrel shifter) представляет собой комбинационную логическую схему с n входами данных, n выходами данных и несколькими управляющими входами, сигналы на которых задают сдвиг между данными на входе и данными на выходе.
Параметры устройства сдвига: направление сдвига, (влево или вправо), тип сдвига (циклический, арифметический или логический) и величина сдвига (обычно от 0 до n-1 разрядов, но иногда от 1 до n разрядов).
Предположим, что требуется построить 8-разрядное устройство быстрого сдвига. Самый очевидный подход – построение схемы с помощью восьми 8-входовых мультиплексоров.
Построение схемы циклического сдвига 8-разрядного входного кода вправо на число разрядов 0,1,2,3,4,5,6,7.
Входной код – q7 q6 q5 q4 q3 q2 q1 q0 , выходной код - y7 y6 y5 y4 y3 y2 y1 y0.
Таблица истинности (Таб.12)
Таб.12
S2S1S0 |
y7 y6 y5 y4 y3 y2 y1 y0 |
0 0 0 |
q7 q6 q5 q4 q3 q2 q1 q0 |
0 0 1 |
q0 q7 q6 q5 q4 q3 q2 q1 |
0 1 0 |
q1 q0 q7 q6 q5 q4 q3 q2 |
0 1 1 |
q2 q1 q0 q7 q6 q5 q4 q3 |
1 0 0 |
q3 q2 q1 q0 q7 q6 q5 q4 |
1 0 1 |
q4 q3 q2 q1 q0 q7 q6 q5 |
1 1 0 |
q5 q4 q3 q2 q1 q0 q7 q6 |
1 1 1 |
q6 q5 q4 q3 q2 q1q0 q7 |
Схема сдвига приведена на рис.33.
На управляющие входы мультиплексоров (S2,S1, S0) подается трехбитный код, задающий величину сдвига (число разрядов, на которое производится сдвиг кода – от 0 до 7).
Данная схема обеспечивает как сдвиг вправо, так и сдвиг влево.
Для сдвига влево на некоторое число разрядов (например на 5 разрядов), на входы S2,S1,S0 нужно подавать 3 (т.е дополнение до числа 8 константы сдвига).
С увеличением числа разрядов сложность схемы возрастает, т.к. возрастает число входов мультиплексора. Используя каскадное соединение мультиплексоров с числом входов 2 или 4 можно упростить схему, но при этом увеличивается задержка распространения сигнала от входа к выходу.
Рис. 33
Для построения схемы логического сдвига вправо на число разрядов от 0 до 7, требуется реализовать следующую таблицу (Таб.13).
Таб.13
S2S1S0 |
y7 y6 y5 y4 y3 y2 y1 y0 |
0 0 0 |
q7 q6 q5 q4 q3 q2 q1 q0 |
0 0 1 |
0 q7 q6 q5 q4 q3 q2 q1 |
0 1 0 |
0 0 q7 q6 q5 q4 q3 q2 |
0 1 1 |
0 0 0 q7 q6 q5 q4 q3 |
1 0 0 |
0 0 0 0 q7 q6 q5 q4 |
1 0 1 |
0 0 0 0 0 q7 q6 q5 |
1 1 0 |
0 0 0 0 0 0 q7 q6 |
1 1 1 |
0 0 0 0 0 0 0 q7 |
Мультиплексор MUX7: на входах от 1 до 7 должны быть нули.
Мультиплексор MUX6: на входах от 2 до 7 должны быть нули.
Мультиплексор MUX5: на входах от 3 до 7 должны быть нули.
Мультиплексор MUX4: на входах от 4 до 7 должны быть нули.
Мультиплексор MUX3: на входах от 5 до 7 должны быть нули.
Мультиплексор MUX2: на входах 6, 7 должны быть нули.
Мультиплексор MUX1: на входе 7 должен быть нуль.
Для того, чтобы получить схему арифметического сдвига вправо на число разрядов от 0 до 7, требуется реализовать следующую таблицу (Таб.14).
Крайний слева разряд является знаковым разрядом числа (q7).
Таб.14
S2S1S0 |
y7 y6 y5 y4 y3 y2 y1 y0 |
0 0 0 |
q7 q6 q5 q4 q3 q2 q1 q0 |
0 0 1 |
q7 q7 q6 q5 q4 q3 q2 q1 |
0 1 0 |
q7 q7 q7 q6 q5 q4 q3 q2 |
0 1 1 |
q7 q7 q7 q7 q6 q5 q4 q3 |
1 0 0 |
q7 q7 q7 q7 q7 q6 q5 q4 |
1 0 1 |
q7 q7 q7 q7 q7 q7 q6 q5 |
1 1 0 |
q7 q7 q7 q7 q7 q7 q7 q6 |
1 1 1 |
q7 q7 q7 q7 q7 q7 q7 q7 |
На все входы мультиплексоров, на которые подаются нули, нужно подать знаковый разряд (в данном случае это q7).
Операция арифметического сдвига вправо некоторого числа A на число рарядов k соответствует операции деления A на 2к.
Операция арифметического сдвига влево соответствует делению числа A на 2k.
