- •Цифровые сигнальные процессоры
- •Содержание
- •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.9.3. Конфигурирование прерываний.
Для конфигурирования прерываний используются следующие регистры:
ICNTL – разрешает/запрещает вложенные прерывания, конфигурирует внешние запросы IRQ2#… IRQ0# как фронт- или уровень-чувствительные (см. п. П1.14);
IMASK – индивидуально разрешает/запрещает (маскирует) все запросы на прерывания как внешние, так и внутренние (см. п. П1.15);
IFC – программно формирует запрос на прерывание (форсирует прерывание) или сбрасывает текущий фронт-чувствительный запрос (см. п. П1.16).
Запросы на прерывание IRQ2#… IRQ0# могут быть как фронт-чувствительные, так и уровень-чувствительные, т.е. доступны для конфигурирования через регистр ICNTL. Запрос IRQE# всегда фронт-чувствительный, IRQL1#, IRQL0# – уровень-чувствительные.
Фронт-чувствительные запросы всегда запоминаются во внутренних триггерах процессора, когда формируется срез (переход из высокого уровня в низкий) запроса. Запрос сохраняется до тех пор, пока не будет обслужен. Он автоматически сбрасывается, когда происходит выход из обработчика. Может быть программно сброшен раньше (внутри обработчика) с помощью регистра IFC. Фронт-чувствительные запросы требуют меньшей аппаратуры для своего формирования чем уровень-чувствительные запросы.
Уровень-чувствительные запросы должны оставаться активными до начала их обслуживания, после чего должны быть сброшены, чтобы исключить рекурсивный вызов обработчика. Достоинством таких запросов является простота расширения числа источников запросов на прерывания. Эти источники можно объединять с помощью логического элемента ИЛИ для формирования одного запроса на прерывание. Уровень-чувствительные запросы не сохраняются внутри процессора.
Если вложенные прерывания запрещены, то после перехода на обработчик любого запроса все оставшиеся запросы маскируются. В противном случае разрешено прерывание обработчика с меньшим приоритетом запросом на прерывание с большим приоритетом.
Работа с регистром ICNTL. Регистр ICNTL (см. п. П1.14) является 5-битным регистром, который конфигурирует внешние запросы на прерывания (IRQx#). После сброса процессора значение всех битов этого регистра не определено.
Биты ICNTL2…ICNTL0 содержат признак чувствительности запросов IRQ2#…IRQ0#. Причем, единица определяет чувствительность к фронту, а нуль – к уровню. Бит ICNTL4 содержит признак разрешения(1)/запрета(0) вложенных прерываний. Изменения содержимого регистра ICNTL вступают в силу через один машинный цикл после завершения команды, которая эти изменения вызвала.
Работа с регистром IMASK. Каждый бит регистра IMASK (см. п. П1.15) разрешает (если содержит 1) или запрещает (если содержит 0) соответствующий запрос на прерывание. После сброса процессора этот регистр обнулен. Изменения содержимого регистра IMASK вступают в силу через один машинный цикл после завершения команды, которая эти изменения вызвала. Это не относится к автобуферизации последовательного порта и ПДП передачам.
Замаскированные фронт-чувствительные запросы запоминаются, но не обслуживаются. Они могут быть распознаны программой и обслужены позднее. Содержимое регистра IMASK автоматически сохраняется в стеке состояния при входе в обработчик прерывания и считывается при выходе из обработчика. После сохранения содержимое регистра IMASK зависит от состояния бита разрешения вложенных прерываний ICNTL4. Если вложенный режим запрещен, то после сохранения регистр IMASK заполняется нулями, в противном случае нули появляются в битах, соответствующих запросам с приоритетом равным или меньшим чем обрабатываемый. Биты с большим приоритетом остаются без изменения. Это позволяет запросам с большим приоритетом, чем обслуживаемый, прерывать выполнение программы.
Глобальное разрешение/запрещение прерываний. Глобально разрешить прерывания можно командой ENA INTS;, а запретить – DIS INTS;. (INTS – седьмой бит регистра MSTAT, см. табл. 1.12). После сброса процессора все прерывания глобально разрешены. Глобальное запрещение прерываний вызывает маскирование всех запросов, включая powerdown, независимо от содержимого регистра IMASK.
Глобальное разрешение прерываний позволяет процессору обслуживать все незамаскированные запросы на прерывания. Глобальный запрет прерываний не влияет на запрос от автобуферизации последовательного порта.
Работа с регистром IFC. Сформировать фронт-чувствительный запрос на прерывание можно программно с помощью регистра IFC (см. п. П1.16). Для этого необходимо установить бит формирования соответствующего запроса. Если установленный запрос не замаскирован, то он будет обслуживаться, как если бы был внешним.
С помощью регистра IFC может быть также сброшен запрос незавершенного прерывания (при завершении прерывания бит запроса сбрасывается автоматически). Для этого необходимо установить соответствующий бит очистки запроса прерывания. Изменения содержимого только для записи регистра IFC вступают в силу через один машинный цикл после завершения команды, которая эти изменения вызвала.
Временные задержки. Для запросов на прерывания от таймера, IRQx#, и SPORT задержка между моментом времени появления запроса и выполнением первой команды обработчика составляет три машинных цикла.
