Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
Шрифт:
Итак, начнем с программно-логической модели процессора. Такая модель для ADSP-2181 приведена на рис. 4.1.
Рис. 4.1. Программно-логическая модель ADSP-2181
На ней представлены все регистры процессора с указанием их размерности и условными обозначениями. Несмотря на многочисленность этих регистров, все они систематически распределены по логическим блокам процессора, что позволяет понять их назначение без особого труда.
Главный блок регистров представлен на рисунке слева, в процессорном ядре. В первую очередь это блоки регистров программных генераторов адреса DAG1 и DAG2. Данные блоки регистров включают в себя индексные регистры I, регистры длины буфера L и регистры-модификаторы M.
Все перечисленные регистры имеют размерность 14 бит. Эти
Блок программного автомата содержит регистры, отвечающие за автоматические операции процессора. В их число входят:
• программный счетчик с 16-уровневым 14-разрядным стеком PC STACK, для организации вызова подпрограмм и обработки прерываний;
• счетчик циклов CNTR с 4-уровневым 14-разрядным стеком COUNT STACK, для организации вложенных программных циклов;
• псевдорегистр OWRCNTR, для обновления значения счетчика CNTR;
• цикловой компаратор LOOP STACK с 4-уровневым 18-разрядным стеком, для обеспечения выполнения программных циклов без тактов ожидания.
Назначение остальных регистров управления и состояния блока программного автомата процессора, приводится в табл. 4.1. Обращение к этим регистрам из программы производится по их логическим именам, совпадающим с именами, приведенными на рис. 4.1 и в табл. 4.1.
Таблица 4.1а Регистр состояния арифметико-логического устройства ASTAT
Разряд | Исходное состояние | Назначение |
---|---|---|
7 | 0 | Флаг знака ввода в устройство сдвига SHIFTER (SS) |
6 | 0 | Флаг переполнения в умножителе-накопителе MAC (MV) |
5 | 0 | Флаг частного АЛУ (AQ) |
4 | 0 | Флаг знака ввода порта X в АЛУ (AS) |
3 | 0 | Флаг переноса бита в АЛУ (АС) |
2 | 0 | Флаг переполнения АЛУ (AV) |
1 | 0 | Флаг отрицательного результата в АЛУ (AN) |
0 | 0 | Флаг нулевого значения в АЛУ (AZ) |
Таблица 4.1б Регистр состояния режима процессора MSTAT
Разряд | Исходное состояние | Назначение |
---|---|---|
6 | 0 | Разрешение режима GO |
5 | 0 | Разрешение работы таймера |
4 | 0 | Результаты умножителя: 0 — дробные, 1 — целые |
3 | 0 | Разрешение режима насыщения регистра AR АЛУ |
2 | 0 | Разрешение режима фиксации переполнения АЛУ |
1 | 0 | Разрешение бит-реверсивной адресации DAG1 |
0 | 0 | Выбор банка регистров данных: 0 — главный, 1 — теневой |
Таблица 4.1в Регистр разрешения прерываний IMASK (0 — запрещено, 1 — разрешено)
Разряд | Исходное состояние | Назначение |
---|---|---|
15…10 | 0 | Не используются |
9 | 0 | – IRQ2 |
8 | 0 | – IRQL1 |
7 | 0 | – IRQL0 |
6 | 0 | Передатчик SPORT0 |
5 | 0 | Приемник SPORT0 |
4 | 0 | – IRQE |
3 | 0 | BDMA |
2 | 0 | Передатчик SPORT1 или -IRQ1 |
1 | 0 | Приемник SPORT0
|
0 | 0 | Таймер |
Таблица 4.1г Регистр состояния стека SSTAT
Разряд | Исходное состояние | Назначение |
---|---|---|
7 | 0 | Стек циклов переполнен |
6 | 1 | Стек циклов пуст |
5 | 0 | Стек состояний переполнен |
4 | 1 | Стек состояний пуст |
3 | 0 | Стек счетчика переполнен |
2 | 1 | Стек счетчика пуст |
1 | 0 | Стек счетчика команд переполнен |
0 | 1 | Стек счетчика команд пуст |
Таблица 4.1д Регистр управления прерываниями ICNTL
Разряд | Исходное состояние | Назначение |
---|---|---|
4 | X | Вложенность прерываний: 0 — запрещена, 1 — разрешена |
3 | 0 | Не используется |
2 | X | Чувствительность -IRQ2: 0 — уровень, 1 — фронт |
1 | X | Чувствительность -IRQ1: 0 — уровень, 1 — фронт |
0 | X | Чувствительность -IRQ0: 0 — уровень, 1 — фронт |
Таблица 4.1е Регистр установки и сброса прерываний IFC (только запись)
Разряд | Исходное состояние | Назначение |
---|---|---|
15 | 0 | Принудительная установка прерывания -IRQ2 |
14 | 0 | Принудительная установка прерывания передатчика SPORT0 |
13 | 0 | Принудительная установка прерывания приемника SPORT0 |
12 | 0 | Принудительная установка прерывания -IRQE |
11 | 0 | Принудительная установка прерывания BDMA |
10 | 0 | Принудительная установка прерывания передатчика SPORT1 или -IRQ1 |
9 | 0 | Принудительная установка прерывания приемника SPORT0 или -IRQ0 |
8 | 0 | Принудительная установка прерывания таймера |
7 | 0 | Сброс прерывания -IRQ2 |
6 | 0 | Сброс прерывания передатчика SPORT0 |
5 | 0 | Сброс прерывания приемника SPORT0 |
4 | 0 | Сброс прерывания -IRQE |
3 | 0 | Сброс прерывания BDMA |
2 | 0 | Сброс прерывания передатчика SPORT1 или -IRQ1 |
1 | 0 | Сброс прерывания приемника SPORT0 или -IRQ0 |
0 | 0 | Сброс прерывания таймера |
X — произвольное состояние после сброса.
Блок арифметико-логического устройства ALU включает в себя:
• два 16-разрядных регистра операндов AX0 и AX1;
• два 16-разрядных регистра операндов AY0 и AY1;
• один 16-разрядный регистр результата AR;
• один 16-разрядный регистр обратной связи AF.
Все эти регистры имеют своих двойников — теневые регистры, изображенные на рисунке программно-логической модели процессора в виде теней. Переключение между основными и теневыми регистрами производится программно. Блок умножителя MAC включает в себя: