- •Цифровые сигнальные процессоры
- •Содержание
- •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. Цепи синхронизации и запуска процессора
1.10. Регистры состояния и стек состояния
Состояние процессора и биты режима его работы сохраняются в следующих внутренних регистрах (регистрах состояний STATUS REGISTERS, см. рис. 1.9), которые могут быть считаны и записаны через DMD шину:
ASTAT – регистр арифметического статуса;
SSTAT – регистр статуса стека (только для чтения);
MSTAT – регистр статуса режима;
ICNTL – регистр управления прерываниями;
IMASK – регистр масок прерываний;
IFC – регистр установки/сброса прерываний (только для записи).
Три последних регистра подробно рассмотрены в п. 1.9.3, ниже рассматривается формат трех первых регистров из приведенного списка.
Регистр арифметического статуса (ASTAT). Формат регистра приведен в табл. 1.9.
Таблица 1.9
Формат регистра ASTAT
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
SS |
MV |
AQ |
AS |
AC |
AV |
AN |
AZ |
Примечание: в табл. 1.9 использованы следующие обозначения – AZ – нулевой результат ALU, AN – отрицательный результат ALU, AV – переполнение ALU, AC – перенос ALU, AS – знак Х входа ALU, AQ – частное ALU, MV – переполнение МАС, SS – знак входа SHIFTER.
Для битов (флагов) AZ, AN, AV, AC и MV признаком выполнения соответствующего условия является наличие 1, в противном случае флаг хранит нулевое значение. В табл. 1.9 приведено содержимое регистра после сброса процессора.
На состояние битов регистра ASTAT влияют не все команды, а только те, которые приведены в табл. 1.10.
Таблица 1.10
Команды, влияющие на биты регистра ASTAT
Бит состояния |
Устанавливается |
AZ, AN, AV, AC |
Любой командой ALU кроме DIVS, DIVQ |
AS |
Командой ALU – ABS |
AQ |
Командами ALU – DIVS, DIVQ |
MV |
Любой командой МАС кроме команды насыщения MR – SAT MR |
SS |
Командой SHIFTER – EXP |
Биты состояния защелкиваются в ASTAT в конце текущего машинного цикла и не могут использоваться до следующего машинного цикла.
Загрузка входных и выходных регистров ALU, MAC и SHIFTER прямо с DMD шины не влияет на биты арифметического состояния. Выполнение команды ALU – PASS устанавливает биты AZ, AN для заданных X- или Y-операндов и сбрасывает флаг АС.
Регистр статуса стека (SSTAT). Формат регистра приведен в табл. 1.11.
Таблица 1.11
Формат регистра SSTAT
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
LSO |
LSE |
SSO |
SSE |
CSO |
CSE |
PCO |
PCE |
Примечание: в табл. 1.11 использованы следующие обозначения – PCE – РС стек пуст, РСО – РС стек переполнен, CSE – стек счетчика пуст, CSO – стек счетчика переполнен, SSE – стек состояния пуст, SSO – стек состояния переполнен, LSE – стек циклов пуст, LSO – стек циклов переполнен.
Для всех битов признаком выполнения соответствующего условия является наличие 1, в противном случае бит хранит нулевое значение. В табл. 1.11 приведено содержимое регистра после сброса процессора.
Пустое состояние соответствующего стека означает, что число считываний со стека больше или равно числу записей в стек, случившихся после сброса процессора. Состояние переполнения соответствующего стека означает, что число записей в стек больше числа считывания со стека на величину глубины стека. Когда это случается, последнее записываемое значение не помещается в стек. Находящиеся в стеке значения считаются более значимыми.
После установки бита переполнения первая последующая операция считывания со стека не выполняется. Возможна ситуация, когда установлены и бит переполнения, и бит пустого стека. Для примера предположим, что в стек счетчика (глубиной четыре слова) произведено пять последовательных записей. Это установит бит переполнения. Если затем произвести пять последовательных считываний, то бит пустоты стека установится, но бит переполнения не сбросится, поскольку это можно сделать только сбросом процессора.
Регистр статуса режима (MSTAT). Содержимое регистра определяет режим работы процессора. Формат регистра приведен в табл. 1.12.
Таблица 1.12
Формат регистра MSTAT
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
INTS |
GME |
TE |
MRP |
SME |
OLME |
RME |
DRBS |
Примечание: в табл. 1.12 использованы следующие обозначения – DRBS (Data Register Bank Select) – выбор банка регистров данных, RME (Reverse Mode Enable) – разрешение режима реверса битов в DAG1, OLME (ALU Overflow Latch Mode Enable) – разрешение режима защелки бита переполнения ALU, SME (AR Saturation Mode Enable) – разрешение режима насыщения регистра AR, MRP (MAC Result Placement) – размещение результата МАС, TE (Timer Enable) – разрешение (запуск) таймера, GME (Go Mode Enable) – разрешение режима GO, INTS – бит глобального разрешения/запрета прерываний процессора (см. п. 1.9.3).
Как и любой другой регистр, допускающий запись, MSTAT может быть модифицирован пересылочной командой MOVE (оператором присвоения). Но в отличие от других регистров, биты регистра MSTAT могут быть изменены командами управления режимом работы процессора (ENA и DIS, см. п. 1.17.10.Б).
Например, чтобы разрешить режим реверса битов в DAG1, достаточно дать команду ENA BIT_REV;. Эта команда будет производить реверс битов адреса, который формирует DAG1, что используется при выполнении быстрого преобразования Фурье (БПФ). Отменить режим реверса можно командой DIS BIT_REV;.
Бит DRBS регистра MSTAT позволяет выбрать первичный набор (при DRBS = 0) регистров данных вычислительных устройств (см. пп. 1.5…1.7) или – вторичный набор (при DRBS = 1) регистров данных вычислительных устройств. Переключение на вторичный набор осуществляет команда ENA SEC_REG;, возврат первичного набора осуществляет команда DIS SEC_REG;.
Бит OLME регистра MSTAT позволяет (если установлен) заморозить бит переполнения ALU AV, если таковое случилось. Бит AV будет при этом установлен даже, если последующие арифметические операции не будут генерировать переполнения. Сбросить бит AV можно только записью нуля в бит 2 регистра ASTAT (см. табл. 1.9). Установка бита OLME производится командой ENA AV_LATCH;, сброс – командой DIS AV_LATCH;.
Бит SME регистра MSTAT позволяет (если установлен) производить насыщение регистра результата ALU AR, т.е. при наличии переполнения записывать в AR максимально положительное число (0х7FFF) или максимально отрицательное число (0х8000). Установка бита SME производится командой ENA AR_SAT;, сброс – командой DIS AR_SAT;.
Бит MRP регистра MSTAT определяет режим работы МАС: целый или дробный (см. п. 1.10). В целом режиме код на выходе Р умножителя (см. рис. 1.7) складывается (вычитается) с содержимым MR без сдвига. В дробном режиме код на выходе Р умножителя (см. рис. 1.7) складывается (вычитается) с содержимым MR со сдвигом на один разряд влево (при этом в самый правый разряд сдвинутого кода записывается ноль). Установка бита MRP (целый режим) производится командой ENA M_MODE;, сброс (дробный режим) – командой DIS M_MODE;.
Установка бита TE (командой ENA TIMER;) запускает таймер (на декрементирование), очистка (сброс) бита ТЕ (командой DIS TIMER;) останавливает таймер.
Установка бита GME (командой ENA G_MODE;) переводит процессор в режим GO, что позволяет ему в режиме захвата выполнять программу, находящуюся во внутренней ПП. В такой ситуации его может остановить только потребность во внешней шине (занятой в режиме захвата альтернативным задатчиком магистрали). Если режим GO запретить (например, командой DIS G_MODE;), то в режиме захвата процессор не будет выполнять программу, а произведет останов до выхода из режима захвата.
