В этом примере показано, как симулировать непрерывный реальный двойной сигнал с использованием обобщенного типа данных с фиксированной точкой. Использование 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, и смещения нет.
Чтобы настроить модель, используйте двоичное масштабирование только для точек:
Сконфигурируйте блок Signal Generator, чтобы вывести сигнал синусоиды с амплитудой, заданной на интервале [-5 5]
.
Дважды кликните Signal Generator блок, чтобы открыть диалоговое окно Block Parameters.
Установите параметр Wave form равным sine
.
Установите параметр Amplitude равным 5
.
Нажмите OK.
Сконфигурируйте Data Type Conversion (Dbl-to-FixPt) блок.
Дважды кликните Dbl-to-FixPt блок, чтобы открыть диалоговое окно Block Parameters.
Проверьте, что параметр Output data type fixdt(1,5,2)
. Это задает 5-битный, со знаком, номер с фиксированной точкой с масштабированием 2^-2
, который помещает двоичную точку на два места налево от крайнего правого бита. Отсюда максимальное значение 011.11 = 3.75, минимальное значение 100.00 = -4.00, и точность (1/2)2 = 0.25.
Проверьте, что для параметра Integer rounding mode задано значение Floor
. Это округляет результат с фиксированной точкой к отрицательной бесконечности.
Установите флажок Saturate on integer overflow, чтобы предотвратить перенос блока при переполнении.
Нажмите OK.
Чтобы симулировать модель, на вкладке 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.
Чтобы настроить модель для использования масштабирования [Смещение уклона]:
Сконфигурируйте блок Signal Generator, чтобы вывести сигнал синусоиды с амплитудой, заданной на интервале [-5 5]
.
Дважды кликните Signal Generator блок, чтобы открыть диалоговое окно Block Parameters.
Установите параметр Wave form равным sine
.
Установите параметр Amplitude равным 5
.
Нажмите OK.
Сконфигурируйте Dbl-to-FixPt
Data Type Conversion блок.
Дважды кликните Dbl-to-FixPt блок, чтобы открыть диалоговое окно Block Parameters.
Чтобы задать масштабирование [Смещение уклона] [0.3333 0], установите параметр Output data type равным fixdt(1,5,0.3333,0)
.
Проверьте, что параметр Integer rounding mode Floor
. Это округляет результат с фиксированной точкой к отрицательной бесконечности.
Установите флажок Saturate on integer overflow, чтобы предотвратить перенос блока при переполнении.
Нажмите OK.
Чтобы симулировать модель, на вкладке Simulation, нажмите Run.
В Scope отображаются идеальные и результаты симуляции с фиксированной точкой.
Если вы не знаете наклона, можно достичь разумных результатов симуляции, выбрав свое масштабирование на основе формулы
где
max_value является максимальным значением, которое будет моделироваться
min_value - это минимальное значение, которое будет моделироваться
ws - размер слова в битах
2ws - 1 - самое большое значение слова с размером ws
В данном примере формула создает наклон 0,32258.