В этом примере показов, как использовать Fixed-Point Tool для сравнения с плавающей точкой и типами данных с фиксированной точкой в вашей модели. Можно использовать функциональность набора областей значений, чтобы исследовать и диагностировать численное поведение вашей модели для различных входов.
В этом руководстве используется фильтр прямой формы с фиксированной точкой, реализованный с использованием фундаментальных базовых блоков, таких как Gain, Delay и Sum. Модель содержит блок Signal Generator, который подает вход квадратной волны в фильтр. В этом руководстве вы исследуете поведение фильтра для области значений входов сигнала.
Чтобы открыть fxpdemo_direct_form2
пример, в MATLAB® в командной строке введите:
fxpdemo_direct_form2
Чтобы задать несколько сценариев симуляции для набора области значений, задайте Simulink.SimulationInput
объект в базовое рабочее пространство или рабочее пространство модели. Задайте Simulink.SimulationInput
объект, simIn
, который задает амплитуду входного сигнала квадратной волны для области значений.
simIn(1:6) = Simulink.SimulationInput('fxpdemo_direct_form2'); simIn(1) = simIn(1).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','0.001'); simIn(2) = simIn(2).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','0.01'); simIn(3) = simIn(3).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','0.1'); simIn(4) = simIn(4).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','1'); simIn(5) = simIn(5).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','10'); simIn(6) = simIn(6).setBlockParameter('fxpdemo_direct_form2/Input','Amplitude','100');
Этот Fixed-Point Tool собирает области значений для каждого заданного сценария и объединяет результаты из всех симуляций запусков. Объединение позволяет вам исследовать численное поведение вашей модели в полной области значений симуляции.
Чтобы задать допуски сигнала, включите регистрацию сигнала на выходе блока Sum1.
Simulink.sdi.markSignalForStreaming('fxpdemo_direct_form2/Sum1',1,'on');
На вкладке Apps fxpdemo_direct_form2
модель, выберите Fixed-Point Tool.
В окне «Fixed-Point Tool» нажмите кнопку New > Range Collection.
В группе System Under Design (SUD) выберите fxpdemo_direct_form2
.
В разделе Range Collection Mode выберите Simulation Ranges в качестве метода набора областей значений.
В разделе Simulation Inputs выберите Simulink.SimulationInput
объект, simIn
, который вы определили в базовом рабочем пространстве.
Чтобы задать допуски для системы, под Signal Tolerances задайте допуски для любого сигнала в модели с включённым логгированием сигналов.
Установите относительную погрешность (Rel Tol) сигнала, который вы зарегистрировали, равным 15%.
В группе Collect Ranges выберите Double precision
.
Когда вы собираете области значений через симуляцию, Fixed-Point Tool переопределяет типы данных в вашей модели на doubles и симулирует модель с инструментированием, чтобы собрать минимальные и максимальные значения для каждого объекта в вашей модели. Можно также принять решение переопределить типы данных с помощью синглов или масштабированных двойных чисел, или использовать текущий набор переопределений типа данных в модели.
Нажмите кнопку Collect Ranges.
Simulink® моделирует fxpdemo_direct_form2
модель шесть раз, один раз для каждой амплитуды входа квадратной волны, заданной в Simulink.SimulationInput
объект. Этот Fixed-Point Tool автоматически включает инструментирование с фиксированной точкой и переопределяет типы данных в вашей модели с двойками, чтобы собрать базовую линию с плавающей точкой.
Можно просмотреть области значений каждого моделирования по отдельности, выбрав сценарий моделирования в Workflow Browser.
Выбор BaselineRun
узел в Workflow Browser показывает объединенные области значений из шести сценариев симуляции.
Нажмите Settings, затем выберите Specified data types
.
Нажмите Simulate with Embedded Types.
Этот Fixed-Point Tool моделирует модель один раз для каждого сценария симуляции, используя типы данных с фиксированной точкой, заданные в модели. Выбор EmbeddedRun
узел в Workflow Browser показывает объединенные результаты из шести сценариев симуляции.
Этот Workflow Browser указывает, что только из шести сценариев симуляции EmbeddedRun_Scenario_4
соответствовали указанным допускам. Результаты с переполнениями подсвечиваются красным цветом.
Выберите вкладку Explore Fixed-Point Tool для дальнейшего исследования. В группе Numerical Issues выберите Overflow
, затем нажмите Execution Order.
В Fixed-Point Tool отображается только EmbeddedRun
результаты с переполнениями и сортировка списка на основе порядка выполнения блока. В этом примере первое переполнение происходит в блоке Gain4.
Можно дважды кликнуть по любой строке в Results электронной таблице, чтобы подсветить блок в модели.
Можно сравнить поведение модели с фиксированной и плавающей точками для определенного сценария симуляции с помощью Данных моделирования Inspector. Для примера Fixed-Point Tool указывает, что EmbeddedRun_Scenario_3
не соответствует указанному допуску. Чтобы сравнить этот встроенный запуск с поведением с плавающей точкой для этого сценария симуляции, щелкните правой кнопкой мыши EmbeddedRun_Scenario_3
и выберите Open SDI для сравнения с BaselineRun_Scenario_3
.
Данные моделирования Inspector строят графики записанного сигнала, сопоставленного с выходом Sum1
блок для BaselineRun_Scenario_3
и EmbeddedRun_Scenario_3
, а также их различие и допуск, заданный для этого сигнала.
Автомасштабирование с использованием Fixed-Point Tool | Управление видами в Fixed-Point Tool | Предложите типы данных для объединённых областей значений симуляции