STATUS STACK – стек регистров состояний. Предназначен для сохранения при переходе к подпрограмме текущего содержимого регистров ASTAT, SSTAT, IMASK, отображающих текущее состояние исполняемой главной программы. При возврате в главную программу по команде RTI содержимое регистров ASTAT, SSTAT, IMASK восстанавливается.
SSTAT – регистр состояния всех аппаратных стеков процессора: PC STACK, LOOP STACK, COUNT STACK, STATUS STACK. Контроль состояния стеков требуется для предотвращения их переполнения при наличии вложенных подпрограмм и вложенных циклов.
Два информационных бита для каждого стека в составе 8-разрядного регистра SSTAT характеризуют состояние стека: стек пуст (первый информационный бит) и стек переполнен (второй информационный бит).
Биты регистра SSTAT несут информацию в положительной логике: 1 – утверждение истинно, 0 – ложно. Исходное состояние регистра в результате сброса или перезапуска процессора SSTAT = 0х55 (все стеки пусты, все стеки не переполнены).
Организация цикла с помощью командыDO UNTIL
Команда DO <addr> UNTIL [условие окончания] инициирует цикл без потерь процессорного времени, используя компаратор (сравнивающее устройство) циклов и стек программного счётчика (PC STACK).
Цикл программы начинается с команды, непосредственно следующей за командой DO, заканчивается по указанному в команде адресу <addr> и повторяется до тех пор, пока не удовлетворяется заданное условие окончания цикла (если такое условие задано), или повторяется бесконечно (если такое условие не указано). Условие прекращения цикла проверяется во время выполнения последней команды цикла.
Если в качестве условия окончания цикла используется CE (счётчик пуст), то содержимое счётчика циклов CNTR декрементируется при каждом прохождении цикла.
Прерывания
Прерываниями в микропрограммном автомате управляет контроллер прерываний. При получении сигнала запроса прерывания контроллер прерываний передаёт управление программой команде, расположенной по адресу соответствующего вектора прерывания (таблица 2).
Таблица 2
Прерывания и адреса векторов прерывания для ADSP-2181
Источник прерывания |
Адрес вектора преры- вания |
Reset, запуск после сброса процессора или выхода из режима пониженной мощности |
0x0000 |
Power down, вызов подпрограммы по внутреннему сигналу снижения напряжения питания, немаскируемое прерывание |
0x002C |
Окончание табл. 2 |
|
IRQ2, вызов подпрограммы по сигналу внешнего прерывания по уровню или по фронту на выводе IRQ2 |
0x0004 |
IRQL1, вызов подпрограммы по сигналу внешнего прерывания по уровню на выводе IRQL1 |
0x0008 |
IRQL0, вызов подпрограммы по сигналу внешнего прерывания по уровню на выводе IRQL0 |
0x000c |
SPORT0 tx, вызов подпрограммы по сигналу внутреннего прерывания от передатчика последовательного порта SPORT0 |
0x0010 |
SPORT0 rx, вызов подпрограммы по сигналу внутреннего прерывания от приёмника последовательного порта SPORT0 |
0x0014 |
IRQE, вызов подпрограммы по сигналу внешнего прерывания по фронту на выводе IRQE |
0x0018 |
BDMA, вызов подпрограммы по сигналу внутреннего прерывания от порта прямого доступа к памяти BDMA |
0x001c |
SPORT1 tx or IRQ1, вызов подпрограммы по сигналу внутреннего прерывания от передатчика последовательного порта SPORT1 или по сигналу внешнего прерывания IRQ1 на выводе TFS1/IRQ1 передатчика последовательного порта SPORT1 |
0x0020 |
SPORT1 rx or IRQ0, вызов подпрограммы по сигналу внутреннего прерывания от приёмника последовательного порта SPORT1 или по сигналу внешнего прерывания IRQ0 на выводе RFS1/IRQ0 приёмника последовательного порта SPORT1 |
0x0024 |
Timer, вызов подпрограммы по сигналу внутреннего прерывания от таймера |
0x0028 |
Векторы прерываний хранятся в памяти программы с адресным интервалом через четыре ячейки. Это позволяет хранить короткие подпрограммы обслуживания прерываний, не переходя к требуемой обслуживающей подпрограмме. По адресу вектора прерывания может храниться команда перехода, когда подпрограмма обслуживания прерывания содержит более четырёх команд.
После обслуживания прерывания осуществляется возврат в главную программу после выполнения команды RTI. При этом содержимое вершины стека PC STACK выталкивается в программный счётчик PC.
Управление прерываниями
Для задания режима прерываний используются следующие регистры:
IMASK – прерывание определённого типа запрещается или разрешается (IMASK.i: 1 – прерывание разрешено, 0 – запрещено). Исходное состояние регистра IMASK в результате сброса или перезапуска процессора IMASK = 0х0000, все прерывания запрещены.
ICNTL – для внешнего прерывания разрешается прерывание по фронту либо – по уровню, определяется возможность использования вложенных прерываний. После сброса или перезапуска процессора все биты в ICNTL находятся в неопределённом состоянии.
IFC – осуществляет принудительное прерывание или сброс задержанного прерывания по фронту. Используется только для записи.
1.7. Регистровая модель генераторов адреса данных
(DATA ADRESS GENERATORS)
Генераторы адреса данных DAG1, DAG2 обеспечивают одновременный доступ к памяти данных DM и к памяти программ PM (рис. 2) при выполнении многофункциональных команд. Генераторы DAG1 и DAG2 позволяют осуществлять косвенную адресацию данных, могут выполнять автоматическое изменение адреса после завершения машинного цикла (постмодификация адреса) на заданное значение (модуль).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.