Сдвигатель реализует полный набор функций сдвига 16-разрядных данных с 32-разрядным результатом. Эти функции включают арифметический, логический сдвиг и функцию нормализации. Сдвигатель также обеспечивает нахождение порядка и мантиссы для блока чисел. Эти базовые функции могут быть скомбинированы для преобразования форматов чисел любой сложности, включая их представление с плавающей запятой. Структурная схема вычислительного блока сдвигателя приведена на рисунке 1.
Рисунок 1. Структурная схема сдвигателя данных сигнальных процессоров семейства ADSP-2100
Сдвигатель может быть разделен на следующие блоки: сдвигающая матрица, логика элементов побитового "ИЛИ"/"Передача без изменения", устройство вычисления порядка числа и устройство сравнения порядков чисел.
Сдвигающая матрица представляет собой 16×32 циклический сдвигатель. На него поступают 16-разрядные числа и сдвигатель может разместить эти биты в любом месте 32-разрядного выходного числа вплоть до полного выдвижения их за пределы области выходного результата. Это дает 49 возможных мест размещения входных бит в 32-разрядном поле выходного числа. Положение входных бит на выходе сдвигателя определяется управляющим кодом (C) и сигналом HI/LO (сдвиг вверх/вниз).
Сдвигающая матрица и связанная с ней логика окружены набором регистров. Входной регистр сдвигателя SI подключен ко входу сдвигающей матрицы и устройству вычисления порядка числа. Шестнадцатиразрядный регистр SI доступен по записи и чтению по шине DMD. Сдвигающая матрица и вычислитель порядка числа могут также получать данные из регистров AR, MR или SR по шине результата (R-шине). Регистр результата SR 16-разрядный, поэтому он разделен на две 16-разрядных секции SR0 и SR1. Регистры SR0 и SR1 могут быть записаны по шине DMD и считаны как по шине DMD, так и по шине результата R-шине. Регистр SR может быть также подключен к логика элементов побитового "ИЛИ" для осуществления операций сдвига удвоенной точности.
Регистр SE (“shifter exponent”) это 8-разрядный регистр, предназначенный для хранения порядка числа при его преобразовании к формату с плавающей запятой и обратно. Регистр SE доступен для записи и чтения младшими 8 битами шины данных памяти данных DMD. В этом регистре хранится 8-разрядный дополнительный код в формате 8.0.
Регистр SB (“shifter block”) применяется при блочных операциях с плавающей запятой, где он содержит значение порядка для блока чисел, когда этот регистр содержит число разрядов, на которое должны быть сдвинуты все числа для нормализации самого большого значения в блоке. Регистр SB 5-разрядный, он хранит самое последнее значение порядка блока. Регистр SB доступен для записи и чтения младшими 5 битами шины данных памяти данных DMD. В этом регистре хранится 5-разрядный дополнительный код в формате 5.0.
При считывании значений из регистров SE и SB по шине данных, они приводятся к 16-разрядному формату при помощи аппаратной операции расширения знака.
Любой из регистров SI, SE или SB может быть считан и записан в течении одного машинного цикла. Регистры читаются в начале машинного цикла, а записываются в конце этого же цикла. При считывании любого из регистров читается число, записанное в него в конце предыдущего цикла. Новый результат вычислений, записанный в регистр не может быть считан из него до следующего машинного цикла.