В этом примере показано, как использовать 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 заменит типы данных в вашей модели с, удваивается, и симулируйте модель с инструментированием, чтобы собрать минимальные и максимальные значения для каждого объекта в вашей модели. Можно также принять решение заменить типы данных с одиночными играми, или масштабируемый удваивается, или используйте текущий набор переопределения типа данных на модели.
Нажмите кнопку 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, чтобы подсветить блок в модели.
Можно сравнить фиксированную точку и поведение с плавающей точкой модели для определенного сценария симуляции с помощью Инспектора Данных моделирования. Например, Fixed-Point Tool указывает на тот EmbeddedRun_Scenario_3
не соответствовал заданному допуску. Чтобы сравнить этот встроенный запуск с поведением с плавающей точкой для этого сценария симуляции, щелкните правой кнопкой по EmbeddedRun_Scenario_3
и выберите Open SDI, чтобы соответствовать BaselineRun_Scenario_3
.
Инспектор Данных моделирования строит регистрируемый сигнал, сопоставленный с выходом Sum1
блокируйтесь для BaselineRun_Scenario_3
и EmbeddedRun_Scenario_3
, а также их различие и допуск заданы для этого сигнала.
Автомасштабирование Используя Fixed-Point Tool | Управляйте представлениями в Fixed-Point Tool | Предложите типы данных для объединенных областей значений симуляции