Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ — страница 23 из 43

В табл. 12.2 приведены все возможные варианты форматов для 16-разрядного числа. Эта таблица дает наглядное представление о том, как изменяется, в зависимости от формата, диапазон представляемых чисел и их точность.


Таблица 12.2 Возможные варианты форматов для 16-разрядного числа

ФорматКоличество целых разрядовКоличество дробных разрядовМаксимальное положительное значениеМаксимальное отрицательное значениеВес младшего разряда
1.151150,999969482421875-1,00.000030517578125
2.142141,999938964843750-2,00.000061035156250
3.133133,999877929687500-4,00.000122070312500
4.124127,999755859375000-8,00.000244140625000
5.1151115,999511718750000-16,00.000488281250000
6.1061031,999023437500000-32,00.000976562500000
7.97963,998046875000000-64,00.001953125000000
8.888127,996093750000000-128,00.003906250000000
9.797255,992187500000000-256,00.007812500000000
10.6106511,984375000000000-512,00.015625000000000
11.51151023,968750000000000-1024,00.031250000000000
12.41242047,937500000000000-20480.062500000000000
13.31334095,875000000000000-4096,00.125000000000000
14.21428191,750000000000000-8192,00.250000000000000
15.115116383,500000000000000-16384,00.500000000000000
16.016032767,000000000000000-32768,01.000000000000000

Из таблицы видно, что чем больше двоичных разрядов отводится под целую часть числа, тем больший диапазон чисел можно охватить с помощью такого формата. Однако при этом снижается точность представления числа, т.е. его дробная часть сводится к нулю. И наоборот, чем больше двоичных разрядов отводится под дробную часть числа, тем меньший диапазон чисел можно охватить с помощью такого формата. Но при этом увеличивается точность представления числа, т.е. его дробная часть может быть очень малой величиной, составляющей менее одной миллиардной доли единицы.

В зависимости от типа решаемой задачи программист сам определяет, какой именно формат лучше использовать.

Глава 13. Система команд

В этой главе начинается изложение системы команд сигнального процессора.

Сигнальные процессоры семейства ADSP-21XX используют единую систему команд для совместимости с устройствами с более высокой интеграцией. Процессоры ADSP-2181 имеют ряд дополнительных команд. Каждая команда может быть выполнена в процессоре за один такт. Кроме того, система команд процессора позволяет выполнять за один такт многофункциональные команды. Как было сказано ранее, язык ассемблер семейства ADSP-21XX использует высокоуровневый алгебраический синтаксис записи команд, что облегчает их понимание и запоминание. Операнды источника и приемника команды явно присутствуют в ее записи в виде мнемоники. Мнемоника основных регистров процессора с описанием их назначения приводится в табл. 13.1.


Таблица 13.1 Мнемоника основных регистров процессора с описанием их назначения

МнемоникаОпределение
AX0, AX1, AY0, AY1Входные регистры АЛУ
ARРегистр результата АЛУ
AFРегистр обратной связи АЛУ
MX0, MX1, MY0, MY1Входные регистры умножителя MAC
MR0, MR1, MR2Регистры результата умножителя
MFРегистр обратной связи умножителя
SIВходной регистр устройства сдвига Shifter
SEРегистр экспоненты устройства сдвига
SR0, SR1Регистры результата устройства сдвига
SBРегистр блочного сдвига (используется в блочных операциях с плавающей точкой)
PXРегистр шинного обмена памяти программ PM с памятью данных DM
I0–I7Индексные регистры генераторов адреса DAG
M0–M7Регистры модификации DAG
L0–L7Регистры длины DAG (для циклических буферов)
PCПрограммный счетчик
CNTRСчетчик циклов
ASTATРегистр арифметического статуса
MSTATРегистр статуса режима
SSTATРегистр статуса стека
IMASKРегистр маски прерываний
ICNTLРегистр режимов управления прерываниями
RX0, RX1Регистры приема данных последовательных портов SPORT
TX0, TX1Регистры передачи данных последовательных портов SPORT

Набор команд ADSP-2181 совместим вверх с набором команд ADSP-21XX, поэтому, программы, написанные для ADSP-21XX, могут выполняться на ADSP-2181 с минимальными изменениями. Процессор ADSP-2181 имеет ряд дополнительных команд. Каждая команда может быть выполнена отдельно в своем такте. Кроме того, система команд позволяет выполнять за один такт процессора многофункциональные команды.

Язык ассемблера позволяет использовать в командах арифметические или логические выражения. Список этих выражений и выполняемых с их помощью действий приведен в табл. 13.2.


Таблица 13.2 Список арифметических или логических выражений и выполняемых с их помощью действий

ВыражениеДействие
=Присвоение
+Сложение
-Вычитание
*Умножение
ANDЛогическое «И»
ORЛогическое «ИЛИ»
NOTЛогическое отрицание
XORИсключающее «ИЛИ»
PASSПересылка
ABSАбсолютное значение

Ниже приведены примеры записи некоторых команд языка ассемблера ADSP-21XX с объяснением их назначения.

DM(var1) = AX0;

Эта команда, знакомая читателям из предыдущих примеров программ, присваивает (записывает) значение регистра AX0 переменной var1, хранящейся в памяти данных.

MR = MR + MX1*MY1;

Данная команда выполняет операцию умножения и сложения. Он умножает входные значения из регистров MX1 и MY1, складывает результат умножения с текущим содержимым регистра MR (результат предыдущего умножения), а затем записывает результат в регистр MR.

При рассмотрении системы команд мы будем пользоваться условными обозначениями, приведенными в табл. 13.3. Эти обозначения позволяют сделать описание команд компактным.


Таблица 13.3 Условные обозначения системы команд

ОбозначениеОписание
I0–I7Индексные регистры DAG для косвенной адресации
M0–M7Регистры модификации DAG для косвенной адресации
L0–L7Регистры длины DAG для циклических буферов
Непосредственное значение данных
Непосредственное значение адреса (абсолютный адрес или программная метка)
Порядок (значение сдвига) в командах непосредственного сдвига (8-разрядное знаковое число)
condКод условия в условных командах
termКод условия выхода из цикла DO UNTIL
dregРегистры данных (АЛУ, умножителя-накопителя или устройства сдвига)
regЛюбой регистр (включая регистры данных «dreg»)
;Точка с запятой, разделитель команд
,Запятая, разделитель нескольких операций в одной команде
[]Квадратные скобки, содержащие дополнительные, необязательные части команд
[, …]Запись нескольких операций или команд в любом порядке, разделенных запятыми
|опция1| |опция2| |опция3|Список опций (в команде выбирается одна из опций)
xopОперанд «x»
yopОперанд «y»
constantОперанд-константа

В табл. 13.4 приведен список регистров, допустимых к использованию в командах пересылки и многофункциональных командах.


Таблица 13.4 Список регистров допустимых к использованию в командах пересылки и многофункциональных командах

РегистрПримечание
Регистры данных
AX0, АХ1, AY0, AY1
AR
MX0, МХ1, MY0, MY1
MR0, MR1, MR2