Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Арифметика с фиксированной точкой: форматы данных и реализация операций




Выбор работы каждого из квантователей в режиме с фиксированной или плавающей точкой задаётся значениями параметров колонки Mode, расположенной на странице Set Quan-tization Parameters. Для реализации арифметики с фиксированной точкой необходимо выбрать значение fixed.

Двоичные числа с фиксированной точкой определяются в битах длиной слова w и длиной дробной части числа f. При этом длина дробной части может быть задана в диапазоне от 0 до w - 1 бит. Общее представление числа в формате с фиксированной точкой показано на рис. 9. Пользователь может задавать длину слова до 64-х бит включительно, однако побитовое соответствие результатов моделирования с помощью fdatool и реальной работы целевого компьютера обеспечивается, если длина слова определена в пределах 53 бит. Если же выбранная длина слова находится в диапазоне 54 £ w £ 64, то происходит потеря значимости, то есть в младшие биты записываются нули. В пакете MATLAB и, в частности, в функциях библиотеки Filter Design, формат для чисел с фиксированной точкой задаётся в виде [w, f] в колонке format.


Рисунок 9. Общее представление числа в формате с фиксированной точкой

Числа с фиксированной точкой могут быть беззнаковыми или со знаком. В первом случае старший бит, как и остальные, используется для представления величины числа, тогда как во втором - для его знака (0 соответствует знаку " плюс", 1 - знаку " минус" ). Динамический диапазон для беззнаковых чисел равен [0, 2w–f–2-f ], а для чисел со знаком - [–2w–f-1, 2w–f-1–2-f]. В обоих случаях точность, то есть разность двух ближайших чисел в данном формате, равна = 2-f.

В связи с тем, что результатом квантования является замена квантуемой величины числом из конечного, предопределённого набора чисел, называемых уровнями квантования, необходимо ввести информацию о том, каким образом эту замену выполнять (значения и число уровней квантования определяются используемым форматом). Для этого в программе fdatool имеется поле Round mode, где для каждого квантователя можно выбрать способ округления. Пользователь имеет возможность выбрать один из следующих режимов:

ceil - результат равен значению ближайшего уровня квантования в сторону плюс бесконечности;

fix - результат равен значению ближайшего уровня квантования в сторону нуля;

floor - результат равен значению ближайшего уровня квантования в сторону минус бесконечности;

round - результат равен значению ближайшего уровня квантования; если квантуемая отрицательная величина лежит ровно посередине между уровнями квантования, результатом является значение ближайшего уровня в сторону минус бесконечности;

если квантуемая положительная величина лежит ровно посередине между уровнями квантования, результатом является значение ближайшего уровня квантования в сторону плюс бесконечности;

convergent - способ округления такой же, как и round, однако, если квантуемая величина лежит ровно посередине между уровнями квантования, то округление по правилам round выполняется лишь в том случае, когда в младший бит после округления записывается единица.

Когда квантованию подвергается величина, значение которой находится за пределами динамического диапазона квантователя, возникает явление переполнения. Способ обработки таких величин задаётся в поле Overflow Mode (режим переполнения) для каждого квантователя. Пользователь может выбрать режим saturate или wrap.

Режим saturate означает разрешение работы с насыщением: квантуемая величина, лежащая вне динамического диапазона, полагается равной ближайшему предельно допустимому числу. В случае выбора режима wrap, старшие биты квантуемой величины, лежащей вне динамического диапазона, будут отброшены, и результат квантования будет представлен младшими w-битами, при этом для чисел со знаком старший бит b w–1 интерпретируется как знаковый (рис. 9).

Рассмотрим следующий пример. Пусть имеются два квантователя - q1 и q2, для которых задан формат fixed [3 2], и пусть первый из них работает в режиме saturate, а второй — в режиме wrap. В этом случае шаг квантования для обоих квантователей = 0, 25, динамический диапазон - [-1, 0, 75]. Если входная квантуемая величина равна 1, 25, то на выходах этих квантователей будем иметь:

0, 75 для квантователя q1;
-0, 75 для квантователя q2.

Аналогично, если квантуемая величина равна -1, 25, результатами квантования будут следующие значения:

-1 для квантователя q1;
0, 75 для квантователя q2.

На рис. рис. 10 а-г показано, как формируются значения на выходе каждого из квантователей для рассмотренных четырёх случаев.


Рисунок 10. Варианты квантования в режиме переполнения: положительного числа квантователем q1 (а), положительного числа квантователем q2 (б), отрицательного числа квантователем q1 (в) и отрицательного числа квантователем q2 (г)

Функции библиотеки Filter Designer позволяют использовать два типа квантователей: quantizer и unitquantizer. Они работают практически одинаково, за исключением того, что на выходе квантователя unitquantizer будет единица, если на его вход поступает величина из диапазона [1– , 1+ ]. Например, пусть тип первого из рассмотренных нами выше квантователей (q1) quantizer, а второго (q2) - unitquantizer. Если на вход q1 подать единицу, то возникнет переполнение, так как используется формат fixed [3, 2], и на выходе будет значение 0, 75 (максимальная величина динамического диапазона квантователя q1). Если же единицу подать на вход квантователя q2, переполнения не возникнет, а на его выходе будет единица. В fdatool выбор типа квантователя осуществляется на странице Set Quantization Parameters в колонке Quantizer Type.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...