Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
Шрифт:
В режиме HI входной операнд воспринимается как число с одинарной точностью или как старшая половина числа с двойной точностью. Детектор степени определяет количество знаковых разрядов и формирует код, который будет служить для сдвига данных влево так, чтобы оставить в данных только один знаковый разряд.
В режиме HIX входной операнд воспринимается как результат сложения или вычитания, выполненного в ALU, когда могло произойти переполнение. Поэтому детектор степени берет в учет значение флага AV регистра ASTAT. Если он установлен, формируется дополнительный бит для нормирования данных. Если флаг сброшен, отличий между режимами HI и HIX нет. В режимах HI и HIX детектор степени формирует бит знака SS (Shifter Sing), который помещается в регистр ASTAT устройства ALU. Он соответствует старшему разряду входного операнда, за исключением тех случаев, когда установлен флаг AV в режиме HIX. В этом случае формируется отрицание старшего разряда входного операнда, для сохранения знака переполненного значения.
В режиме LO входной операнд интерпретируется как младшая половина числа с двойной точностью. В этом режиме детектор степени интерпретирует бит SS как знак числа. Регистр SE загружается результатом детектора порядка только в том случае, если регистр SE равен минус 15. Это происходит в тех случаях, когда старшая часть числа содержит лишь знаковые разряды. При этом выходное значение детектора порядка сдвигается на 16 разрядов влево, для того чтобы определить, что операнд является младшей половиной 32-разрядного числа.
Для наглядности, в табл. 16.3–16.5 показаны все три режима работы детектора порядка. В таблицах приняты следующие условные обозначения: S — знаковый бит, N — знаковый бит, D — незначащий бит.
Таблица 16.3 Детектор порядка в режиме работы HI
| Старший байт | Младший байт | Степень |
|---|---|---|
| SNDDDDDD | DDDDDDDD | 0 |
| SSNDDDDD | DDDDDDDD | – 1 |
| SSSNDDDD | DDDDDDDD | – 2 |
| SSSSNDDD | DDDDDDDD | – 3 |
| SSSSSNDD | DDDDDDDD | – 4 |
| SSSSSSND | DDDDDDDD | – 5 |
| SSSSSSSN | DDDDDDDD | – 6 |
| SSSSSSSS | NDDDDDDD | – 7 |
| SSSSSSSS | SNDDDDDD | – 8 |
| SSSSSSSS | SSNDDDDD | – 9 |
| SSSSSSSS | SSSNDDDD | – 10 |
| SSSSSSSS | SSSSNDDD | – 11 |
| SSSSSSSS | SSSSSNDD | – 12 |
| SSSSSSSS | SSSSSSND | – 13 |
| SSSSSSSS | SSSSSSSN | – 14 |
| SSSSSSSS | SSSSSSSS | – 15 |
Таблица 16.4 Детектор порядка в режиме работы HIX
| Флаг AV | Старший байт | Младший байт | Степень |
|---|---|---|---|
| 1 | DDDDDDDD | DDDDDDDD | +1 |
| 0 | SNDDDDDD | DDDDDDDD | 0 |
| 0 | SSNDDDDD | DDDDDDDD | – 1 |
| 0 | SSSNDDDD | DDDDDDDD | – 2 |
| 0 | SSSSNDDD | DDDDDDDD | – 3 |
| 0 | SSSSSNDD | DDDDDDDD | – 4 |
| 0 | SSSSSSND | DDDDDDDD | – 5 |
| 0 | SSSSSSSN | DDDDDDDD | – 6 |
| 0 | SSSSSSSS | NDDDDDDD | – 7 |
| 0 | SSSSSSSS | SNDDDDDD | – 8 |
| 0 | SSSSSSSS | SSNDDDDD | – 9 |
| 0 | SSSSSSSS | SSSNDDDD | – 10 |
| 0 | SSSSSSSS | SSSSNDDD | – 11 |
| 0 | SSSSSSSS | SSSSSNDD | – 12 |
| 0 | SSSSSSSS | SSSSSSND | – 13 |
| 0 | SSSSSSSS | SSSSSSSN | – 14 |
| 0 | SSSSSSSS | SSSSSSSS | – 15 |
Таблица 16.5 Детектор порядка в режиме работы LO
| Флаг SS | Старший байт | Младший байт | Степень |
|---|---|---|---|
| S | DDDDDDDD | DDDDDDDD | – 15 |
| S | SNDDDDDD | DDDDDDDD | – 16 |
| S | SSNDDDDD | DDDDDDDD | – 17 |
| S | SSSNDDDD | DDDDDDDD | – 18 |
| S | SSSSNDDD | DDDDDDDD | – 19 |
| S | SSSSSNDD | DDDDDDDD | – 20 |
| S | SSSSSSND | DDDDDDDD | – 21 |
| S | SSSSSSSN | DDDDDDDD | – 22 |
| S | SSSSSSSS | NDDDDDDD | – 23 |
| S | SSSSSSSS | SNDDDDDD | – 24 |
| S | SSSSSSSS | SSNDDDDD | – 25 |
| S | SSSSSSSS | SSSNDDDD | – 26 |
| S | SSSSSSSS | SSSSNDDD | – 27 |
| S | SSSSSSSS | SSSSSNDD | – 28 |
| S | SSSSSSSS | SSSSSSND | – 29 |
| S | SSSSSSSS | SSSSSSSN | – 30 |
| S | SSSSSSSS | SSSSSSSS | – 31 |
Источниками входных данных в устройстве сдвига могут служить регистры SI, AR, MR0, MR1, MR2, SR0 и SR1. Результат работы устройства сдвига всегда помещается в регистр SR (SR0, SR1).
Как было сказано выше, устройство сдвига выполняет следующие функции:
• Арифметический сдвиг (ASHIFT)
• Логический сдвиг (LSHIFT)
• Нормализация числа (NORM)
• Определение экспоненты (ЕХР)
• Блочное изменение экспоненты (EXPADJ)
Данные команды устройства сдвига применяются при выполнении арифметических операций над числами. С их помощью производится определение порядка блока, немедленные сдвиги, нормализация и денормализация чисел.
Ниже приводится полный список команд устройства сдвига Shifter в соответствии с принятыми ранее условными сокращениями. Назначение команд приводится в тексте описания этих команд и комментариях для некоторых из команд.
Команды арифметического сдвига:
Команды логического сдвига:
Команды нормализации:
Команды выделения порядка:
Команды выравнивания блочного порядка:
Команды арифметического непосредственного сдвига:
Команды логического непосредственного сдвига:
В записях некоторых команд присутствуют символы, которые имеют следующее назначение:
HI — сдвиг выполняется относительно старших 16 разрядов (SR1);
LO — сдвиг выполняется относительно младших 16 разрядов (SR0);
HIX — расширенный режим HI (при выделении порядка учитывается бит переполнения AV).
Например, команда:
означает, что в регистр SE будет занесен результат выделения порядка из регистра AR в расширенном режиме, т.е. с учетом бита переполнения AV.
Команда:
означает, что в регистр SR будет занесен результат нормализации регистра AR, причем сдвиг при нормализации будет выполняться относительно старших 16 разрядов.
Для всех команд устройства сдвига разрешено использовать следующие операнды xop: SI, SR0, SR1, AR, MR0, MR1, MR2, а в качестве ЕХР может быть любое целое число от -128 до 127.
Коды условия IF соответствуют кодам, приведенным ранее в табличном виде.