Вход/Регистрация
Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
вернуться

Вальпа Олег Дмитриевич

Шрифт:

Положительные значения кода управления указывают на сдвиг данных влево, а отрицательные на сдвиг вправо. Код управления может быть взят из регистра экспоненты SE или непосредственно из инструкции команды. Сигнал ссылки HI/LO определяет начальную точку сдвига. В состоянии HI все сдвиги производятся относительно регистра SR1 (старшей половины выходных данных), а в состоянии LO все сдвиги производятся относительно регистра SR0 (младшей половины выходных данных). В табл. 16.2 показаны все возможные комбинации сдвигов данных для сигналов ссылки LO и HI.

Таблица 16.2 Возможные комбинации сдвигов данных для сигналов ссылки L0 и HI

Управляющий код для сигнала сдвига Выходное значение массива сдвига
HI LO
+16…+127 +32…+127 00000000 00000000 00000000 00000000
+15 +31 R0000000 00000000 00000000 00000000
+14 +30 PR000000 00000000 00000000 00000000
+13 +29 NPR00000 00000000 00000000 00000000
+12 +28 MNPR0000 00000000 00000000 00000000
+11 +27 LMNPR000 00000000 00000000 00000000
+10 +26 KLMNPR00 00000000 00000000 00000000
+9 +25 JKLMNPR0 00000000 00000000 00000000
+8 +24 IJKLMNPR 00000000 00000000 00000000
+7 +23 HIJKLMNP R0000000 00000000 00000000
+6 +22 GHIJKLMN PR000000 00000000 00000000
+5 +21 FGHIJKLM NPR00000 00000000 00000000
+4 +20 EFGHIJKL MNPR0000 00000000 00000000
+3 +19 DEFGHIJK LMNPR000 00000000 00000000
+2 +18 CDEFGHIJ KLMNPR00 00000000 00000000
+1 +17 BCDEFGHI GKLMNPR0 00000000 00000000
0 +16 ABCDEFGH IJKLMNPR 00000000 00000000
– 1 +15 XABCDEFG HIJKLMNP R0000000 00000000
– 2 +14 XXABCDEF GHIJKLMN PR000000 00000000
– 3 +13 XXXABCDE FGHIJKLM NPR00000 00000000
– 4 +12 XXXXABCD EFGHIJKL MNPR0000 00000000
– 5 +11 ХХХХХАВС DEFGHIJK LMNPR000 00000000
– 6 +10 ХХХХХХАВ CDEFGHIJ KLMNPR00 00000000
– 7 +9 XXXXXXXA BCDEFGHI JKLMNPR0 00000000
– 8 +8 XXXXXXXX ABCDEFGH IJKLMNPR 00000000
– 9 +7 XXXXXXXX XABCDEFG HIJKLMNP R0000000
– 10 +6 XXXXXXXX XXABCDEF GHIJKLMN PR000000
– 11 +5 XXXXXXXX XXXABCDE FGHIJKLM NPR00000
– 12 +4 XXXXXXXX XXXXABCD EFGHIJKL MNPR0000
– 13 +3 XXXXXXXX ХХХХХАВС DEFGHIJK LMNPR000
– 14 +2 XXXXXXXX ХХХХХХАВ CDEFGHIJ KLMNPR00
– 15 +1 XXXXXXXX ХХХХХХХА BCDEFGHI JKLMNPR0
– 16 0 XXXXXXXX ХХХХХХХХ ABCDEFGH IJKLMNPR
– 17 – 1 XXXXXXXX ХХХХХХХХ XABCDEFG HIJKLMNP
– 18 – 2 XXXXXXXX ХХХХХХХХ XXABCDEF GHIJKLMN
– 19 – 3 XXXXXXXX ХХХХХХХХ XXXABCDE FGHIJKLM
– 20 – 4 XXXXXXXX ХХХХХХХХ XXXXABCD EFGHIJKL
– 21 – 5 XXXXXXXX ХХХХХХХХ ХХХХХАВС DEFGHIJK
– 22 – 6 XXXXXXXX ХХХХХХХХ ХХХХХХАВ CDEFGHIJ
– 23 – 7 XXXXXXXX ХХХХХХХХ XXXXXXXA BCDEFGHI
– 24 – 8 XXXXXXXX ХХХХХХХХ XXXXXXXX ABCDEFGH
– 25 – 9 XXXXXXXX ХХХХХХХХ XXXXXXXX XABCDEFG
– 26 – 10 XXXXXXXX ХХХХХХХХ XXXXXXXX XXABCDEF
– 27 – 11 XXXXXXXX ХХХХХХХХ XXXXXXXX XXXABCDE
– 28 – 12 XXXXXXXX ХХХХХХХХ XXXXXXXX XXXXABCD
– 29 – 13 XXXXXXXX ХХХХХХХХ XXXXXXXX ХХХХХАВС
– 30 – 14 XXXXXXXX ХХХХХХХХ XXXXXXXX ХХХХХХАВ
– 31 – 15 XXXXXXXX ХХХХХХХХ XXXXXXXX ХХХХХХХА
– 32…-128 – 16…-128 XXXXXXXX ХХХХХХХХ XXXXXXXX ХХХХХХХХ

Массив сдвига и связанная с ним логика OR/PASS находятся в окружении набора регистров. Входной регистр SI (Shifter Input) содержит данные для массива сдвига и детектора порядка. Разрядность регистра SI составляет 16 бит.

Этот регистр записывается с DMD-шины. В качестве входных регистров для массива сдвига и детектора порядка могут служить регистры AR, SR или MR, подключенные через R-шину. Выходной 32-разрядный регистр SR (Shifter Result) разделен на два 16- разрядных регистра SR0 и SR1. Загрузка данных в эти регистры может производиться с DMD-шины, а результат выводится на R-шину или DMD-шину. Регистр SR подключен к блоку OR/PASS логики для проведения сдвигов двойной точности.

Регистр 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-разрядного числа.

  • Читать дальше
  • 1
  • ...
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: