Шрифт:
21521421321221121029282726252423222120
Под двоичными числами без знака понимаются положительные числа. Диапазон их представления в процессоре в два раза больше чем у чисел со знаком, за счет самого знакового разряда. Фактически они выглядят также, как двоичная строка.
Знаковые числа можно отнести к числам в дополнительном коде. Большинство операций процессора поддерживают работу с числами в дополнительном коде. Процессоры семейства ADSP-21XX не поддерживают работу с остатками и числами в двоично-десятичном формате BCD (Binary Coded Decimal), когда каждая десятичная цифра представляется 4-битным двоичным позиционным кодом. Ниже приведены весовые значения битов для этого формата знаковых чисел.
– 2021421321221121029282726252423222120
Дробное представление чисел имеет формат записи 1.15. Это означает, что 16-разрядное число имеет один знаковый разряд и пятнадцать дробных битов. Ниже представлены весовые значения битов в формате 1.15.
– 202– 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 |
Из таблицы видно, что чем больше двоичных разрядов отводится под целую часть числа, тем больший диапазон чисел можно охватить с помощью такого формата. Однако при этом снижается точность представления числа, т.е. его дробная часть сводится к нулю. И наоборот, чем больше двоичных разрядов отводится под дробную часть числа, тем меньший диапазон чисел можно охватить с помощью такого формата. Но при этом увеличивается точность представления числа, т.е. его дробная часть может быть очень малой величиной, составляющей менее одной миллиардной доли единицы.
В зависимости от типа решаемой задачи программист сам определяет, какой именно формат лучше использовать.
Глава 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 |