Арифметика с фиксированной точкой: форматы данных и реализация операций
Выбор работы каждого из квантователей в режиме с фиксированной или плавающей точкой задаётся значениями параметров колонки Mode, расположенной на странице Set Quan-tization Parameters. Для реализации арифметики с фиксированной точкой необходимо выбрать значение fixed. Двоичные числа с фиксированной точкой определяются в битах длиной слова w и длиной дробной части числа f. При этом длина дробной части может быть задана в диапазоне от 0 до w - 1 бит. Общее представление числа в формате с фиксированной точкой показано на рис. 9. Пользователь может задавать длину слова до 64-х бит включительно, однако побитовое соответствие результатов моделирования с помощью fdatool и реальной работы целевого компьютера обеспечивается, если длина слова определена в пределах 53 бит. Если же выбранная длина слова находится в диапазоне 54 £ w £ 64, то происходит потеря значимости, то есть в младшие биты записываются нули. В пакете MATLAB и, в частности, в функциях библиотеки Filter Design, формат для чисел с фиксированной точкой задаётся в виде [w, f] в колонке format. Числа с фиксированной точкой могут быть беззнаковыми или со знаком. В первом случае старший бит, как и остальные, используется для представления величины числа, тогда как во втором - для его знака (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; Аналогично, если квантуемая величина равна -1, 25, результатами квантования будут следующие значения: -1 для квантователя q1; На рис. рис. 10 а-г показано, как формируются значения на выходе каждого из квантователей для рассмотренных четырёх случаев. Функции библиотеки 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|