Процессор ADSP-21000 реагирует на прерывание в три этапа, каждый из которых занимает один цикл: синхронизация и защелкивание, распознавание, переход по вектору прерывания (рис. 5.1).
Время | |||||
PC | n-1 | N | NOP | NOP | V |
DADDR | N | n+1 -> NOP | n+2 -> NOP | V | v+1 |
FADDR | n+1 | n+2 | v | v+1 | v+2 |
произошло прерывание | распознавание | n+1 проталкивается в стек ПС, чтение первой команды обработчика |
Рис. 5.1. Обработка прерывания
32-разрядный регистр IRPTL защелкивает (фиксирует) прерывания, генерируемые внешним или внутренним событием. Этот регистр содержит все текущие обрабатываемые и ожидающие обработки прерывания. Поля регистра IRPTL (табл.5.1) соответствуют адресам расположения обработчиков прерывания в памяти.
Таблица 5.1
Бит | Адрес обработчика | Имя | Функция |
0x00 | — | зарезервировано для эмуляции | |
0x08 | RSTI | сброс (только для чтения) | |
0x10 | — | зарезервировано | |
0x18 | SOVFI | переполнение стека состояний или цикла или наполненность стека программного секвенсора | |
0x20 | TMZHI | прерывание от таймера высокого приоритета | |
0x28 | IRQ3I | есть сигнал по линии IRQ 3 | |
0x30 | IRQ2I | есть сигнал по линии IRQ 2 | |
0x38 | IRQ1I | есть сигнал по линии IRQ 1 | |
0x40 | IRQ0I | есть сигнал по линии IRQ 0 | |
0x48 | — | зарезервировано | |
0x50 | — | зарезервировано | |
0x58 | CB7I | переполнение кругового буфера 7 | |
0x60 | CB15I | переполнение кругового буфера 15 | |
0x68 | — | зарезервировано | |
0x70 | TMZLI | прерывание от таймера низкого приоритета | |
0x78 | FIXI | переполнение при операциях с ФЗ | |
0x80 | FLT0I | переполнение при операциях с ПЗ | |
0x88 | FLIUI | потеря значимости при операциях с ПЗ | |
0x90 | FLTII | некорректная операция с ПЗ | |
19-23 | 0x98 – 0xB8 | — - — | зарезервировано |
24-31 | 0xC0 – 0xF8 | SFT0I – SFT7I | пользовательские прерывания 0 – 7 |
Биты прерывания в IRPTL расположены в порядке убывания приоритета. Этот приоритет определяет, какое прерывание обслуживается первым, если два прерывания происходят в одном цикле. Если прерывание инициируется установкой бита в регистре STKY (при выполнении арифметических операций, переполнении стеков, переполнении кругового буфера), программа обработки прерывания должна очищать соответствующий бит STKY, чтобы не произошел повторный вызов прерывания.
|
|