- •Цифровые сигнальные процессоры
- •Содержание
- •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.17.5. Команды alu
А) СЛОЖЕНИЕ/СЛОЖЕНИЕ С ПЕРЕНОСОМ
С
[IF cond]
AR
= xop
+ yop
;
AF
+ C
+ yop + C
+ constant
+ constant + C
Допустимые:
регистры xop регистры yop условия cond
AX0 MR2 AY0 EQ LE AC
AX1 MR1 AY1 NE NEG NOT AC
AR MR0 AF GT POS MV
SR1 GE AV NOT MV
SR0 LT NOT AV NOT CE
Допустимые константы: 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32767, -2, -3, -5, -9, -17, -33, -65, - 129, -257, -513, -1025, -2049, -4097, -8193, -16385, -32768.
Примеры: IF EQ AR = AX0 + AY0 + C;
AR = AR + 512;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит сложение первого операнда источника со вторым операндом источником, а также битом АС, если в команде присутствует символ С. Результат сохраняется в регистре назначения. Операнды и константа содержатся в регистрах, которые определены в команде.
Операция xop + constant не может использоваться в многофункциональных командах.
Флаги состояния:
ASTAT: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
SS |
MV |
AQ |
AS |
AC |
AV |
AN |
AZ |
|
- |
- |
- |
- |
* |
* |
* |
* |
AZ – устанавливается, если результат равен нулю и сбрасывается в противном случае. AN – устанавливается, если результат отрицательный и сбрасывается в противном случае. AV – устанавливается, если случилось арифметическое переполнение и сбрасывается в противном случае. AC – устанавливается, если есть перенос и сбрасывается в противном случае.
Б) вычитание X-y/вычитание X-y с заемом
С
[IF cond]
AR
= xop
- yop
;
AF
- yop + C – 1
+ C – 1
- constant
- constant + C - 1
Допустимые: регистры xop, регистры yop, условия cond и константы см. п. 1.17.5.А.
Пример: IF GE AR = AX0 – AY0;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит вычитание второго операнда источника из первого операнда источника, а также прибавляет АС – 1, если в команде присутствует терм С – 1. Результат сохраняется в регистре назначения. Терм (С – 1) позволяет поддерживать операцию заема при вычитании чисел длиной более 16 бит. Операнды и константа содержатся в регистрах, которые определены в команде.
Операция xop - constant не может использоваться в многофункциональных командах.
Флаги состояния: см. п. 1.17.5.А.
В) ВЫЧИТАНИЕ Y-X/ВЫЧИТАНИЕ Y-X С ЗАЕМОМ
[IF cond]
AR
=
yop -
xop
;
AF
xop + C – 1
- xop + C – 1
- xop + constant
- xop + constant + C – 1
Синтаксис:
Допустимые: регистры xop, регистры yop, условия cond и константы см. п. 1.17.5.А.
Пример: IF GT AR = AY0 – AX0 + C – 1;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит вычитание второго операнда источника из первого операнда источника, а также прибавляет АС – 1, если в команде присутствует терм С – 1. Результат сохраняется в регистре назначения. Терм (С – 1) позволяет поддерживать операцию заема при вычитании чисел длиной более 16 бит. Операнды и константа содержатся в регистрах, которые определены в команде.
Операция xop - constant не может использоваться в многофункциональных командах.
Флаги состояния: см. п. 1.17.5.А.
Г) AND, OR, XOR
[IF cond]
AR
= xop
AND
yop
;
AF
OR
constant
XOR
Синтаксис:
Допустимые: регистры xop, регистры yop, условия cond и константы см. п. 1.17.5.А.
Примеры: IF POS AR = MR0 AND 8192;
AR = AX0 XOR AY0;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит побитную логическую операцию И/ИЛИ/ИСКЛЮЧАЮЩЕЕ ИЛИ между первым операндом источником и вторым операндом источником. Результат сохраняется в регистре назначения. Операнды и константа содержатся в регистрах, которые определены в команде.
Операция xop AND/OR/XOR constant не может использоваться в многофункциональных командах.
Флаги состояния:
ASTAT: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
SS |
MV |
AQ |
AS |
AC |
AV |
AN |
AZ |
|
- |
- |
- |
- |
0 |
0 |
* |
* |
AZ – устанавливается, если результат равен нулю и сбрасывается в противном случае. AN – устанавливается, если результат отрицательный и сбрасывается в противном случае. AV – всегда сбрасывается. AC –всегда сбрасывается.
Д) ПРОВЕРКА БИТА, УСТАНОВКА БИТА, ОЧИСТКА БИТА, ИНВЕРСИЯ БИТА
[IF cond]
AR
=
TSTBIT n OF xop
;
AF
SETBIT n OF xop
CLRBIT n OF xop
TGLBIT n OF xop
Синтаксис:
Допустимые: регистры xop и условия cond см. п. 1.17.5.А.
Допустимые значения n: 0 – 15.
Примеры: IF LE AF = TSTBIT 5 OF AR;
AR = TGLBIT 13 OF AX0;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит следующее:
Если выполняет TSTBIT, то производит операцию логического И между содержимым регистра источника и 1 в выбранном бите n;
Если выполняет SETBIT, то производит операцию логического ИЛИ между содержимым регистра источника и 1 в выбранном бите n;
Если выполняет CLRBIT, то производит операцию логического И между содержимым регистра источника и 0 в выбранном бите n;
Если выполняет TGLBIT, то производит операцию логического ИСЛЮЧАЮЩЕГО ИЛИ между содержимым регистра источника и 1 в выбранном бите n.
Перечисленные команды не могут выполняться в многофункциональном режиме.
Следующий пример показывает, как произвести переход на метку set, если установлен пятый бит AR.
AF = TSTBIT 5 OF AR;
IF NE JUMP set
Флаги состояния: см. п. 1.17.5.А.
Е) ПЕРЕСЫЛКА/ОЧИСТКА
[IF cond]
AR
= PASS
xop
;
AF
yop
constant
Синтаксис:
Допустимые: регистры xop, регистры yop и условия cond см. п. 1.17.5.А.
Допустимые константы: -1, 0, 1
2, 3, 4, 5, 7, 8, 9, 15, 16, 17, 31, 32, 33, 63, 64, 65, 127, 128, 129, 255, 256, 257, 511, 512, 513, 1023, 1024, 1025, 2047, 2048, 2049, 4095, 4096, 4097, 8191, 8192, 8193, 16383, 16384, 16385, 32766, 32767
-2, -3, -4, -5, -6, -8, -9, -10, -16, -17, -18, -32, -33, -34, -64, -65, -66, -128, -129, -130, -256, -257, -258, -512, -513, -514, -1024, -1025, -1026, -2048, -2049, -2050, -4096, -4097, -4098, -8192, -8193, -8194, -16384, -16385, -16386, -32767, -32768
Примеры: IF GE AR = PASS AY0; {пересылка содержимого AY0 в AR}
AR = PASS 0; {очистка AR}
AR = PASS 8191; {загрузка AR константой 8191}
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит пересылку содержимого регистра источника или константы в регистр приемник. Операнды и константа содержатся в регистрах, которые определены в команде.
В отличие от функционально идентичных команд пересылки данных (см. п. 1.17.4), команда PASS xop/yop/-1/0/1 устанавливает некоторые флаги (см. ниже). Если операндами команды являются константы, отличные от -1, 0, 1, то состояние флагов ASTAT не определено.
Команда PASS xop/yop/-1/0/1 может использоваться в многофункциональных командах. Константы, отличные от –1, 0, 1, не могут использоваться в многофункциональных командах.
Флаги состояния: см. п. 1.17.5.Г.
Ж) ОТРИЦАНИЕ ЗНАКА ОПЕРАНДА
[IF cond]
AR
= -
xop
;
AF
yop
Синтаксис:
Допустимые: регистры xop, регистры yop и условия cond см. п. 1.17.5.А.
Пример: IF LT AR = - AY0;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит пересылку содержимого регистра источника в регистр приемник с инверсией знака операнда. Операнды содержатся в регистрах, которые определены в команде.
Флаги состояния:
ASTAT: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
SS |
MV |
AQ |
AS |
AC |
AV |
AN |
AZ |
|
- |
- |
- |
- |
* |
* |
* |
* |
AZ – устанавливается, если результат равен нулю и сбрасывается в противном случае. AN – устанавливается, если результат отрицательный и сбрасывается в противном случае. AV – устанавливается, если операнд = 0х8000 и сбрасывается в противном случае. AC – устанавливается, если операнд равен нулю и сбрасывается в противном случае.
З) ИНВЕРСИЯ БИТОВ ОПЕРАНДА
[IF cond]
AR
= NOT
xop
;
AF
yop
Синтаксис:
Допустимые: регистры xop, регистры yop и условия cond см. п. 1.17.5.А.
Пример: IF NE AF = NOT AX0;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит пересылку содержимого регистра источника в регистр приемник с инверсией всех битов операнда. Операнды содержатся в регистрах, которые определены в команде.
Флаги состояния: см. п. 1.17.5.Г.
И) АБСОЛЮТНОЕ ЗНАЧЕНИЕ
[IF cond]
AR
= ABS
xop
;
AF
[IF cond]
AR
=
yop + 1
;
AF
Синтаксис:
Допустимые: регистры xop и условия cond см. п. 1.17.5.А.
Пример: IF NEG AF = ABS AX0;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит пересылку содержимого регистра источника в регистр приемник с формированием абсолютной величины операнда. Операнды содержатся в регистрах, которые определены в команде.
Флаги состояния:
ASTAT: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
SS |
MV |
AQ |
AS |
AC |
AV |
AN |
AZ |
|
- |
- |
- |
* |
0 |
* |
* |
* |
AZ – устанавливается, если результат равен нулю и сбрасывается в противном случае. AN – устанавливается, если хор = 0х8000 и сбрасывается в противном случае. AV – устанавливается, если хор = 0х8000 и сбрасывается в противном случае. AC – всегда сбрасывается. AS – устанавливается, если операнд источник отрицательный и сбрасывается в противном случае.
К) ИНКРЕМЕНТ
Синтаксис:
Допустимые: регистры yop и условия cond см. п. 1.17.5.А.
Пример: IF GT AF = AF + 1;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит пересылку содержимого регистра источника в регистр приемник с увеличением на 1 значения операнда. Операнды содержатся в регистрах, которые определены в команде.
Флаги состояния: см. п. 1.17.5.А.
Л) ДЕКРЕМЕНТ
[IF cond]
AR
=
yop – 1
;
AF
Синтаксис:
Допустимые: регистры yop и условия cond см. п. 1.17.5.А.
Пример: IF EQ AR = AY1 – 1;
Описание: Если команда выполняется (условие отсутствует или вернуло TRUE), то процессор производит пересылку содержимого регистра источника в регистр приемник с уменьшением на 1 значения операнда. Операнды содержатся в регистрах, которые определены в команде.
Флаги состояния: см. п. 1.17.5.А.
М) ДЕЛЕНИЕ
Синтаксис: DIVS yop, xop
DIVQ xop
Допустимые:
регистры xop регистры yop
AX0 MR2 AY1
AX1 MR1 AF
AR MR0
SR1
SR0
Описание: Эти команды выполняют деление yop на xop. Команды DIVS, DIVQ являются примитивами, поскольку при их выполнении формируется только один разряд частного: знак – при выполнении команды DIVS и остальные разряды – при выполнении команды DIVQ. Поэтому деление с одинарной точностью (32-битное делимое, 16-битные делитель и частное) требует 16 циклов. Возможно деление с более высокой точностью.
Деление может быть знаковым и беззнаковым, в любом случае операнды должны быть одного типа: знаковые или беззнаковые. Для подготовки деления необходимо старшую часть делимого загрузить в любой допустимый yop регистр (AY1 или AF), младшую часть делимого загрузить в AY0, а делитель загрузить в любой хор.
Далее операция деления выполняется с помощью примитивов деления DIVS, DIVQ. Повторные выполнения DIVQ реализуют алгоритм деления с помощью условного сложения/вычитания без восстановления остатка. После окончания деления частное формируется в AY0.
Для выполнения знакового деления необходимо сначала однократно выполнить команду DIVS, чтобы сформировать знак частного. Далее необходимо выполнить команду DIVQ столько раз, сколько бит осталось в частном (для выполнения знакового деления с одинарной точностью команду DIVQ необходимо выполнить 15 раз).
Для выполнения беззнакового деления необходимо старшую часть делимого загрузить в AF, затем сбросить бит AQ регистра ASTAT (при этом сформируется положительный знак частного). Далее выполнить команду DIVQ столько раз, сколько битов содержит частное (для выполнения беззнакового деления необходимо 16 раз выполнить команду DIVQ).
В конце выполнения команд DIVS, DIVQ очередной бит частного запоминается в бите AQ регистра ASTAT. Остаток формируется в AF, но он нуждается в коррекции.
Флаги состояния:
ASTAT: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
SS |
MV |
AQ |
AS |
AC |
AV |
AN |
AZ |
|
- |
- |
* |
- |
- |
- |
- |
- |
AQ – формируется командами DIVS и DIVQ.
Н) ФОРМИРОВАНИЕ ФЛАГОВ ALU
Синтаксис: NONE = <ALU>;
ALU – может быть любой безусловной командой кроме DIVS и DIVQ.
Примеры: NONE = AX0 – AY0;
NONE = PASS SR0;
Описание: Процессор выполняет команду ALU, формирует флаги состояния, а результат игнорирует. Команда позволяет тестировать содержимое регистров источников без изменения содержимого регистров AR и AF.
Примечание: кроме команд DIVS и DIVQ недопустимо использовать также следующие команды ALU:
сложение (xop + constant);
вычитание X – Y (xop – constant);
вычитание Y – X (- xop + constant);
AND, OR, XOR (xop constant);
PASS constant (отличные от –1, 0, 1);
TSTBIT, SETBIT, CLRBIT, TGLBIT.
Флаги состояния: см. п. 1.17.5.А.
