Масштабированные двойки

Что такое масштабируемые двойки?

Масштабированные двойки являются гибридом между числами с плавающей точкой и с фиксированной точкой. Программное обеспечение Fixed-Point Designer™ сохраняет их как число в два раза с сохраненной информацией о масштабировании, знаке и размере слова. Например, контейнер хранения для типа данных с фиксированной точкой sfix16_En14 является int16. Контейнер хранения с эквивалентным масштабом удваивает тип данных, flts16_En14 - с плавающей точкой double. Программное обеспечение Fixed-Point Designer применяет информацию масштабирования к сохраненной двойной точке с плавающей точкой для получения реального значения. Хранение значения в двойке почти всегда устраняет проблемы переполнения и точности.

В чем различие между масштабируемыми типами данных Double и Double?

Контейнер хранения для масштабированных типов данных double и double является плавающим double. Поэтому оба типа данных переопределяют настройки, Double и Scaled double, обеспечивают область значений и преимущества точности двойки с плавающей точкой. Масштабированные двойные сохраняют информацию об указанном типе данных и масштабировании, но двойные не сохраняют эту информацию. Поскольку масштабированные двойные значения сохраняют информацию о заданном масштабировании, они также могут использоваться для обнаружения переполнения.

Рассмотрим пример, где вы хотите хранить значение 0.75001 степени Цельсия в типе данных sfix16_En13. Для этого типа данных:

  • Уклон следующий S=213.

  • Смещение является B=0.

Использование масштабирующего уравнения VV~=SQ+B, где V - значение реального мира, а Q - сохраненное целое число:

  • B=0.

  • V~=SQ=213Q=0.75001.

Поскольку контейнер хранения данных типа sfix16_En13 является 16 битами, сохраненное целое число Q может быть представлено только в виде целого числа в этих 16 битах. Поэтому идеальное значение Q квантуется, чтобы 6144, вызывая потерю точности.

Если вы переопределяете тип данных sfix16_En13 с Doubleтип данных изменяется на Double и вы теряете информацию о масштабировании. Сохраненное значение равняется вещественному значению 0.75001.

Если вы переопределяете тип данных sfix16_En13 с Scaled Doubleтип данных изменяется на flts16_En13. Масштабирование по-прежнему определяется _En13 и идентичен типу исходных данных. Единственным различием является контейнер хранения, используемый для хранения сохраненного значения, которое теперь double таким образом, сохраненное значение 6144.08192. Этот пример показывает одно преимущество использования масштабированных двойок: виртуальное устранение ошибок квантования.

Когда использовать масштабированные двойки

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

Масштабированные двойки полезны для:

  • Проверка и отладка

  • Обнаружение переполнений

  • Применение переопределений типов данных к отдельным подсистемам

    Если вы применяете переопределение типа данных к подсистемам в вашей модели, а не ко всей модели, Scaled double предоставляет информацию, которую фрагменты модели с фиксированной точкой нуждаются в последовательном распространении типа данных.

Похожие темы