Для преобразования с фиксированной точкой требуются следующие лицензии:
Designer™ с фиксированной точкой
MATLAB ® Coder™
Код MATLAB с плавающей запятой можно преобразовать в код с фиксированной запятой с помощью инструмента «Преобразование с фиксированной запятой» в проектах HDL Coder™. Можно предложить типы данных на основе данных диапазона моделирования, производных (также известных как статические) данных диапазона или и того, и другого.
Можно вручную ввести статические диапазоны. Эти диапазоны, введенные вручную, имеют приоритет над диапазонами моделирования, и инструмент использует их при предложении типов данных. Кроме того, предлагаемый тип можно изменить и заблокировать, чтобы инструмент не мог изменить его. Дополнительные сведения см. в разделе Блокировка предлагаемых типов данных.
Список поддерживаемых функций и функций MATLAB см. в разделе Языковые функции MATLAB, поддерживаемые для автоматического преобразования с фиксированной точкой.
При преобразовании с фиксированной точкой можно:
Убедитесь, что тестовые файлы охватывают весь предполагаемый рабочий диапазон алгоритма, используя результаты покрытия кода.
Предлагать длины дробей на основе длин слов по умолчанию.
Предлагать длины слов на основе длин дробей по умолчанию.
Оптимизация целых чисел.
Укажите пределы безопасности для данных min/max моделирования.
Убедитесь, что можно построить проект с предлагаемыми типами данных.
Количество тестов путем запуска тестового стенда с использованием типов с фиксированной точкой.
Просмотр гистограммы битов, используемых каждой переменной.
Обнаружение переполнений.
По умолчанию в инструменте «Преобразование фиксированных точек» отображаются результаты покрытия кода. Тестовые файлы должны использовать алгоритм в полном рабочем диапазоне, чтобы диапазоны моделирования были точными. Качество предлагаемых типов данных с фиксированной точкой зависит от того, насколько хорошо тестовые файлы охватывают рабочий диапазон алгоритма с требуемой точностью. Проверка результатов покрытия кода позволяет убедиться в том, что тестовые файлы используют алгоритм надлежащим образом. Если покрытие кода является недостаточным, измените тестовые файлы или добавьте дополнительные тестовые файлы для увеличения покрытия. При моделировании нескольких тестовых файлов за один прогон инструмент отображает совокупный охват. Однако если указать несколько тестовых файлов, но запускать их по одному, инструмент отобразит охват последнего файла.
Инструмент отображает цветовую строку покрытия слева от кода.

В этой таблице описывается цветовое кодирование.
| Цвет панели покрытия | Указывает |
|---|---|
| Зеленый | Одна из следующих ситуаций:
Различные оттенки зеленого обозначают различные диапазоны счетчиков выполнения строк. Самый темный оттенок зеленого указывает на самый высокий диапазон. |
| Оранжевый | Функция точки входа выполняется несколько раз, но код выполняется один раз. |
| Красный | Код не выполняется. |
При наведении паузы на полосу покрытия цветовая подсветка распространяется на код. Для каждого раздела кода приложение отображает количество запусков этого раздела.

Чтобы убедиться, что тестовые файлы тестируют алгоритм в заданном рабочем диапазоне, просмотрите результаты покрытия кода.
| Цвет панели покрытия | Действие |
|---|---|
| Зеленый | Если ожидается, что разделы кода будут выполняться чаще, чем показано на экране покрытия, измените код MATLAB или тестовые файлы. |
| Оранжевый | Такое поведение ожидается для кода инициализации, например, для инициализации постоянных переменных. Если ожидается, что код будет выполняться более одного раза, измените код MATLAB или тестовые файлы. |
| Красный | Если код, который не выполняется, является условием ошибки, такое поведение является приемлемым. Если ожидается выполнение кода, измените код MATLAB или тестовые файлы. Если код написан консервативно и имеет верхний и нижний граничные пределы, и вы не можете изменить тестовые файлы, чтобы достичь этого кода, добавьте статические минимальные и максимальные значения. См. раздел Вычисление производных диапазонов. |
Покрытие кода включено по умолчанию. Выключите его только после проверки того, что у вас есть адекватный охват тестовых файлов. Отключение покрытия кода может ускорить моделирование. Чтобы отключить покрытие кода, в инструменте «Преобразование фиксированных точек» выполните следующие действия.
Щелкните Выполнить моделирование (Run Simulation).
Ясно Show code coverage.
Инструмент «Преобразование с фиксированной точкой» предлагает типы данных с фиксированной точкой на основе вычисленных диапазонов и значения длины слова или длины дроби. Вычисленные диапазоны основаны на данных диапазона моделирования, производных данных диапазона или обоих данных. При выполнении моделирования и вычислении производных диапазонов инструмент преобразования объединяет моделируемые и производные диапазоны.
Примечание
Нельзя предлагать типы данных на основе производных диапазонов для классов MATLAB.
Можно вручную ввести статические диапазоны. Эти диапазоны, введенные вручную, имеют приоритет над диапазонами моделирования, и инструмент использует их при предложении типов данных. Кроме того, предлагаемый тип можно изменить и заблокировать, чтобы инструмент не мог изменить его. Дополнительные сведения см. в разделе Блокировка предлагаемых типов данных.
При открытии инструмента «Преобразование фиксированных точек» инструмент создает инструментальную функцию MEX для проекта MATLAB. Если построение завершается без ошибок, инструмент отображает скомпилированную информацию (тип, размер, сложность) для функций и переменных в коде. Для перехода к локальным функциям перейдите на вкладку Функции. Если возникают ошибки сборки, средство выдает сообщения об ошибках, которые ссылаются на строку кода, вызвавшую проблемы сборки. Перед запуском моделирования необходимо устранить эти ошибки. Используйте ссылку для перехода к нарушающей строку кода в редакторе MATLAB и измените код, чтобы устранить проблему. Если код использует функции, которые не поддерживаются для преобразования с фиксированной точкой, инструмент отображает их на вкладке Замены функций. См. раздел Замены функций.
Перед запуском моделирования укажите тестовый стенд, который требуется запустить. При выполнении моделирования инструмент запускает тестовый стенд, вызывая инструментальную функцию MEX. При изменении кода проекта MATLAB перед запуском тестового стенда инструмент автоматически генерирует обновленную функцию MEX.
Если испытательный стенд работает успешно, минимальные и максимальные значения моделирования и предлагаемые типы отображаются на вкладке Variables. При ручном вводе статических диапазонов для переменной введенные вручную диапазоны имеют приоритет над диапазонами моделирования. При ручном изменении предлагаемых типов путем ввода или использования гистограммы типы данных блокируются, так что инструмент не может их изменить.
Если тест-стенд завершается неуспешно, ошибки отображаются на вкладке Simulation Output.
Испытательный стенд должен использовать ваш алгоритм в полном рабочем диапазоне. Качество предлагаемых типов данных с фиксированной точкой зависит от того, насколько хорошо испытательный стенд покрывает рабочий диапазон алгоритма с требуемой точностью.
При необходимости можно выбрать запись данных для гистограмм. После выполнения моделирования можно просмотреть гистограмму для каждой переменной. Дополнительные сведения см. в разделе Гистограмма.
Преимущество предложения типов данных, основанных на производных диапазонах, состоит в том, что нет необходимости предоставлять тестовые файлы, выполняющие алгоритм в полном рабочем диапазоне. Выполнение таких тестовых файлов часто занимает очень много времени.
Чтобы вычислить производные диапазоны и предложить типы данных на основе этих диапазонов, предоставьте статические минимальные и максимальные значения или предлагаемые типы данных для всех входных переменных. Чтобы улучшить анализ, введите как можно больше статической информации о диапазоне для других переменных. Можно вручную вводить диапазоны или продвигать диапазоны моделирования для использования в качестве статических диапазонов. Введенные вручную статические диапазоны всегда имеют приоритет над диапазонами моделирования.
Если вы знаете, какой тип данных использует ваша аппаратная цель, задайте предлагаемые типы данных в соответствии с этим типом. Введенные вручную типы данных блокируются, поэтому инструмент не может их изменить. Инструмент использует эти типы данных для вычисления входных минимальных и максимальных значений и получения диапазонов для других переменных. Дополнительные сведения см. в разделе Блокировка предлагаемых типов данных.
При выборе опции Вычислить производные диапазоны (Compute Derived Ranges) инструмент выполняет анализ производных диапазонов для вычисления статических диапазонов для переменных в алгоритме MATLAB. По завершении анализа статические диапазоны отображаются на вкладке Переменные (Variables). Если прогон создает +/-Inf производные диапазоны, рассмотрите возможность определения диапазонов для всех постоянных переменных.
При необходимости можно выбрать Быстрый анализ производного диапазона. С помощью этой опции инструмент преобразования выполняет более быстрый статический анализ. Вычисленные диапазоны могут быть больше необходимых. Выберите этот параметр в случаях, когда статический анализ занимает больше времени, чем вы можете себе позволить.
Если анализ производного диапазона для проекта занимает много времени, можно дополнительно установить тайм-аут. Инструмент прерывает анализ по достижении тайм-аута.
Инструмент «Преобразование фиксированных точек» позволяет блокировать предлагаемые типы данных от изменений одним из следующих способов:
Установка предложенного типа данных вручную в инструменте «Преобразование фиксированных точек».
Щелчок правой кнопкой мыши на типе, предложенном инструментом, и выбор Lock computed value.
Инструмент отображает заблокированные типы данных полужирным шрифтом, чтобы их было легко идентифицировать. Разблокировать тип можно одним из следующих способов:
Перезапись вручную.
Щелкните его правой кнопкой мыши и выберите Undo changes. Это действие разблокирует только выбранный тип.
Щелчок правой кнопкой мыши и выбор Undo changes for all variables. Это действие разблокирует все заблокированные предлагаемые типы.
Список функций в проекте можно просмотреть на панели «Навигация». Этот список также включает специализации функций и методы классов. При выборе функции из списка код MATLAB для этой функции или метода класса отображается в окне кода инструмента «Преобразование фиксированной точки».

После преобразования на левой панели также отображается список выходных файлов, включая версию исходного алгоритма с фиксированной точкой. Если функция не является специализированной, преобразование сохраняет исходное имя функции в имени файла с фиксированной точкой и добавляет суффикс с фиксированной точкой. Например, версия с фиксированной точкой fun_with_matlab.m является fun_with_matlab_fixpt.m.
Вкладка Переменные (Variables) предоставляет следующую информацию для каждой переменной в функции, выбранной на панели Навигация (Navigation).
Тип - исходный тип данных переменной в алгоритме MATLAB.
Sim Min и Sim Max - минимальное и максимальное значения, назначенные переменной во время моделирования.
Можно изменить минимальное и максимальное значения моделирования. Отредактированные поля выделены полужирным шрифтом. Редактирование этих полей не инициирует статический анализ диапазона, но инструмент использует отредактированные значения в последующих анализах. Можно вернуться к типам, предложенным инструментом.
Статический минимум и статический максимум - статические минимальные и максимальные значения.
Чтобы вычислить производные диапазоны и предложить типы данных на основе этих диапазонов, предоставьте статические минимальные и максимальные значения для всех входных переменных. Чтобы улучшить анализ, введите как можно больше статической информации о диапазоне для других переменных.
При вычислении производных диапазонов инструмент «Преобразование фиксированных точек» выполняет статический анализ для вычисления статических диапазонов для переменных в коде. По завершении анализа отображаются статические диапазоны. Вычисленные результаты можно редактировать. Отредактированные поля выделены полужирным шрифтом. Редактирование этих полей не инициирует статический анализ диапазона, но инструмент использует отредактированные значения в последующих анализах. Можно вернуться к типам, предложенным инструментом.
Целое число (Whole Number) - являются ли все значения, назначенные переменной во время моделирования целыми числами.
Инструмент «Преобразование фиксированных точек» определяет, является ли переменная всегда целым числом. Это поле можно изменить. Отредактированные поля выделены полужирным шрифтом. Редактирование этих полей не инициирует статический анализ диапазона, но инструмент использует отредактированные значения в последующих анализах. Можно вернуться к типам, предложенным инструментом.
Предлагаемый тип данных с фиксированной точкой для указанной длины слова (или дроби). Предлагаемые типы данных используют numerictype нотация. Например, numerictype(1,16,12) обозначает знаковый тип с фиксированной точкой с длиной слова 16 и длиной дроби 12. numerictype(0,16,12) обозначает беззнаковый тип с фиксированной точкой с длиной слова 16 и длиной дроби 12.
Поскольку инструмент не применяет типы данных к выражениям, он не отображает предлагаемые типы для них. Вместо этого отображаются исходные типы данных.
Можно также просматривать и редактировать информацию о переменных в области кода, наведя курсор на имя переменной.
Вы можете использовать Ctrl+F для поиска переменных в коде MATLAB и на вкладке Переменные. Инструмент подсвечивает вхождения в коде и отображает только переменную с указанным именем на вкладке Переменные (Variables).
Инструмент отображает:
Код для классов MATLAB и покрытие кода для методов классов в окне кода. Используйте список Функция на панели навигации, чтобы выбрать класс или метод класса для просмотра.


Информация о классах MATLAB на вкладке Переменные.

Если функция является специализированной, инструмент перечисляет каждую специализацию и нумерует их последовательно. Например, рассмотрим функцию, dut, которая вызывает подфункции, foo и bar, несколько раз с различными типами ввода.
function y = dut(u, v) tt1 = foo(u); tt2 = foo([u v]); tt3 = foo(complex(u,v)); ss1 = bar(u); ss2 = bar([u v]); ss3 = bar(complex(u,v)); y = (tt1 + ss1) + sum(tt2 + ss2) + real(tt3) + real(ss3); end function y = foo(u) y = u * 2; end function y = bar(u) y = u * 4; end

При выборе специализации приложение отображает только переменные, используемые специализацией.

В сгенерированном коде с фиксированной запятой номер каждой специализации с фиксированной запятой совпадает с номером в списке исходного кода, что упрощает трассировку между версиями кода с плавающей и фиксированной запятой. Например, сгенерированная функция с фиксированной точкой для foo > 1 назван foo_s1.

Чтобы записать данные для гистограмм, в окне Преобразование фиксированных точек (Fixed-Point Conversion) щелкните Выполнить моделирование (Run Simulation) и выберите Log data for histogramи нажмите кнопку «Запустить моделирование».
После моделирования для просмотра гистограммы переменной на вкладке Переменные щелкните поле Предлагаемый тип для этой переменной.
Гистограмма предоставляет диапазон предлагаемого типа данных и процент значений моделирования, которые охватывает предлагаемый тип данных. Веса битов отображаются вдоль оси X, а процент вхождений - вдоль оси Y. Каждый элемент в гистограмме соответствует биту в двоичном слове. Например, эта гистограмма отображает диапазон для переменной типа numerictype(1,16,14).

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

Выбор или отмена подписи.
Чтобы вернуться к типам, предложенным при автоматическом преобразовании, в окне гистограммы щелкните.![]()
Если в коде MATLAB используются функции, которые не поддерживают фиксированные точки, инструмент перечисляет эти функции на вкладке Замены функций. Можно заменить неподдерживаемые функции пользовательской заменой функций или таблицей подстановки.

Из этого списка можно добавлять и удалять замены функций. При вводе замены функции при построении проекта используется функция замены. Если замена не введена, инструмент использует тип, указанный в исходном коде MATLAB для функции.
Примечание
С помощью этой таблицы можно заменить имена функций, но нельзя заменить шаблоны аргументов.
При выборе параметра «Проверить типы» выполняется проверка построения с использованием предлагаемых типов данных с фиксированной точкой. Если проверка прошла успешно, можно проверить численное поведение алгоритма MATLAB с фиксированной точкой.
Если ошибки или предупреждения возникают во время проверки, они отображаются на вкладке Вывод проверки типа (Type Validation Output). При возникновении ошибок или предупреждений:
На вкладке Переменные проверьте предлагаемые и измененные вручную типы, чтобы убедиться в их допустимости.
На вкладке Замены функций убедитесь, что вы предоставили замены функций для неподдерживаемых функций.
После проверки предлагаемых типов данных с фиксированной точкой выберите Test Numerics, чтобы проверить поведение алгоритма MATLAB с фиксированной точкой. По умолчанию при добавлении испытательного стенда для определения входных данных или запуска моделирования инструмент использует этот испытательный стенд для проверки числовых значений. Инструмент сравнивает численное поведение сгенерированного кода MATLAB с фиксированной точкой с исходным кодом MATLAB с плавающей точкой. Если выбрано регистрировать входные и выходные данные для сравнительных графиков, инструмент создает дополнительный график для каждого скалярного вывода. Этот график показывает результаты с плавающей и фиксированной точками и разницу между ними. Для нескалярных выходов отображается только информация об ошибках.
Если численные результаты не соответствуют требуемой точности после моделирования с фиксированной точкой, измените настройки типа данных с фиксированной точкой и повторите шаги проверки типа и числового тестирования. Для достижения желаемых результатов может потребоваться многократная итерация этих шагов.
При тестировании чисел выбор параметра Использовать масштабированные двойные значения для обнаружения переполнений позволяет обнаружить переполнение. Если выбран этот параметр, инструмент преобразования запускает моделирование с использованием масштабированных двойных версий предлагаемых типов фиксированных точек. Поскольку масштабированные двойники хранят свои данные в плавающей точке с двойной точностью, они выполняют арифметику в полном диапазоне. Они также сохраняют свои настройки фиксированной точки, так что они могут сообщать, когда вычисления выходят за пределы диапазона типа фиксированной точки..
Если инструмент обнаруживает переполнение, на своей вкладке Переполнение (Overflow) он предоставляет:
Список переменных и выражений, переполненных
Информация о том, насколько переполнена каждая переменная
Ссылка на переменные или выражения в окне кода

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