Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
Шрифт:
Как видим, результат получился верным.
При записи числа в дробном формате предполагается, что запятая размещается между какими-то определенными двоичными разрядами в числе. Биты слева от запятой представляют целую часть числа, а биты справа от запятой дробную часть числа. Существует два способа указания местоположения запятой, в формате с фиксированной точкой и в формате с плавающей точкой.
Формат с фиксированной точкой располагает запятую в одном, предопределенном месте. Часто это местоположение слева от всех разрядов числа, когда все разряды отводятся под дробную часть, или справа от всех разрядов, когда все разряды отводятся под целую часть. Местоположение запятой устанавливается программным способом. Некоторые арифметические операции, например умножение, могут изменять позицию запятой, поэтому может
Формат с плавающей точкой состоит из двух частей, которые представляют значение мантиссы и экспоненты числа. Экспонента указывает местоположение запятой. Она может храниться вместе с мантиссой или в отдельном регистре.
Семейство процессоров ADSP-21XX поддерживают операции с числами в формате с фиксированной точкой. В настоящем изложении при указании формата числа используется запись L.R, где L — число двоичных разрядов слева от запятой, a R — число разрядов справа от запятой. Например, формат записи 1.15 указывает на то, что дробное число имеет один знаковый разряд и 15 разрядов для представления величины дробной части. Целое число имеет для такого представления формат записи 16.0. Для большинства приложений обработки сигналов предполагается использование дробных чисел в формате 1.15, поскольку умножитель и делитель процессора ADSP-2181 оптимизированы для операций с числами именно в таком формате.
Ассемблер ADSP-21XX поддерживает четыре формата представления данных при вычислениях. Формат представления данных имеет следующие условные названия: двоичная строка, двоичные числа без знака, знаковые числа в дополнительном коде и дробное представление.
Двоичная строка является самым простым форматом представления чисел в процессорах семейства ADSP-21XX. Этот формат используется при выполнении элементарных логических операций типа NOT, OR, AND и XOR. Ниже приведены весовые значения битов для этого формата записи.
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 |
Как
В табл. 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 |
Из таблицы видно, что чем больше двоичных разрядов отводится под целую часть числа, тем больший диапазон чисел можно охватить с помощью такого формата. Однако при этом снижается точность представления числа, т.е. его дробная часть сводится к нулю. И наоборот, чем больше двоичных разрядов отводится под дробную часть числа, тем меньший диапазон чисел можно охватить с помощью такого формата. Но при этом увеличивается точность представления числа, т.е. его дробная часть может быть очень малой величиной, составляющей менее одной миллиардной доли единицы.