-2 02 -12 -22 -32 -42 -52 -62 -72 -82 -92 -102 -112 -122 -132 -142 -15
Для вычисления числа, записанного в этом формате, необходимо подставить вместо цифры 2 значение соответствующего разряда (0 или 1) и сложить все полученные значения. В табл. 12.1 приведены примеры соответствия чисел записанных в шестнадцатеричном виде формата 1.15 их десятичным значениям.
Таблица 12.1 Примеры соответствия чисел, записанных в шестнадцатеричном виде формата 1.15, их десятичным значениям
Число в формате 1.15 |
Число в HEX формате |
Десятичное значение |
0000 0000 0000 0000 |
0x0000 |
+0 |
0000 0000 0000 0001 |
0x0001 |
+0,000030517578125 |
0000 0000 0000 0010 |
0x0002 |
+0,00006103515625 |
1000 0000 0000 0000 |
0x8000 |
-1,000000 |
0111 1111 1111 1111 |
0x7FFF |
+0,999969482421875 |
1111 1111 1111 1111 |
0xFFFF |
-0,000030517578125 |
Как видно из таблицы, самый младший разряд эквивалентен десятичному значению 0,000030517578125. Это значение и определяет точность представления всех чисел в данном формате. Для достижения большей точности необходимо расширять разрядность числа, например программным образом размещая число в два или три 16-разрядных регистра. Аналогично можно увеличить и диапазон обрабатываемых чисел.
В табл. 12.2 приведены все возможные варианты форматов для 16-разрядного числа. Эта таблица дает наглядное представление о том, как изменяется, в зависимости от формата, диапазон представляемых чисел и их точность.
Таблица 12.2 Возможные варианты форматов для 16-разрядного числа
Формат |
Количество целых разрядов |
Количество дробных разрядов |
Максимальное положительное значение |
Максимальное отрицательное значение |
Вес младшего разряда |
1.15 |
1 |
15 |
0,999969482421875 |
-1,0 |
0.000030517578125 |
2.14 |
2 |
14 |
1,999938964843750 |
-2,0 |
0.000061035156250 |
3.13 |
3 |
13 |
3,999877929687500 |
-4,0 |
0.000122070312500 |
4.12 |
4 |
12 |
7,999755859375000 |
-8,0 |
0.000244140625000 |
5.11 |
5 |
11 |
15,999511718750000 |
-16,0 |
0.000488281250000 |
6.10 |
6 |
10 |
31,999023437500000 |
-32,0 |
0.000976562500000 |
7.9 |
7 |
9 |
63,998046875000000 |
-64,0 |
0.001953125000000 |
8.8 |
8 |
8 |
127,996093750000000 |
-128,0 |
0.003906250000000 |
9.7 |
9 |
7 |
255,992187500000000 |
-256,0 |
0.007812500000000 |
10.6 |
10 |
6 |
511,984375000000000 |
-512,0 |
0.015625000000000 |
11.5 |
11 |
5 |
1023,968750000000000 |
-1024,0 |
0.031250000000000 |
12.4 |
12 |
4 |
2047,937500000000000 |
-2048 |
0.062500000000000 |
13.3 |
13 |
3 |
4095,875000000000000 |
-4096,0 |
0.125000000000000 |
14.2 |
14 |
2 |
8191,750000000000000 |
-8192,0 |
0.250000000000000 |
15.1 |
15 |
1 |
16383,500000000000000 |
-16384,0 |
0.500000000000000 |
16.0 |
16 |
0 |
32767,000000000000000 |
-32768,0 |
1.000000000000000 |
Из таблицы видно, что чем больше двоичных разрядов отводится под целую часть числа, тем больший диапазон чисел можно охватить с помощью такого формата. Однако при этом снижается точность представления числа, т.е. его дробная часть сводится к нулю. И наоборот, чем больше двоичных разрядов отводится под дробную часть числа, тем меньший диапазон чисел можно охватить с помощью такого формата. Но при этом увеличивается точность представления числа, т.е. его дробная часть может быть очень малой величиной, составляющей менее одной миллиардной доли единицы.
В зависимости от типа решаемой задачи программист сам определяет, какой именно формат лучше использовать.
В этой главе начинается изложение системы команд сигнального процессора.
Сигнальные процессоры семейства 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 имеет ряд дополнительных команд. Каждая команда может быть выполнена отдельно в своем такте. Кроме того, система команд позволяет выполнять за один такт процессора многофункциональные команды.
Читать дальше