HDL Coder™ собственная технология с плавающей точкой может сгенерировать независимый от цели HDL-код из вашего проекта с плавающей точкой. Синтезировать проект с плавающей точкой можно на любых типовых FPGA или ASIC. Проекты с плавающей точкой имеют лучшую точность, более высокую динамическую область значений и более короткий цикл разработки, чем проекты с фиксированной точкой. Если ваш проект имеет сложные математические и тригонометрические операции, используйте собственную технологию с плавающей точкой.
При представлении бесконечно вещественных чисел с конечным количеством бит могут быть ошибки округления с правильной областью значений округления значений, который задает IEEE-754 стандарт. Чтобы измерить ошибки округления, можно задать проверку допуска с плавающей точкой на основе relative error
или ulp error
. Для получения дополнительной информации об этих ошибках округления см. «Относительная точность» и «Факторы ULP».
Перед генерацией теста задайте проверку допуска с плавающей точкой для проверки сгенерированного кода.
Чтобы задать проверку допусков в диалоговом окне Параметры конфигурации (Configuration Parameters):
На вкладке Apps выберите HDL Coder. Появится вкладка HDL Code.
Нажмите Settings. На панели HDL Code Generation > Testbench для Floating point tolerance check based on задайте relative error
или ulp error
.
Введите Tolerance Value и нажмите Apply. Если вы выбираете relative error
, по умолчанию является значением допуска 1e-07
. Если вы выбираете ulp error
, значение допуска по умолчанию является нулем. Дополнительные сведения см. в разделе «Числовые факторы с собственной плавающей точкой».
Чтобы задать стратегию допуска в командной строке, используйте:
Задайте настройку проверки допуска с плавающей точкой при помощи FPToleranceStrategy
.
% check for floating-point tolerance based on relative error hdlset_param('sfir_single', 'FPToleranceStrategy', 'Relative'); % check for floating-point tolerance based on the ULP error hdlset_param('sfir_single', 'FPToleranceStrategy', 'ULP');
На основе FPToleranceStrategy
установка, введите значение допуска при помощи FPToleranceValue
.
% if using relative error, enter custom tolerance value hdlset_param('FP_test_16a', 'FPToleranceValue', 1e-06); % if using ULP error, enter tolerance value greater % than or equal to 1 hdlset_param('FP_test_16a', 'FPToleranceValue', 1);
Чтобы сгенерировать HDL- испытательного стенда для проверки сгенерированного кода:
В диалоговом окне Configuration Parameters, на панели HDL Code Generation > Test Bench, в разделе Test Bench Generation Output, выберите HDL test bench.
В разделе Configuration убедитесь, что Use file I/O to read/write test bench data включено. Чтобы сгенерировать испытательный стенд, которая использует константы вместо файла ввода-вывода, очистите Use file I/O to read/write test bench data.
Нажмите Apply, а затем нажмите Generate Test Bench.
Для получения дополнительной информации о том, как работает поколение испытательного стенда HDL, смотрите Испытательный стенд Generation.
Чтобы сгенерировать модель косимуляции для проверки сгенерированного кода:
В диалоговом окне Параметры конфигурации на панели HDL Code Generation > Test Bench, для Cosimulation model for use with, выберите инструмент косимуляции.
Нажмите Apply, а затем нажмите Generate Test Bench.
После генерации испытательного стенда сохраните модель косимуляции. В модели дважды кликните Compare
подсистема.
Если вы дважды кликните Assert_Out1
блок, параметры блоков показывают ToleranceValue, которые вы задаете.
Чтобы заглянуть внутрь Assert_Out1
щелкните маску. Если вы задаете проверку допуска с плавающей точкой на основе ulp error
, модель показывает ULPChecker
блок.
The ULPChecker
имеет блок MATLAB Function, который показывает, как HDL Coder учитывает ошибку ULP при проверке на числовую точность.
Если вы задаете проверку допуска с плавающей точкой на основе relative error
, модель показывает RelErrCheck
блок.
RelerrCheck
имеет блок MATLAB Function, который показывает, как HDL Coder учитывает относительную погрешность при проверке на числовую точность.
В Simulink® Редактор модели, запустите симуляцию. В конце косимуляции проверяйте compare: Out1
возможности.
Эти возможности сравнивают различие между сигналом результата от блока косимуляции и опорного сигнала от DUT.
См. также «Генерация модели косимуляции».
При проверке сгенерированного кода конструкции, которые используют стандарты IEEE до VHDL-2008, не поддерживаются с собственной плавающей точкой.