Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
Шрифт:
Таблица 16.1 Варианты возможных размещений 16-разрядных входных данных в 32-разрядном поле вывода
| N | Разряды | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 1 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| 2 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | 15 |
| 3 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | 15 | 14 |
| … | ||||||||||||||||||||||||||||||||
| 17 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 18 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | X |
| … | ||||||||||||||||||||||||||||||||
| 33 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| 34 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| … | ||||||||||||||||||||||||||||||||
| 47 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| 48 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| 49 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | Z | X | X | X |
Размещение 16 входных разрядов определяется кодом управления «С» и сигналом ссылки HI/LO. Код управления «С» является 8-битным значением, которое указывает направление сдвига и число разрядов, на которое необходимо будет сдвинуть данные.
Положительные значения кода управления указывают на сдвиг данных влево, а отрицательные на сдвиг вправо. Код управления может быть взят из регистра экспоненты 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.
Детектор порядка вычисляет степень из входного операнда устройства сдвига. Входное значение для него интерпретируется в зависимости от одного из трех режимов, в котором он работает.