Собственный компонент 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 работает, смотрите Генерацию Испытательного стенда.
Сгенерировать cosimulation модель для проверки сгенерированного кода:
В диалоговом окне Configuration Parameters, на HDL Code Generation> панель Test Bench, для Cosimulation model for use with, выбирают cosimulation инструмент.
Нажмите Apply, и затем нажмите Generate Test Bench.
После генерации испытательного стенда сохраните cosimulation модель. В модели дважды кликните Compare
подсистема.
Если вы дважды кликаете Assert_Out1
блокируйтесь, параметры блоков показывают ToleranceValue, что вы задаете.
Смотреть в Assert_Out1
блокируйте, кликните по маске. Если вы указываете, что допуск с плавающей точкой проверяет на основе ulp error
, модель показывает ULPChecker
блок.
ULPChecker
имеет блок MATLAB Function, который показывает, как HDL Coder составляет ошибку ULP при проверке на числовую точность.
Если вы указываете, что допуск с плавающей точкой проверяет на основе relative error
, модель показывает RelErrCheck
блок.
RelerrCheck
имеет блок MATLAB Function, который показывает, как HDL Coder составляет относительную погрешность при проверке на числовую точность.
В Simulink® Редактор для модели, запустите симуляцию. В конце cosimulation проверяйте compare: Out1
осциллограф.
Осциллограф сравнивает различие между сигналом результата от блока cosimulation и опорным сигналом от DUT.
См. также Генерируют Модель Cosimulation.
При проверке сгенерированного кода построения, которые используют стандарты IEEE до VHDL-2008, не поддерживаются с собственным компонентом, с плавающей точкой.