Чтение онлайн

ЖАНРЫ

Разработка устройств на основе цифровых сигнальных процессоров фирмы 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.

Детектор порядка вычисляет степень из входного операнда устройства сдвига. Входное значение для него интерпретируется в зависимости от одного из трех режимов, в котором он работает.

Поделиться с друзьями: