Читайте также:
|
|
(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.
Дата добавления: 2015-09-11; просмотров: 139 | Поможем написать вашу работу | Нарушение авторских прав |