Приведение от двойного к фиксированной точке

В этом примере показано, как симулировать непрерывный реальный двойной сигнал с использованием обобщенного типа данных с фиксированной точкой. Использование fxpdemo_dbl2fix модель, можно исследовать многие важные функции программного обеспечения Fixed-Point Designer™, включая

  • Типы данных

  • Масштабирование

  • Округление

  • Логгирование минимальных и максимальных значений симуляции в рабочую область

  • Обработка переполнения

Чтобы открыть модель, в MATLAB® командная строка, введите

fxpdemo_dbl2fix

В этом примере вы конфигурируете блок Signal Generator, чтобы вывести сигнал синусоиды с амплитудой, заданной на интервале [-5 5]. Блок Signal Generator всегда выводит числа двойной точности.

The Dbl-to-FixPt Data Type Conversion блок преобразует числа двойной точности из блока Signal Generator в один из типов данных Fixed-Point Designer. Для простоты размер выходного сигнала составляет 5 биты в этом примере.

The FixPt-to-Dbl Data Type Conversion блок преобразует один из типов данных Fixed-Point Designer в Simulink® тип данных. В этом примере он выводит числа двойной точности.

Симулируйте с использованием масштабирования только для двоичных точек

При использовании двоичного масштабирования только для точек, ваша цель состоит в том, чтобы найти оптимальную степень двойки степеней E, как определено в масштабировании. Для этого режима масштабирования дробный наклон F равен 1, и смещения нет.

Чтобы настроить модель, используйте двоичное масштабирование только для точек:

  1. Сконфигурируйте блок Signal Generator, чтобы вывести сигнал синусоиды с амплитудой, заданной на интервале [-5 5].

    1. Дважды кликните Signal Generator блок, чтобы открыть диалоговое окно Block Parameters.

    2. Установите параметр Wave form равным sine.

    3. Установите параметр Amplitude равным 5.

    4. Нажмите OK.

  2. Сконфигурируйте Data Type Conversion (Dbl-to-FixPt) блок.

    1. Дважды кликните Dbl-to-FixPt блок, чтобы открыть диалоговое окно Block Parameters.

    2. Проверьте, что параметр Output data type fixdt(1,5,2). Это задает 5-битный, со знаком, номер с фиксированной точкой с масштабированием 2^-2, который помещает двоичную точку на два места налево от крайнего правого бита. Отсюда максимальное значение 011.11 = 3.75, минимальное значение 100.00 = -4.00, и точность (1/2)2 = 0.25.

    3. Проверьте, что для параметра Integer rounding mode задано значение Floor. Это округляет результат с фиксированной точкой к отрицательной бесконечности.

    4. Установите флажок Saturate on integer overflow, чтобы предотвратить перенос блока при переполнении.

    5. Нажмите OK.

  3. Чтобы симулировать модель, на вкладке Simulation, нажмите Run.

В Scope отображаются идеальные и результаты симуляции с фиксированной точкой.

Симуляция показывает эффекты квантования арифметики с фиксированной точкой. Использование 5-битного слова с точностью (1/2)2 = 0.25 формирует дискретизированный выход, который не охватывает всюсь область значений входного сигнала.

Чтобы охватить полную область значений входного сигнала 5 битами с помощью двоичного масштабирования только с точкой, установите выход масштабирование на 2^-1. Это помещает двоичную точку на одно место налево от крайнего правого бита, давая максимальное значение 0111,1 = 7,5 и минимальное значение 1000,0 = -8,0. Однако точность уменьшается до (1/2)1 = 0.5. Если вы хотите охватить полную область значений входного сигнала 5 битами с помощью двоичного масштабирования только для точек, то ваша единственная опция - пожертвовать точностью. Следовательно, масштабирование выхода 2^-1, который помещает двоичную точку на одно место налево от крайнего правого бита. Это масштабирование дает максимальное значение 0111,1 = 7,5, минимальное значение 1000,0 = -8,0 и точность (1/2)1 = 0.5.

Чтобы увидеть эффект уменьшения точности до 0,5, установите параметр Output data type Dbl-to-FixPt Data Type Conversion блок в fixdt(1,5,1) и повторите симуляцию.

Симулируйте с использованием масштабирования [смещения откоса]

При использовании масштабирования [Смещение уклона] ваша цель состоит в том, чтобы найти оптимальный дробный наклон F и фиксированную степень двойки экспонентов E, как задано в Масштабировании. Нет смещения для этого примера, потому что синусоида определяется интервалом [-5 5].

Чтобы найти наклон, вы начинаете с того, что принимаете фиксированную степень двойки экспоненту -2. Чтобы найти дробный наклон, разделите максимальное значение синусоиды на максимальное значение масштабированного 5-битного числа. Результат 5.00/3.75 = 1.3333. Уклон (и точность) равен 1.3333 (0,25) = 0.3333. Масштабирование [Смещение уклона] задается как [0.3333 0] путем ввода выражения fixdt(1,5,0.3333,0) как значение параметра Output data type.

Можно также задать фиксированную степень двойки экспоненту -1 и соответствующий дробный наклон 0,6667. Получившийся наклон является тем же самым, поскольку E уменьшается на 1 бит, но F увеличивается на 1 бит. Программное обеспечение Fixed-Point Designer автоматически сохраняет F на уровне 1.3332 и E на уровне -2 из-за условия нормализации 1 ≤ F < 2.

Чтобы настроить модель для использования масштабирования [Смещение уклона]:

  1. Сконфигурируйте блок Signal Generator, чтобы вывести сигнал синусоиды с амплитудой, заданной на интервале [-5 5].

    1. Дважды кликните Signal Generator блок, чтобы открыть диалоговое окно Block Parameters.

    2. Установите параметр Wave form равным sine.

    3. Установите параметр Amplitude равным 5.

    4. Нажмите OK.

  2. Сконфигурируйте Dbl-to-FixPt Data Type Conversion блок.

    1. Дважды кликните Dbl-to-FixPt блок, чтобы открыть диалоговое окно Block Parameters.

    2. Чтобы задать масштабирование [Смещение уклона] [0.3333 0], установите параметр Output data type равным fixdt(1,5,0.3333,0).

    3. Проверьте, что параметр Integer rounding mode Floor. Это округляет результат с фиксированной точкой к отрицательной бесконечности.

    4. Установите флажок Saturate on integer overflow, чтобы предотвратить перенос блока при переполнении.

    5. Нажмите OK.

  3. Чтобы симулировать модель, на вкладке Simulation, нажмите Run.

В Scope отображаются идеальные и результаты симуляции с фиксированной точкой.

Если вы не знаете наклона, можно достичь разумных результатов симуляции, выбрав свое масштабирование на основе формулы

(max_valuemin_value)2ws1,

где

  • max_value является максимальным значением, которое будет моделироваться

  • min_value - это минимальное значение, которое будет моделироваться

  • ws - размер слова в битах

  • 2ws - 1 - самое большое значение слова с размером ws

В данном примере формула создает наклон 0,32258.

Похожие темы