Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа
Шрифт:
Интервал:
Закладка:
Регистр SE (Shifter Exponent) состоит из 8 разрядов и содержит порядок во время нормализации и денормализации данных. Он доступен через 8 младших разрядов DMD-шины. Его формат 8.0 в дополнительном коде.
Регистр SB (Shifter Block) используется в блочных операциях для чисел с плавающей точкой. Его значение определяет сдвиг для нормализации чисел в блоке данных, т.е. значение, на которое должен произойти сдвиг для нормализации самого большого числа в блоке данных. Разрядность регистра SB составляет 5 бит. Он доступен через 5 младших разрядов DMD-шины. Его формат 5.0 в дополнительном коде.
При чтении регистров SE и SB на DMD-шину числа автоматически дополняются знаковыми битами до 16-разрядного значения. Любой из регистров SI, SE, SR может быть прочитан или записан в одном и том же цикле.
Shifter также имеет банк теневых регистров SI, SE, SR и SB. Выбор банка регистров производится установкой нулевого бита регистра режима MSTAT процессора.
Устройство сдвига заполняет все биты 32-разрядного результата правее сдвига нулями, а левее сдвига битом расширения. Бит расширения может принимать значение знакового бита, бита флага АС из регистра ASTAT или нулевое значение, в зависимости от выполняемой инструкции.
Логика OR/PASS позволяет правильно комбинировать сдвинутые секции числа с двойной точностью. При выборе инструкции PASS результат массива сдвигов загружается в регистр SR без изменения. При выборе инструкции OR результат массива сдвигов подвергается операции «ЛОГИЧЕСКОЕ ИЛИ» с предыдущим значением регистра SR и после этого вновь помещается в SR.
Детектор порядка вычисляет степень из входного операнда устройства сдвига. Входное значение для него интерпретируется в зависимости от одного из трех режимов, в котором он работает.
В режиме 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).