
- •Цифровые сигнальные процессоры
- •Содержание
- •1. Архитектура adsp-2181
- •1.1. Описание выводов процессора
- •1.2. Структурная схема adsp-2181
- •Генераторы адресов данных dag1 и dag2, регистр команд instruction register и программный конвейер program sequencer.
- •1.3. Память программ
- •1.4. Память данных
- •1.5. Функциональная схема alu
- •1.6. Функциональная схема мас
- •1.7. Функциональная схема shifter
- •Значения выходного кода сдвигателя при различных значениях
- •1.8. Функциональная схема программного конвейера
- •1.9. Система прерываний
- •1.9.3. Конфигурирование прерываний.
- •1.10. Регистры состояния и стек состояния
- •1.11. Передача данных
- •1.11.1. Генераторы адресов
- •1.11.2. Узел обмена данными
- •1.12. Последовательные порты
- •1.12.1. Общие сведения
- •1.12.2. Программирование sport
- •Функциональное назначение конфигурационных регистров
- •1.12.3. Пример конфигурирования последовательных портов
- •{Программа инициализации sport0, sport1}
- •1.12.4. Сжатие данных
- •1.12.5. Автобуферизация
- •1.12.6. Пример программирования автобуферизации
- •1.12.7. Многоканальность
- •1.13. Таймер
- •1.14. Системный интерфейс
- •1.14.1. Сигналы синхронизации
- •Состояние регистров процессора после сброса и перезагрузки
- •Состояние регистров bdma после сброса и перезагрузки
- •1.14.2. Внешние прерывания
- •1.14.3. Флажковые биты
- •1.14.4. Режим энергосбережения
- •1.15. Контроллер прямого доступа к байтовой памяти (bdma)
- •1.15.1. Общие сведения
- •1.15.2. Регистры управления bdma
- •1.15.3. Функционирование bdma
- •1.15.4. Загрузка программ с помощью bdma
- •1.16. Порт idma
- •1.16.1. Сигналы idma
- •1.16.2. Функционирование idma
- •1.16.3. Загрузка программ с помощью idma
- •1.17. Система команд
- •1.17.1. Общие сведения
- •1.17.2. Методы адресации
- •1.17.3. Условные обозначения
- •1.17.4. Команды пересылки данных
- •1.17.5. Команды alu
- •Б) вычитание X-y/вычитание X-y с заемом
- •1.17.6. Команды мас
- •1.17.7. Команды shifter
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop см. П. 1.17.7.А.
- •Допустимые регистры xop см. П. 1.17.7.А.
- •1.17.8. Команды управления потоком программы
- •Допустимые условия cond:
- •Допустимые условия cond см. П. 1.17.8.А.
- •1.17.9. Многофункциональные команды
- •1.17.10. Прочие команды
- •1.18. Инструментальные средства разработки программного обеспечения
- •1.18.1. Инструментальные средства для dos
- •1.18.2. Инструментальные средства для windows
- •1.18.3. Создание проекта в VisualDsp
- •1.18.4. Загрузка программы в ez-kit Lite
- •1.19. Примеры программирования в среде VisualDsp
- •1.19.1. Формирование эхо-сигнала
- •Architecture(adsp-2181) // определение типа процессора
- •1.19.2. Эмуляция интерфейса rs-232
- •1.19.3. Эмуляция интерфейса rs-232 (смешанный вариант)
- •Architecture(adsp-2181) // определение типа процессора
- •2. Архитектура системы на основе adsp-2181
- •2.1. Структурная схема вычислительной (управляющей)
- •2.2. Цепи синхронизации и запуска процессора
Значения выходного кода сдвигателя при различных значениях
управляющего кода и сигнала HI/LO
Управляющий код |
Выходной код сдвигателя |
|
Активен HI |
Активен LO |
|
16…127 |
32…127 |
00000000 00000000 00000000 00000000 |
15 |
31 |
R0000000 00000000 00000000 00000000 |
14 |
30 |
PR000000 00000000 00000000 00000000 |
… |
|
|
2 |
18 |
CDEFGHIJ KLMNPR00 00000000 00000000 |
1 |
17 |
BCDEFGHI JKLMNPR0 00000000 00000000 |
0 |
16 |
ABCDEFGH IJKLMNPR 00000000 00000000 |
-1 |
15 |
XABCDEFGH IJKLMNP R0000000 00000000 |
-2 |
14 |
XXABCDEFGH IJKLMN PR000000 00000000 |
… |
|
|
-30 |
-14 |
XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXAB |
-31 |
-15 |
XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXA |
-32…-128 |
-16…-128 |
XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX |
Примечания к табл. 1.3:
ABCDEFGHIJKLMNPR – входной код (совокупность нулей и единиц) сдвигателя;
Х – бит распространения.
Табл. 1.3 показывает, что сдвигатель заполняет все биты выходного кода, которые находятся справа от входного кода нулями, а слева – битом распространения Х (см. вход Х сдвигателя на рис. 1.8). В зависимости от выполняемой команды (см. п. 1.17.7) есть три источника бита распространения: старший значащий (знаковый) разряд входного кода, бит АС регистра арифметического статуса ASTAT (см. п. 1.10) и нуль.
Блок OR/PASS в зависимости от команды (см. п. 1.17.7) либо пропускает выходной код сдвигателя для запоминания в регистре SR (когда опущена опционная часть команд сдвига [SR OR]), либо выполняет операцию логического сложения над выходным кодом сдвигателя и содержимым регистра SR (когда опционная часть команд сдвига [SR OR] присутствует).
Опционная часть команд сдвига [SR OR] используется для выполнения сдвигов чисел с двойной точностью (32-битных). Допустим, что регистр SE содержит код 3, а регистр SI - ABCDEFGHIJKLMNPR, который необходимо сдвинуть с двойной точностью. Для этого необходимо сначала сдвинуть входной код относительно старшей части регистра SR, т. е. выполнить команду SR = LSHIFT SI (HI). В результате регистр SR будет содержать следующий код 00000000 00000ABC 00000000 00000000. Далее необходимо выполнить команду SR = SR OR LSHIFT SI (LO), после чего регистр SR будет содержать код 00000000 00000ABC DEFGHIJK LMNPR000. Если опустить во второй команде часть SR OR, то биты АВС заменятся нулями и мы не получим сдвига с двойной точностью.
Детектор экспоненты извлекает экспоненту входного кода сдвигателя и помещает ее в регистр SE через мультиплексор MUX 3. В зависимости от команды (см. п. 1.17.7) детектор по разному интерпретирует входной код. В режиме HI входной код интерпретируется как число с одинарной точностью или как старшее слово числа с двойной точностью. Экспонента при этом формируется по следующему правилу: подсчитывается число старших бит с одинаковым значением; получившееся число декрементируется; результат инвертируется. Табл. 1.4 иллюстрирует формирование экспоненты в HI режиме.
Таблица 1.4
Формирование экспоненты в HI режиме
Входной код сдвигателя |
Значение экспоненты |
SNDDDDDD DDDDDDDD |
0 |
SSNDDDDD DDDDDDDD |
-1 |
… |
|
SSSSSSSS SSSSSSSN |
-14 |
SSSSSSSS SSSSSSSS |
-15 |
Примечание к табл. 1.4: S – знаковый бит, N – не знаковый бит, D – биты не рассматриваемые детектором экспоненты.
В расширенном HI режиме (HIX) входной код интерпретируется как результат операции вычитания (сложения) ALU, которая могла вызвать переполнение. В этом случае при формировании экспоненты учитывается флаг переполнения AV (см. п. 1.17.7). Табл. 1.5 иллюстрирует формирование экспоненты в расширенном HI режиме.
Таблица 1.5
Формирование экспоненты в расширенном HI режиме
AV |
Входной код сдвигателя |
Значение экспоненты |
1 |
DDDDDDDD DDDDDDDD |
+1 |
0 |
SNDDDDDD DDDDDDDD |
0 |
0 |
SSNDDDDD DDDDDDDD |
-1 |
0 |
… |
|
0 |
SSSSSSSS SSSSSSSN |
-14 |
0 |
SSSSSSSS SSSSSSSS |
-15 |
Табл. 1.5 показывает, что при наличии переполнения (AV = 1) экспонента равна +1. При отсутствии переполнения (AV = 0) экспонента формируется как в обычном HI режиме.
В режиме LO входной код интерпретируется как младшее слово числа с двойной точностью. В этом режиме принимается во внимание знак числа, который хранит флаг знака SS (см. п. 1.17.7 и рис. 1.8). Экспонента формируется только, если регистр SE содержит значение –15, т.е. старшее слово числа с двойной точностью содержит все нули или единицы. Табл. 1.6 иллюстрирует формирование экспоненты в LO режиме.
Таблица 1.6
Формирование экспоненты в LO режиме
SS |
Входной код сдвигателя |
Значение экспоненты |
S |
NDDDDDDD DDDDDDDD |
-15 |
S |
SNDDDDDD DDDDDDDD |
-16 |
S |
… |
|
S |
SSSSSSSS SSSSSSSN |
-30 |
S |
SSSSSSSS SSSSSSSS |
-31 |
Блок сравнения экспонент используется для нахождения максимальной экспоненты массива входных чисел сдвигателя. Для этого блок сравнения сравнивает значение экспоненты, которое присутствует на выходе детектора экспоненты, с содержимым регистра SB. Если выходное значение детектора экспоненты выше, чем содержимое регистра SB, то это значение через мультиплексор MUX 1 записывается в регистр SB. Обычно перед операцией определения максимальной экспоненты (см. п. 1.17.7) в регистр SB записывается число –16 (минимально возможное значение). Очевидно, что после циклической обработки всего массива чисел код максимальной экспоненты может быть считан из регистра SB.