Так выглядит barrel shifter. Русскоязычное название - "устройство быстрого сдвига", хотя мне больше нравится "револьверный" или "барабанный сдвигатель" (в том смысле, что его содержимое крутится как патроны в барабане револьвера - сразу всё целиком). Несмотря на некую схожесть с регистром, это всё-таки комбинаторная логика. Реализовать её можно разными способами, я выбрал самый простой (как мне кааца) - решение "в лоб", на куче шинных буферов, включённых как эдакий огромный многоканальный мультиплексор.
Такой блок позволяет одной машинной инструкцией реализовать операции типа
(X<<b)
или (X>>b)
над знаковыми и беззнаковыми 32-битными числами, что весьма полезно и очень часто используется в современных процессорах.В каждой колонке - четыре восьмиразрядных буфера 74AC541, итого 32-битная шина. Они объединены в пять групп по три колонки в каждой - первая колонка в группе сдвигает вверх, вторая просто пропускает данные без изменений, третья сдвигает вниз. Мелкая логика под массивом буферов отвечает за перенос или обнуление знака (т.е. за арифметический либо логический сдвиг).
В первой группе сдвиг на 1 бит, во второй на 2 бита, в третьей на 4 бита, затем 8 и 16 бит соответственно. Итого, вся эта фиготень получает 32-битное значение, 5-битный индекс, два контрольных бита ("арифметический/логический сдвиг" и "вверх/вниз") и строб переключения выхода последней группы в Z-состояние. Время задержки распространения ожидается чуть больше, чем пятикратная задержка на одном буфере (для чипов серии 74AC будет порядка 25..30 нс, для 74HC всё гораздо печальнее).