- •Цифровые сигнальные процессоры
- •Содержание
- •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.17.10. Прочие команды
А) УПРАВЛЕНИЕ СТЕКАМИ
[
PUSH
STS][, POP CNTR][, POP
PC][, POP LOOP];
POP
Синтаксис:
Пример: POP CNTR, POP PC, POP LOOP;
Описание: Команда управления стеками производит запись и считывание стеков с соответствующей коррекцией указателей стеков. Команда выполняется за один машинной цикл, не смотря на количество указанных в ней стеков
Команда PUSH STS инкрементирует указатель STATUS стека, а затем по новому адресу записывает в стек содержимое следующих регистров: ASTAT, MSTAT и IMASK. Эта команда выполняется автоматически, когда происходит вход в обработчик прерывания.
Все команды POP производят считывание с вершины означенного стека с последующим декрементированием указателя стека. Отличие команды POP STS заключается в том, что она считывает сразу три стека с загрузкой следующих регистров: ASTAT, MSTAT и IMASK. Эта команда выполняется автоматически, когда происходит выход из обработчика прерывания (выполняется команда RTI).
РС стек автоматически считывается при выполнении команд RTI и RTS.
Флаги состояния SSTAT:
SSTAT: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
LSO |
LSE |
SSO |
SSE |
CSO |
CSE |
PSO |
PSE |
|
- |
* |
* |
* |
- |
* |
- |
* |
PSE – РС стек пуст: устанавливается, если после очередной операции POP стек РС становится пустым, в противном случае сбрасывается.
CSE – стек счетчика циклов пуст: устанавливается, если после очередной операции POP стек счетчика циклов становится пустым, в противном случае сбрасывается.
SSE – STATUS стек пуст: для PUSH STS этот бит всегда сбрасывается (что говорит о не пустом стеке); для POP STS этот бит устанавливается, если после очередной POP операции STATUS стек становится пустым, в противном случае сбрасывается.
SSO – переполнение STATUS стека: для PUSH STS устанавливается при переполнении STATUS стека, а противном случае не изменяется.
LSE – LOOP стек пуст: устанавливается, если после очередной POP операции LOOP стек становится пустым, в противном случае сбрасывается.
Примечание: если происходит переполнение стека, то устанавливается соответствующий ххО бит в регистре SSTAT, как сигнал о потере информации. Сброс этого бита возможен только сбросом процессора.
Процессор поддерживает специальную версию команды пересылки регистр-регистр – TOPPCSTACK. Она позволяет при операциях с РС стеком быть назначением не только РС (как в стандартной команде POP РС), но множеству других регистров. Для считывания с вершины РС стека (с соответствующей коррекцией указателя стека) можно написать:
reg = TOPPCSTACK; {РС стек считывается в регистр reg}
NOP; {необходима для корректного завершения считывания }
Кроме того, нет стандартной команды PUSH PC. Чтобы записать в РС стек определенное значение, можно выполнить следующее:
TOPPCSTACK = reg;
При этом стек загрузится (с соответствующей коррекцией указателя стека) содержимым reg за один цикл (не надо давать NOP;).
Примечание: в других контекстах использовать TOPPCSTACK запрещается.
Примеры: АХ0 = TOPPCSTACK; {считывание РС в АХ0}
NOP;
TOPPCSTACK = I7; {запись содержимого I7 в РС стек}
Для команды TOPPCSTACK доступны только следующие регистры: AX0, AX1, AY0, AY1, AR, MX0, MX1, MY0, MY1, MR0, MR1, MR2, SI, SE, SR0, SR1, I0-I7, M0-M7, L0-L7. Необходимо учитывать также следующие ограничения:
Команда TOPPCSTACK не может быть размещена непосредственно перед командой RTI, они должны разделяться хотя бы одной командой NOP;
Команда TOPPCSTACK не может быть последней (и даже предпоследней) командой в теле цикла DO UNTIL;
Внутри цикла DO UNTIL должно быть одинаковое число записей/чтений РС стека с учетом использования как обычных команд доступа к РС стеку, так и команды TOPPCSTACK.
Б) УПРАВЛЕНИЕ РЕЖИМОМ РАБОТЫ ПРОЦЕССОРА
ENA
BIT_REV
[, …];
DIS
AV_LATCH
AR_SAT
SEC_REG
G_MODE
M_MODE
TIMER
Синтаксис:
Пример: DIS AR_SAT, ENA M_MODE;
Описание: Команда устанавливает (ENA) или (DIS) запрещает означенный режим работы процессора. При этом соответствующий бит режима в регистре состояния режима процессора (MSTAT) устанавливается командой ENA или сбрасывается командой DIS. После сброса процессора регистр MSTAT обнулен, поэтому все режимы работы процессора запрещены. Командой можно изменить любое число режимов за один машинный цикл. При этом команды ENA и DIS должны разделяться запятыми.
Названия битов команды являются синонимами названий битов регистра MSTAT (см. табл. 1.12): BIT_REV – RME; AV_LATCH –OLME; AR_SAT – SME; SEG_REG – DRBS; G_MODE – GME; M_MODE – MRP; TIMER – TE. Функциональное назначение этих битов описано в п. 1.10.
В) МОДИФИКАЦИЯ АДРЕСНЫХ РЕГИСТРОВ
MODIFY(
I0
,
M0
);
I1
M1
I2
M2
I3
M3
I4
M4
I5
M5
I6
M6
I7
M7
Синтаксис:
Пример: MODIFY (I1, M1);
Описание: Команда производит сложение содержимого выбранного I регистра с содержимым выбранного М регистра. Между суммой и содержимым L регистра производится операция модуля, результат этой операции сохраняется в I регистре. Для линейной (не кольцевой) адресации L регистр, соответствующий I регистру, должен быть обнулен. Допускается комбинировать I и М регистры, принадлежащие одному и тому же DAG.
Флаги состояния: не изменяются.
Г) НЕТ ОПЕРАЦИИ
Синтаксис: NOP;
Описание: При выполнении команды никакой операции не производится. Команда выполняется за один машинный цикл.
Флаги состояния: не изменяются.
Д) РАЗРЕШЕНИЕ/ЗАПРЕЩЕНИЕ ПРЕРЫВАНИЙ
Синтаксис: ENA INTS;
DIS INTS;
Описание: После сброса процессора все прерывания по умолчанию разрешены. После выполнения команды DIS INTS все прерывания замаскированы (включая прерывание powerdown) без изменения содержимого регистра IMASK.
Команда ENA INTS разрешает обслуживание всех незамаскированных прерываний.
Примечание: запрет прерываний не влияет на автобуферицацию последовательных портов и BDMA, IDMA пересылки.
Флаги состояния: не изменяются.
