Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
Шрифт:
Глава 16. Устройство сдвига
В этой главе говорится об устройстве сдвига сигнального процессора и выполняемых с его помощью командах.
Устройство сдвига именуется как Shifter и обеспечивает полный набор сдвиговых функций для 16-разрядных операндов, результатом которых является 32-разрядное слово данных. К числу сдвиговых функций относятся арифметические сдвиги, логические сдвиги и нормализация. Кроме того, shifter позволяет вычислить порядок (экспоненту) числа и порядок для целого массива (блока) чисел. Эти базовые функции могут быть объединены для быстрого преобразования любого формата чисел, в том числе и чисел с плавающей точкой.
На рис. 16.1 представлена структурная схема устройства сдвига. Shifter включает в себя следующие основные блоки: массив сдвига, логику OR/PASS (ИЛИ/ПЕРЕДАЧА), детектор порядка и логику сравнения порядка.
Рис. 16.1. Структурная схема устройства сдвига
Массив сдвига состоит из шестнадцати 32-разрядных регистров. Он принимает 16-разрядные данные и в одном цикле может поместить их в любой позиции 32-разрядного поля вывода, начиная с данных, полностью сдвинутых влево,
Таблица 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-битным значением, которое указывает направление сдвига и число разрядов, на которое необходимо будет сдвинуть данные.
Положительные значения кода управления указывают на сдвиг данных влево, а отрицательные на сдвиг вправо. Код
Таблица 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 | ХХХХХХХХ |