主要内容

使用本机浮点生成与目标无关的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代码:

  1. 应用程序选项卡上,选择高密度脂蛋白编码器.的HDL代码选项卡出现了。

  2. 点击设置.在HDL代码生成>浮点窗格中,为图书馆中,选择本机浮点数

  3. 指定延迟策略将您的设计映射为最大或最小延迟或无延迟。看到延迟策略

  4. 如果您的设计中有非法数,请选择处理Denormals.非正数是指指数字段等于零和尾数字段非零的数。看到处理Denormals

  5. 如果您的设计具有乘数器,要指定希望HDL Coder如何实现乘法操作,请使用尾数乘数策略.看到尾数乘数策略

  6. 共享浮点资源,在HDL代码生成>优化>资源共享Tab,确保你选择了浮点IPs.共享的块的数量取决于SharingFactor您为子系统指定的。

  7. 点击应用.在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中指定本机浮点设置:

  1. 打开MATLAB HDL工作流顾问。要开始使用MATLAB HDL工作流顾问,请参阅基于MATLAB的基本HDL代码生成和FPGA合成

  2. 在左窗格中,单击HDL代码生成的任务。在右窗格中,导航到浮点制表符和设置图书馆本机浮点数

  3. 单击时钟和端口制表符和设置过采样因子到一个大于1的值。

  4. 延迟策略最小值马克斯,或将您的设计分别映射为最小、最大或无延迟。看到延迟策略

  5. 如果您的设计中有非法数,请选择处理Denormals.非正数是指指数字段等于零和尾数字段非零的数。看到处理Denormals

  6. 方法,指定希望HDL Coder如何实现乘法操作尾数乘数策略参数。看到尾数乘数策略

  7. 在左窗格中,右键单击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互惠,因为块分别在您的原始模型。

每个浮点运算符都有延迟。属性的延迟导致代码生成器插入了额外的匹配延迟互惠√630.和延时互惠31.运算符延时等于延迟的长度延迟Block在里面NFP块。例如,如果双击NFP√6块,你可以通过查看延迟的长度延迟块。看到浮点运算符的延迟值

当你使用MATLAB函数块使用浮点数据类型,HDL Coder使用MATLAB Datapath公司体系结构。这个体系结构处理MATLAB函数像常规一样阻挡子系统块。生成代码时,代码生成器将加法和乘法等基本操作映射到相应的本机浮点运算符。打开MATLAB函数子系统,以了解代码生成器如何实现MATLAB函数块。

要了解关于生成模型的更多信息,请参见生成模型和验证模型

限制

要在本地浮点模式下生成HDL代码,请使用离散采样时间。不支持在连续采样时间运行的块。金宝app

另请参阅

建模指南

功能

相关的例子

更多关于