使用本机浮点生成与目标无关的HDL代码
HDL Coder™原生浮点技术可以从您的浮点设计中生成与目标无关的HDL代码。你可以在任何通用的FPGA或ASIC上合成你的浮点设计。与定点设计相比,浮点设计具有更好的精度、更高的动态范围和更短的开发周期。如果您的设计具有复杂的数学和三角运算,请使用原生浮点技术。
如何高密度脂蛋白编码器生成与目标无关的HDL代码
该图显示了HDL Coder如何使用本机浮点技术生成代码。
的解压缩
而且包
块将浮点类型转换为符号、指数和尾数。在图中,年代,E,米分别表示符号、指数和尾数。本解释基于IEEE-754浮点运算标准。
的浮点算法实现块上执行计算年代,E,米.通过这种转换,生成的HDL代码与目标无关。您可以在任何通用FPGA或ASIC上部署该设计。
启用本地浮点和生成代码
您可以启用本机浮点并从Simulink生成HDL代码金宝app®模型或MATLAB®函数。
对象指定本机浮点数金宝app模型
您可以在Configuration Parameters对话框或命令行中为HDL代码生成指定本机浮点设置。
要在“配置参数”对话框中指定本机浮点设置并生成HDL代码:
在应用程序选项卡上,选择高密度脂蛋白编码器.的HDL代码选项卡出现了。
点击设置.在HDL代码生成>浮点窗格中,为图书馆中,选择
本机浮点数
.指定延迟策略将您的设计映射为最大或最小延迟或无延迟。看到延迟策略.
如果您的设计中有非法数,请选择处理Denormals.非正数是指指数字段等于零和尾数字段非零的数。看到处理Denormals.
如果您的设计具有乘数器,要指定希望HDL Coder如何实现乘法操作,请使用尾数乘数策略.看到尾数乘数策略.
共享浮点资源,在HDL代码生成>优化>资源共享Tab,确保你选择了浮点IPs.共享的块的数量取决于SharingFactor您为子系统指定的。
点击应用.在HDL代码选项卡上,单击生成HDL代码.
要在命令行上应用本机浮点来生成HDL代码,请使用hdlcoder.createFloatingPointTargetConfig
函数。可以使用此函数创建hdlcoder。FloatingPointTargetConfig
对象用于本机浮点库。
nfpconfig = hdlcode . createfloatingpointtargetconfig (“NATIVEFLOATINGPOINT”);hdlset_param (“sfir_single”,“FloatingPointTargetConfiguration”, nfpconfig);
可选地,您可以指定延迟策略,以及您是否希望HDL Coder在您的设计中处理非正数:
nfpconfig.LibrarySettings.HandleDenormals =“上”;nfpconfig.LibrarySettings.LatencyStrategy =“马克斯”;
若要了解如何验证生成的代码,请参见验证从本机浮点生成的代码.
对象指定本机浮点数MATLAB函数
您可以使用MATLAB HDL Workflow Advisor或命令行为HDL代码生成指定本机浮点设置。
要在MATLAB HDL Workflow Advisor中指定本机浮点设置:
打开MATLAB HDL工作流顾问。要开始使用MATLAB HDL工作流顾问,请参阅基于MATLAB的基本HDL代码生成和FPGA合成.
在左窗格中,单击HDL代码生成的任务。在右窗格中,导航到浮点制表符和设置图书馆来
本机浮点数
.单击时钟和端口制表符和设置过采样因子到一个大于1的值。
集延迟策略来
最小值
,马克斯
,或零
将您的设计分别映射为最小、最大或无延迟。看到延迟策略.如果您的设计中有非法数,请选择处理Denormals.非正数是指指数字段等于零和尾数字段非零的数。看到处理Denormals.
方法,指定希望HDL Coder如何实现乘法操作尾数乘数策略参数。看到尾数乘数策略.
在左窗格中,右键单击HDL代码生成任务和选择运行到选定任务.
要在命令行上应用本机浮点来生成HDL代码,请使用coder.config
函数创建编码器。HdlConfig
对象用于HDL代码生成和hdlcoder.createFloatingPointTargetConfig
函数创建hdlcoder。FloatingPointTargetConfig
对象用于本机浮点库。
HDLCFG = code .config(“高密度”);nfpconfig = hdlcode . createfloatingpointtargetconfig (“NATIVEFLOATINGPOINT”);hdlcfg。FloatingPointLibrary =“NativeFloatingPoint”;hdlcfg。FloatingPointTargetConfiguration = nfpconfig;
可选地,您可以指定延迟策略,以及您是否希望HDL Coder在您的设计中处理非正数。
nfpconfig.LibrarySettings.HandleDenormals =“上”;nfpconfig.LibrarySettings.LatencyStrategy =“马克斯”;
查看代码生成报告
若要查看浮点库映射的代码生成报告,在开始代码生成之前,请启用“资源利用报告”和“优化报告”的生成。上启用报表HDL代码选项卡上,单击设置>报告选项在“配置参数”对话框中,单击HDL代码生成窗格中,使生成资源利用报告而且生成优化报告.有关更多信息,请参见创建和使用代码生成报告.
要查看HDL Coder支持的本机浮点运算符列表以及Simulink块映射到的浮点运算符,请在“代码生成报告”中选择金宝app金宝app原生浮点资源报告.
详细报告显示浮点块在指定的目标设备上使用的各种资源。从本地浮点设计生成HDL代码使用动态移位操作来根据指数值对齐尾数。因为这些动态移位算子在模型中是资源昂贵的,所以它们与静态移位算子分开报告。有关动态和静态移位器的更多信息,请参见时间和区域报告.
要查看应用于模型的本机浮点设置以及HDL Coder是否成功生成HDL代码,请在“代码生成报告”中选择目标代码生成.
分析结果
浮点运算符有延迟。如果您的Simu金宝applink模型没有延迟,那么当您生成HDL代码时,代码生成器会计算出运算符延迟和延迟平衡并行路径。考虑这个有两个的Simuli金宝appnk模型单
输入并给出单
输出。
的MATLAB函数Simulink模型中的块金宝app包含此代码。
函数Y = fcn(u, w)% # codegenY1 = (u+w) * 20;Y2 = w^16;Y3 = (u-w) / 10;Y = Y + Y - y3;
在生成HDL代码时,代码生成器将Simulink模型中的块映射到可合成的本机浮点运算符。金宝app要查看代码生成器如何实现浮点操作,请打开生成的模型。数据块NFP数学,NFP√6,NFP三角类的浮点实现对应互惠√6,互惠,罪,因为块分别在您的原始模型。
每个浮点运算符都有延迟。属性的延迟导致代码生成器插入了额外的匹配延迟互惠√6是30.
和延时互惠是31
.运算符延时等于延迟的长度的延迟Block在里面NFP
块。例如,如果双击NFP√6
块,你可以通过查看延迟的长度的延迟
块。看到浮点运算符的延迟值.
当你使用MATLAB函数块使用浮点数据类型,HDL Coder使用MATLAB Datapath公司
体系结构。这个体系结构处理MATLAB函数像常规一样阻挡子系统块。生成代码时,代码生成器将加法和乘法等基本操作映射到相应的本机浮点运算符。打开MATLAB函数
子系统,以了解代码生成器如何实现MATLAB函数块。
要了解关于生成模型的更多信息,请参见生成模型和验证模型.
限制
要在本地浮点模式下生成HDL代码,请使用离散采样时间。不支持在连续采样时间运行的块。金宝app