Масштабированные двойки являются гибридом между числами с плавающей точкой и с фиксированной точкой. Программное обеспечение Fixed-Point Designer™ сохраняет их как число в два раза с сохраненной информацией о масштабировании, знаке и размере слова. Например, контейнер хранения для типа данных с фиксированной точкой sfix16_En14
является int16
. Контейнер хранения с эквивалентным масштабом удваивает тип данных, flts16_En14
- с плавающей точкой double
. Программное обеспечение Fixed-Point Designer применяет информацию масштабирования к сохраненной двойной точке с плавающей точкой для получения реального значения. Хранение значения в двойке почти всегда устраняет проблемы переполнения и точности.
Контейнер хранения для масштабированных типов данных double и double является плавающим double
. Поэтому оба типа данных переопределяют настройки, Double
и Scaled double
, обеспечивают область значений и преимущества точности двойки с плавающей точкой. Масштабированные двойные сохраняют информацию об указанном типе данных и масштабировании, но двойные не сохраняют эту информацию. Поскольку масштабированные двойные значения сохраняют информацию о заданном масштабировании, они также могут использоваться для обнаружения переполнения.
Рассмотрим пример, где вы хотите хранить значение 0.75001
степени Цельсия в типе данных sfix16_En13
. Для этого типа данных:
Уклон следующий .
Смещение является .
Использование масштабирующего уравнения где V - значение реального мира, а Q - сохраненное целое число:
.
.
Поскольку контейнер хранения данных типа 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 предоставляет информацию, которую фрагменты модели с фиксированной точкой нуждаются в последовательном распространении типа данных.