Собственная технология HDL Coder™ с плавающей запятой может генерировать целевой независимый код HDL из вашего дизайна с плавающей запятой. Можно синтезировать конструкцию с плавающей запятой на любой базовой FPGA или ASIC. Конструкции с плавающей запятой имеют более высокую точность, более высокий динамический диапазон и более короткий цикл разработки, чем конструкции с фиксированной запятой. Если в конструкции имеются сложные математические и тригонометрические операции, используйте собственную технологию с плавающей запятой.
На этом рисунке показано, как кодер HDL генерирует код с помощью собственной технологии с плавающей запятой.

Unpack и Pack блоки преобразуют типы с плавающей запятой в знак, экспоненту и мантиссу. На рисунке S, E и M представляют знак, экспоненту и мантиссу соответственно. Эта интерпретация основана на IEEE-754 стандарте арифметики с плавающей запятой.
Блок реализации алгоритма с плавающей запятой выполняет вычисления на S, E и M. При этом преобразовании генерируемый код HDL не зависит от цели. Проект можно развернуть на любом универсальном FPGA или ASIC.
Можно создать код в диалоговом окне «Параметры конфигурации» или в командной строке.
Чтобы задать собственные настройки с плавающей запятой и создать код HDL в диалоговом окне «Параметры конфигурации»:
На вкладке Приложения выберите Кодер HDL. Появится вкладка Код HDL (HDL Code).
Щелкните Настройки (Settings). На панели «Создание кода HDL» > «Плавающая точка» в поле «Библиотека» выберите Native Floating Point.

Укажите стратегию задержки, чтобы сопоставить проект с максимальной или минимальной задержкой или без задержки.
Если в конструкции имеются денормальные числа, выберите «Обработать денормалы». Денормальные числа - это числа, которые имеют поле экспоненты, равное нулю, и ненулевое поле мантиссы. См. раздел Обработка денормалей.
Если в конструкции имеются множители, для определения способа реализации операции умножения с помощью кодера HDL используется стратегия множителя Мантиссы. См. раздел Стратегия мультипликатора Мантиссы.
Чтобы совместно использовать ресурсы с плавающей запятой, на вкладке Создание кода HDL > Оптимизации > Совместное использование ресурсов выберите IP-адреса с плавающей запятой. Количество блоков, которые становятся общими, зависит от SharingFactor, заданного для подсистемы.
Нажмите кнопку «Применить». На вкладке Код HDL (HDL Code) щелкните Создать код HDL (Generate HDL Code).
Для создания кода HDL в командной строке используйте hdlcoder.createFloatingPointTargetConfig функция. Эту функцию можно использовать для создания hdlcoder.FloatingPointTargetConfig для собственной библиотеки с плавающей запятой.
nfpconfig = hdlcoder.createFloatingPointTargetConfig('NATIVEFLOATINGPOINT'); hdlset_param('sfir_single', 'FloatingPointTargetConfiguration', nfpconfig);
Дополнительно можно указать стратегию задержки и необходимость обработки денормальными числами кодера HDL в конструкции:
nfpconfig.LibrarySettings.HandleDenormals = 'on'; nfpconfig.LibrarySettings.LatencyStrategy = 'MAX';
Сведения о проверке сгенерированного кода см. в разделе Проверка сгенерированного кода из собственной плавающей точки.
Чтобы просмотреть отчеты о создании кода сопоставления библиотек с плавающей запятой, перед началом создания кода включите создание отчета об использовании ресурсов и отчета об оптимизации. Чтобы включить отчеты, на вкладке Код HDL (HDL Code) щелкните Настройки (Settings) > Параметры отчета (Report Options) в диалоговом окне Параметры конфигурации (Configuration Parameters), на панели Создание кода HDL (HDL Code Generation) включите опцию Генерировать отчет об использовании ресурсов (Generate resource usement report) и Создать отчет об оптимизации. См. также Создание и использование отчетов о создании кода.
Чтобы просмотреть список собственных операторов с плавающей запятой, поддерживаемых кодером HDL, и операторов с плавающей запятой, с которыми сопоставлены блоки Simulink ®, в окне Отчет о генерации кода выберите Собственный отчет о ресурсах с плавающей запятой.

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

Для просмотра собственных настроек с плавающей запятой, примененных к модели, и успешного создания кодером HDL кода HDL в окне Отчет о создании кода (Code Generation Report) выберите Целевое создание кода (Target Code Generation).
Операторы с плавающей запятой имеют задержку. Если в модели Simulink нет задержек, при создании кода HDL генератор кода вычисляет задержки оператора и балансирует задержки параллельных путей. Рассмотрим модель Simulink с двумя single входы и дает single выход.

Блок MATLAB Function в модели Simulink содержит этот код.
function y = fcn(u, w) %#codegen y1 = (u+w) * 20; y2 = w^16; y3 = (u-w) / 10; y = y1 + y2 - y3;
При создании кода HDL генератор кода сопоставляет блоки в модели Simulink с синтезируемыми собственными операторами с плавающей запятой. Чтобы увидеть, как генератор кода реализовал операции с плавающей запятой, откройте созданную модель. Блоки NFP math, NFP Sqrt и NFP trig соответствуют реализации с плавающей запятой блоков Reversal Sqrt, Reversal, sin и cos соответственно в исходной модели.

Каждый оператор с плавающей запятой имеет задержку. Генератор кода вставил дополнительную задержку согласования, поскольку задержка обратного Sqrt равна 30 и латентность взаимности 31. Задержка оператора равна длине задержки блока задержки внутри NFP блок. Например, если дважды щелкнуть значок NFP sqrt блок, вы можете получить задержку, глядя на длину задержки Delay блок. См. раздел Значения задержки операторов с плавающей запятой.

При использовании функциональных блоков MATLAB с типами данных с плавающей запятой кодер HDL использует MATLAB Datapath архитектура. Эта архитектура рассматривает функциональный блок MATLAB как обычный блок подсистемы. При создании кода генератор кода сопоставляет основные операции, такие как сложение и умножение, соответствующим собственным операторам с плавающей запятой. Откройте окно MATLAB Function чтобы увидеть, как генератор кода реализовал функциональный блок MATLAB.

Дополнительные сведения о созданной модели см. в разделах Сгенерированная модель и модель проверки.
Для создания кода HDL в собственном режиме с плавающей запятой используйте дискретное время выборки. Блоки, работающие в непрерывное время выборки, не поддерживаются.