Преобразуйте модель с плавающей точкой в фиксированную точку

В этом примере узнайте, как:

  • Преобразуйте систему с плавающей точкой в эквивалентное представление с фиксированной точкой.

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

  • Замените блоки, которые не поддерживаются для преобразования, приближением интерполяционной таблицы.

    На этапе подготовки преобразования Fixed-Point Tool изолирует любые блоки, которые не поддерживают преобразование с фиксированной точкой, помещая эти блоки в подсистему, окруженную блоками с Data Type Conversion. Можно использовать Lookup Table Optimizer, чтобы заменить неподдерживаемые блоки приближением интерполяционной таблицы.

Настройте модель

Откройте модель и сконфигурируйте ее для преобразования с фиксированной точкой.

open_system('ex_fixed_point_workflow')

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

Это строение позволяет вам изменять входы и собирать данные моделирования для нескольких стимулов. Затем можно изучить поведение подсистемы с различными входными областями значений и масштабировать типы данных с фиксированной точкой, чтобы обеспечить максимальную точность с учетом полной области значений симуляции.

Чтобы сравнить поведение до и после преобразования, включите логгирование сигнала на выходах системы под проект.

ph = get_param('ex_fixed_point_workflow/Controller Subsystem','PortHandles');
set_param(ph.Outport(1),'DataLogging','on')
set_param(ph.Outport(2),'DataLogging','on')

Подготовка системы к преобразованию

Чтобы преобразовать модель в фиксированную точку, используйте Fixed-Point Tool.

  1. В Apps галерее ex_fixed_point_workflow модель, выберите Fixed-Point Tool.

  2. В Fixed-Point Tool, под New потока операций, выберите Iterative Fixed-Point Conversion.

  3. В разделе System Under Design (SUD) выберите подсистему, которую вы хотите преобразовать в фиксированную точку. В этом примере выберите Controller Subsystem.

  4. В разделе Range Collection Mode выберите Simulation Ranges в качестве метода набора областей значений.

  5. В разделе Simulation Inputs можно задать Simulink.SimulationInput преследует цель осуществить ваш проект в полной рабочей области значений. В этом примере установите Simulation inputs равным Use default model inputs.

  6. Чтобы задать допуски для системы, в таблице под Signal Tolerances, задайте допуски для любого сигнала в модели с включённым логгированием сигналов. Для получения дополнительной информации см. Раздел «Задание допусков сигналов».

    Установите относительную погрешность (Rel Tol) сигналов, которые вы записали, равным 15%.

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

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

Сбор областей значений

По умолчанию Fixed-Point Tool использует текущий набор переопределений типа данных на модели. В данном примере переопределите типы данных в модели с двойной точностью для запуска набора области значений.

  1. Разверните стрелу кнопки Collect Ranges и выберите Double precision.

  2. Щелкните Collect Ranges , чтобы симулировать модель.

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

На панели Visualization of Simulation Data отображается другое представление результатов симуляции. Выберите вкладку Explore инструмента Fixed-Point Tool для дополнительных инструментов сортировки и фильтрации данных в электронной таблице и визуализации.

Преобразование типов данных

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

  1. В Convert разделе панели инструментов нажмите кнопку Propose Data Types.

    Этот Fixed-Point Tool анализирует масштабирование всех блоков с фиксированной точкой, чей параметр Lock output data type setting against changes by the fixed-point tools не выбран.

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

    Можно отредактировать настройки предложения, нажав кнопку Settings в Convert разделе панели инструментов перед предложением типов.

  2. Инструмент отображает предложенные типы данных в столбце ProposedDT в электронной таблице.

    По умолчанию он устанавливает флажок Accept для каждого результата, где предложенный тип данных отличается от текущего типа данных объекта. Если вы применяете типы данных, инструмент применяет эти предложенные типы данных к проектируемой системе.

  3. Исследуйте результаты, чтобы решить любые проблемы и убедиться, что вы хотите принять предложенный тип данных для каждого результата. Панель Visualization of Simulation Data указывает результаты, которые будут содержать переполнения или нижние потоки с красным или желтым треугольником, соответственно. Подтексты могут быть источниками числовых проблем, но иногда могут быть безопасно проигнорированы.

    Инструмент с фиксированной точкой указывает результаты, предложенный тип данных которых конфликтует с другим типом с красным значком. В этом примере никакие результаты не содержат конфликтов. Дополнительные сведения см. в разделе «Изучение результатов для разрешения конфликтов».

  4. После просмотра результатов и обеспечения отсутствия проблем вы готовы применить предложенные типы данных к модели. Щелкните Apply Data Types, чтобы записать предложенные типы данных в модель.

    Этот Fixed-Point Tool применяет предложения по типам данных к блокам в системе, находящейся под проект.

Проверьте новые настройки

Затем снова симулируйте модель с помощью новых настроек с фиксированной точкой. Затем используйте возможности построения графиков Данные Моделирования Inspector, чтобы сравнить результаты из BaselineRun с плавающей точкой запуск с результатами с фиксированной точкой.

  1. Нажмите Simulate with Embedded Types. Fixed-Point Tool моделирует модель с помощью новых типов данных с фиксированной точкой и хранит информацию о запуске в новом запуске под названием EmbeddedRun.

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

  2. Исследуйте гистограммы на панели Visualization of Simulation Data, чтобы убедиться, что переполнения или насыщения нет. Переполнения и насыщения отмечены красным треугольником.

  3. Браузер рабочих процессов указывает, что все сигналы, для которых вы указали допуски, прошли.

  4. Щелкните Compare Results, чтобы открыть Данные моделирования Inspector. В Данные моделирования Inspector выберите один из зарегистрированных сигналов, чтобы просмотреть поведение симуляции с фиксированной точкой.

Замените неподдерживаемые блоки приближением интерполяционной таблицы

На шаге Подготовка системы к преобразованию рабочего процесса Fixed-Point Tool поместил Exp блок, который не поддерживается для преобразования, в подсистему, окруженную Data Type Conversion блоками. На этом шаге вы заменяете подсистему приближением интерполяционной таблицы.

  1. Чтобы получить список всех подсистем, Fixed-Point Tool развязаны для преобразования, в командной строке введите:

    decoupled = DataTypeWorkflow.findDecoupledSubsystems('ex_fixed_point_workflow')
    decoupled =
    
      1×2 table
    
        ID                         BlockPath                      
        __    ____________________________________________________
    
        1     {'ex_fixed_point_workflow/Controller Subsystem/Exp'}

    The DataTypeWorkflow.findDecoupledSubsystems функция возвращает таблицу, содержащую путь к блокам любых подсистем, которые были созданы с помощью Fixed-Point Tool, чтобы изолировать неподдерживаемый блок.

  2. Откройте Lookup Table Optimizer. В Apps галерее выберите Lookup Table Optimizer.

  3. На Objective странице Lookup Table Optimizer выберите Simulink block or subsystem. Нажмите Next.

  4. В разделе Block Information скопируйте из командной строки и вставьте путь в подсистему, созданную инструментом Fixed-Point Tool.

  5. Нажмите кнопку Collect Current Values from Model, чтобы обновить диаграмму модели и позволить Lookup Table Optimizer автоматически собирать информацию, необходимую для процесса оптимизации. Нажмите Next.

  6. Задайте ограничения, которые будут использоваться в оптимизации. В данном примере используйте значения по умолчанию. Чтобы создать интерполяционную таблицу, щелкните Optimize. Нажмите Next.

  7. Нажмите Replace Original Function. Этот Lookup Table Optimizer заменяет Math Function exp блок с новой подсистемой вариантов, содержащей приближение интерполяционной таблицы.

Проверьте поведение системы с приближением интерполяционной таблицы

Теперь, когда система, находящаяся под проект, полностью преобразована, убедитесь, что система все еще соответствует допускам, указанному вами перед преобразованием.

  1. В Fixed-Point Tool» в Verify разделе панели инструментов нажмите кнопку Simulate with Embedded Types.

    Fixed-Point Tool моделирует модель, которая теперь содержит приближение интерполяционной таблицы, и сохраняет результат как EmbeddedRun_2.

  2. Workflow Browser показывает, что сигналы с заданными допусками проходят в модели, используя приближение интерполяционной таблицы.

Похожие темы