В следующих главах говорится о внутренней программной модели процессора, а также о средствах и способах программирования сигнального процессора. А приведенная и описанная здесь схема поможет на практике начать освоение сигнальных процессоров.
Глава 4. Программно-логическая модель
Прежде чем начать разрабатывать программы для сигнального процессора, необходимо познакомиться с его программно- логической моделью, системой команд и программными инструментами. Освоение данного материала потребует времени и терпения. Но без хорошего знания этих основ невозможно будет научиться программировать сигнальный процессор.
Итак, начнем с программно-логической модели процессора. Такая модель для 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а
Разряд | Исходное состояние | Назначение |
---|---|---|
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б
Разряд | Исходное состояние | Назначение |
---|---|---|
6 | 0 | Разрешение режима GO |
5 | 0 | Разрешение работы таймера |
4 | 0 | Результаты умножителя: 0 — дробные, 1 — целые |
3 | 0 | Разрешение режима насыщения регистра AR АЛУ |
2 | 0 | Разрешение режима фиксации переполнения АЛУ |
1 | 0 | Разрешение бит-реверсивной адресации DAG1 |
0 | 0 | Выбор банка регистров данных: 0 — главный, 1 — теневой |
Таблица 4.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 или -IRQ0 |
0 | 0 | Таймер |
Таблица 4.1г