Структурная организация вычислительной системы на базе процессора ADSP-2181. Программно-логическая модель сигнального процессора ADSP-2181, страница 4

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 позволяют осуществлять косвенную адресацию данных, могут выполнять автоматическое изменение адреса после завершения машинного цикла (постмодификация адреса) на заданное значение (модуль).