- •Цифровые сигнальные процессоры
- •Содержание
- •1. Архитектура adsp-2181
- •1.1. Описание выводов процессора
- •1.2. Структурная схема adsp-2181
- •Генераторы адресов данных dag1 и dag2, регистр команд instruction register и программный конвейер program sequencer.
- •1.3. Память программ
- •1.4. Память данных
- •1.5. Функциональная схема alu
- •1.6. Функциональная схема мас
- •1.7. Функциональная схема shifter
- •Значения выходного кода сдвигателя при различных значениях
- •1.8. Функциональная схема программного конвейера
- •1.9. Система прерываний
- •1.9.3. Конфигурирование прерываний.
- •1.10. Регистры состояния и стек состояния
- •1.11. Передача данных
- •1.11.1. Генераторы адресов
- •1.11.2. Узел обмена данными
- •1.12. Последовательные порты
- •1.12.1. Общие сведения
- •1.12.2. Программирование sport
- •Функциональное назначение конфигурационных регистров
- •1.12.3. Пример конфигурирования последовательных портов
- •{Программа инициализации sport0, sport1}
- •1.12.4. Сжатие данных
- •1.12.5. Автобуферизация
- •1.12.6. Пример программирования автобуферизации
- •1.12.7. Многоканальность
- •1.13. Таймер
- •1.14. Системный интерфейс
- •1.14.1. Сигналы синхронизации
- •Состояние регистров процессора после сброса и перезагрузки
- •Состояние регистров bdma после сброса и перезагрузки
- •1.14.2. Внешние прерывания
- •1.14.3. Флажковые биты
- •1.14.4. Режим энергосбережения
- •1.15. Контроллер прямого доступа к байтовой памяти (bdma)
- •1.15.1. Общие сведения
- •1.15.2. Регистры управления bdma
- •1.15.3. Функционирование bdma
- •1.15.4. Загрузка программ с помощью bdma
- •1.16. Порт idma
- •1.16.1. Сигналы idma
- •1.16.2. Функционирование idma
- •1.16.3. Загрузка программ с помощью idma
- •1.17. Система команд
- •1.17.1. Общие сведения
- •1.17.2. Методы адресации
- •1.17.3. Условные обозначения
- •1.17.4. Команды пересылки данных
- •1.17.5. Команды alu
- •Б) вычитание X-y/вычитание X-y с заемом
- •1.17.6. Команды мас
- •1.17.7. Команды shifter
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop см. П. 1.17.7.А.
- •Допустимые регистры xop см. П. 1.17.7.А.
- •1.17.8. Команды управления потоком программы
- •Допустимые условия cond:
- •Допустимые условия cond см. П. 1.17.8.А.
- •1.17.9. Многофункциональные команды
- •1.17.10. Прочие команды
- •1.18. Инструментальные средства разработки программного обеспечения
- •1.18.1. Инструментальные средства для dos
- •1.18.2. Инструментальные средства для windows
- •1.18.3. Создание проекта в VisualDsp
- •1.18.4. Загрузка программы в ez-kit Lite
- •1.19. Примеры программирования в среде VisualDsp
- •1.19.1. Формирование эхо-сигнала
- •Architecture(adsp-2181) // определение типа процессора
- •1.19.2. Эмуляция интерфейса rs-232
- •1.19.3. Эмуляция интерфейса rs-232 (смешанный вариант)
- •Architecture(adsp-2181) // определение типа процессора
- •2. Архитектура системы на основе adsp-2181
- •2.1. Структурная схема вычислительной (управляющей)
- •2.2. Цепи синхронизации и запуска процессора
1.16. Порт idma
Порт IDMA является КПДП к внутренней ПП или ПД со стороны хост-компьютера. При этом имеется возможность устанавливать адреса чтения/записи не только со стороны процессора (из программы), но и со стороны хост-компьютера (извне).
1.16.1. Сигналы idma
Сигналы IDMA перечислены в п. 1.1. Их совокупность представляет собой простой и удобный интерфейс для доступа к внутренним ПП и ПД со стороны хост-компьютера, напоминающий ISA шину. Действительно, в его состав входит совмещенная двунаправленная шина адрес/данные IAD[15:00]. Как и в ISA шине появление адреса на шине IAD[15:00] отмечается специальным сигналом IAL (аналог ALE). Стробы записи/чтения IWR#/IRD# являются аналогами сигналов MEMW#/MEMR# соответственно.
Сигнал IS# является селектирующим. Операции с IDMA (запись адреса, запись/чтение данных) возможны только при низком уровне сигнала на входе IS#. Сигнал IACK# является сигналом готовности к проведению операции. Низкий уровень этого сигнала свидетельствует о возможности проведения операции, при высоком уровне – операция отвергается. Во время старта процессора этот сигнал сбрасывается, что дает возможность взаимодействовать с IDMA. В таком состоянии он находится до первой операции с IDMA. После начала этой операции он устанавливается на время проведения операции, после чего снова сбрасывается.
Для управления IDMA существует регистр IDMA Control Register (см. п. П1.13), в который записывается тип внутренней памяти IDMAD и начальный адрес выбранной памяти IDMAA. Запись в этот регистр может осуществляться как из программы (регистр имеет адрес 0x3FE0), так и по сигналу IAL. При записи по сигналу IAL в IDMA Control Register записывается код, который в этот момент времени присутствует на шине IAD[15:00].
1.16.2. Функционирование idma
Блочная схема алгоритма доступа к внутренней памяти процессора со стороны хост-компьютера приведен на рис. 1.13.
Алгоритм рис. 1.13 достаточно полно иллюстрирует особенности IDMA пересылок. Осталось добавить:
после каждой пересылки значение IDMAA инкрементируется. Это дает возможность записывать передаваемый блок кодов по возрастающим адресам;
во время пересылок процессор продолжает выполнять программу.
1.16.3. Загрузка программ с помощью idma
Загрузка программ с помощью IDMA осуществляется в следующей последовательности:
сбросить процессор (RESET#:= 0);
установить MMAP = 0 и BMODE = 1 - это условия загрузки программы через IDMA;
деактивировать RESET# (RESET#:= 1);
загрузить выполняемую программу во внутреннюю ПП в соответствии с п. 1.16.2;
произвести запись по адресу РМ(0х0000), чтобы запустить загруженную программу на исполнение.
1.17. Система команд
1.17.1. Общие сведения
Язык ассемблера процессора использует алгебраическую запись машинных команд, что позволяет сочетать хорошую читаемость с высокой эффективностью. Ниже приводится формат команды процессора:
[LABEL:] [IF cond ] COP; [COP;.. COP;][{Commentary}]
где:
LABEL – метка, т.е. идентификатор (адрес), присваиваемый следующей за ним команде (СОР). Метка используется для передачи управления отмеченной команде, вызова подпрограммы, а также для отметки последней команды тела цикла DO UNTIL. Метка не обязательна, при ее отсутствии символ : опускается;
IF cond – условная часть команды, если она есть в команде, то она проверяется первой. Если условие cond верно, то следующая за ней команда СОР выполняется, в противном случае – нет. Все проверяемые условия приведены в табл. 1.19. Условная часть не обязательна, в ее отсутствии команда считается безусловно выполняемой. Условная часть может находиться не перед всеми командами, так перед КОМАНДАМИ ПЕРЕСЫЛКИ (см. п. 1.17.4) и МНОГОФУНКЦИОНАЛЬНЫМИ КОМАНДАМИ (см. п. 1.17.9) условная часть команды НЕ используется;
СОР – (Code OPeration) код операции (команда) заканчивается всегда символом ; (точка с запятой). Это дает возможность писать в одной строке несколько команд;
комментарий Commentary, если он есть, всегда пишется в фигурных скобках (в среде VisualDSP также отделяется двумя прямыми слешами).
Таблица 1.19
Условия, проверяемые оператором IF команды
Условие |
Описание |
Выполняется, когда |
|
EQ |
Равно нулю |
AZ = 1 |
|
NE |
Не равно нулю |
AZ = 0 |
|
LT |
Меньше чем ноль |
AN.XOR.AV = 1 |
|
GE |
Больше чем или равно нулю |
AN.XOR.AV = 0 |
|
LE |
Меньше чем или равно нулю |
(AN.XOR.AV).OR.AZ = 1 |
|
GT |
Больше чем ноль |
(AN.XOR.AV).OR.AZ = 0 |
|
AC |
Перенос ALU |
AC = 1 |
|
NOT AC |
Нет переноса ALU |
AC = 0 |
|
AV |
Переполнение ALU |
AV = 1 |
|
NOT AV |
Нет переполнения ALU |
AV = 0 |
|
MV |
Переполнение МАС |
MV = 1 |
|
NOT MV |
Нет переполнения МАС |
MV = 0 |
|
NEG |
Отрицательный знак Х входа |
AS = 1 |
|
POS |
Положительный знак Х входа |
AS = 0 |
|
NOT CE |
Счетчик не исчерпан |
|
|
FLAG_IN* |
Сигнал FI установлен |
На входе FI высокий уровень сигнала |
|
NOT FLAG_IN* |
Сигнал FI сброшен |
На входе FI низкий уровень сигнала |
|
Примечание: * - только для команд JUMP и CALL.
Примеры команд:
{Сложение содержимых AX0 и AF, если есть перенос ALU}
IF AC AR = AX0 + AF;
{Пересылка содержимого ячейки ПД с адресом 0х1234 в AX0}
AX0 = DM(0x1234);
{Многофункциональная команда МАС. Содержимое MX0 и MY0 перемножаются со знаком, результат суммируется с содержимым MR, после чего регистры MX0 и MY0 загружаются новыми значениями из ПД и ПП соответственно. И все это происходит за один машинный цикл. Запятые разделяют отдельные части многофункциональной команды.}
MR = MR + MX0 * MY0 (SS), MX0 = DM(I0, M0), MY0 = PM(I4, M5);
Процессор ADSP–2181 содержит следующие группы команд:
Пересылочные;
Вычислительные: ALU, MAC, SHIFTER;
Управления потоком команд;
Многофункциональные;
Прочие.
