exponenta event banner

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

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

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

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

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

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

Настройка модели

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

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')

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

Чтобы преобразовать модель в фиксированную точку, используйте инструмент «Фиксированная точка».

  1. В галерее «Приложения» ex_fixed_point_workflow выберите инструмент «Фиксированная точка».

  2. В инструменте «Фиксированная точка» в разделе «Новый рабочий процесс» выберите Iterative Fixed-Point Conversion.

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

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

  5. В разделе Входные данные моделирования (Simulation Inputs) можно указать Simulink.SimulationInput объекты для выполнения проекта в полном рабочем диапазоне. В этом примере задайте для входных данных моделирования значение Use default model inputs.

  6. Чтобы задать допуски для системы, в таблице в разделе Допуски сигналов (Signal Tolerances) укажите допуски для любого сигнала в модели с включенным регистром сигналов. Дополнительные сведения см. в разделе Определение допусков сигнала.

    Установите относительный допуск (Rel Tol) для зарегистрированных сигналов 15%.

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

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

Сбор диапазонов

По умолчанию инструмент «Фиксированная точка» использует текущий набор переопределений типа данных в модели. В этом примере переопределите типы данных в модели с двойной точностью для прогона сбора диапазонов.

  1. Разверните стрелку кнопки Собрать диапазоны (Collect Ranges) и выберите Двойная точность (Double precision

  2. Щелкните Собрать диапазоны (Collect Ranges ), чтобы смоделировать модель.

Инструмент «Фиксированная точка» переопределяет типы данных в модели двойными значениями и собирает минимальные и максимальные значения для каждого объекта в модели, которые возникают во время моделирования. Инструмент Fixed-Point хранит эту информацию о диапазоне в прогоне под названием BaselineRun. Собранные диапазоны можно просмотреть в столбцах SimMin и SimMax электронной таблицы или на панели «Сведения о результатах».

Панель Визуализация данных моделирования (Visualization of Simulation Data) предоставляет другое представление результатов моделирования. Выберите вкладку «Обзор» инструмента «Фиксированная точка» для дополнительных инструментов сортировки и фильтрации данных в электронной таблице и визуализации.

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

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

  1. В разделе «Преобразование» панели инструментов нажмите кнопку «Предложить типы данных».

    Инструмент «Фиксированная точка» анализирует масштабирование всех блоков с фиксированной точкой, для которых не выбран параметр «Блокировать тип выходных данных» с учетом изменений, внесенных параметром инструментов с фиксированной точкой.

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

    Чтобы изменить параметры предложения, нажмите кнопку «Параметры» в разделе «Преобразовать» панели инструментов, прежде чем предлагать типы.

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

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

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

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

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

    Инструмент «Фиксированная точка» применяет предложения по типу данных к блокам в проектируемой системе.

Проверить новые параметры

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

  1. Щелкните Моделирование со встроенными типами (Simulate with Embedded Types). Инструмент фиксированных точек моделирует модель с использованием новых типов данных фиксированных точек и сохраняет информацию о выполнении в новом выполнении под названием EmbeddedRun.

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

  2. Проверьте гистограммы на панели Визуализация данных моделирования (Visualization of Simulation Data), чтобы убедиться в отсутствии переполнений или насыщений. Переливы и насыщения отмечены красным треугольником.

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

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

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

На этапе «Подготовка системы к преобразованию» рабочего процесса инструмент «Фиксированная точка» поместил блок Exp, который не поддерживается для преобразования, в подсистему, окруженную блоками преобразования типа данных. На этом шаге подсистема заменяется аппроксимацией таблицы подстановки.

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

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

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

  2. Откройте оптимизатор таблицы подстановки. В галерее «Приложения» выберите «Оптимизатор таблицы подстановки».

  3. На странице «Цель» оптимизатора таблицы подстановки выберите блок или подсистему Simulink. Нажмите кнопку Далее.

  4. В разделе «Информация о блоках» скопируйте из командной строки и вставьте путь в подсистему, созданную инструментом «Фиксированная точка».

  5. Нажмите кнопку Собрать текущие значения из модели (Collect Current Values from Model), чтобы обновить схему модели и позволить оптимизатору таблицы подстановки автоматически собирать информацию, необходимую для процесса оптимизации. Нажмите кнопку Далее.

  6. Укажите ограничения, которые будут использоваться при оптимизации. В этом примере используются значения по умолчанию. Чтобы создать таблицу подстановки, щелкните Оптимизировать (Optimize). Нажмите кнопку Далее.

  7. Щелкните Заменить исходную функцию (Replace Original Function). Оптимизатор таблицы подстановки заменяет математическую функцию exp блок с новой подсистемой вариантов, содержащей аппроксимацию таблицы подстановки.

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

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

  1. В инструменте «Фиксированная точка» в разделе «Проверка» панели инструментов выберите «Моделирование со встроенными типами».

    Инструмент «Фиксированная точка» моделирует модель, которая теперь содержит аппроксимацию таблицы подстановки, и сохраняет результат как EmbeddedRun_2.

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

Связанные темы