技术文章和通讯

你并不总是需要转换为定点FPGA和ASIC的部署

由杰克·埃里克森Kiran Kintali,乔纳森•年轻MathWorks


MATLAB®和仿真软金宝app件®用floating-point-based建模,以确保高精度计算算法仿真。转换为定点减少数学精度,它可以挑战之间的平衡点了数据类型转换期间单词长度和数学精度。对计算要求高动态范围和精度高(例如,设计反馈循环),定点转换可以使用数周或数月的工程时间和可能导致大的定点单词长度。

从R2016b版开始,您可以生成FPGA和ASIC的HDL代码实现直接从单精度浮点数据模型通过使用HDL编码器™金宝app本机浮点图书馆。

在本文中,我们将介绍本机浮点工作流,使用一种IIR滤波器部署到一个FPGA作为例证。我们将回顾使用定点的挑战,并比较该地区和频率使用单精度浮点和定点的权衡。我们还将展示如何结合浮点和定点可以给你更高的精度,同时减少转换和实现时间在实际设计。您将看到如何浮点可以显著减少面积,提高速度在实际设计与高动态范围的要求。

本机浮点实现:

HDL编码器实现单精确算法通过模拟底层数学在FPGA和ASIC资源(图1)。生成的逻辑输入浮点解信号标志,指数,和mantissa-individual整数1,8日和23位宽。生成的硬件描述语言(VHDL)®或Verilog®逻辑然后执行浮点计算如图1所示,一个乘以找出产生的符号位输入符号位级乘法和加法的指数和相应的归一化计算结果所必需的。最后阶段的包的逻辑符号,指数,尾数回浮点数据类型。

图1所示。如何HDL编码单精度浮点乘法运算映射到定点硬件资源。

图1所示。如何HDL编码单精度浮点乘法运算映射到定点硬件资源。

HDL编码器这一切为单精确操作时自动选择“本地浮点库”代码生成选项HDL工作流顾问。您还可以设置选项提供更多控制硬件浮点操作是如何实现的,比如针对一个特定的延迟,针对特定的DSP逻辑FPGA。HDLCoder还提供了选项denormal刷新到零,有效地处理inf和nan。

解决动态范围定点转换问题

一个简单的表达式如1 a / 1 +,如果它需要实现高动态范围,可以通过使用单精度自然翻译(图2)。

图2。单精度的实现(1 a) / (1 + 1)。

图2。单精度的实现(1 a) / (1 + 1)。

然而,实现相同的方程在定点需要许多步骤和数值考虑(图3)。例如,你必须打破部门成乘法和互惠,用近似方法如牛顿或附近地区为非线性互操作,使用不同的数据类型来仔细控制增长,选择合适的分子和分母类型,并使用特定的输出类型和蓄电池类型的蛇和减法器。

图3。定点的实现(1 a) / (1 + 1)。

图3。定点的实现(1 a) / (1 + 1)。

探索信息检索实现选项

让我们来看一个无限脉冲响应(IIR)滤波器的例子。IIR滤波器需要高动态范围计算反馈回路,使它难以收敛定点量化。图4显示了一个测试环境比较三个版本相同的IIR滤波器和一个嘈杂的正弦波输入。正弦波的振幅为1,添加噪声略有增加振幅。第一个版本的过滤器是双精度(图4 b)。第二个版本是单精度。第三个版本是一个定点实现(图4 c)。这个实现了数据类型到22位字长,与1比特分配的标志和21位分配分数。这个特定的数据类型的叶子0位代表整数值,是有意义的,因为它的价值永远是1 - 1为给定的刺激。如果设计有与不同的输入值,需要考虑在定点量化。

图4。三的IIR滤波器的实现。嘈杂的正弦波输入。

图4。三的IIR滤波器的实现。嘈杂的正弦波输入。

图4 b。IIR滤波器与嘈杂的正弦波输入。b。IIR_filter设计、显示与双精度的数据类型。

图4 b。IIR_filter实现,显示与双精度的数据类型。

图4 c。IIR_filter_fixpt实现,它使用定点数据类型签名,是18位字长,其中16位分数的长度。

图4 c。IIR_filter_fixpt实现,它使用定点数据类型签名,是18位字长,其中16位分数的长度。

测试环境设置比较的结果单精度和双精度过滤和定点过滤器、被认为是黄金的参考。在这两种情况下,损失精度将产生一定的误差。错误的问题是在一个可接受的对我们的应用程序。

当我们跑定点设计师™来执行转换,我们指定一个错误宽容的1%。图5显示了比较的结果。单精度的误差的版本是108,而定点数据类型的105。这是在我们指定的错误宽容。如果您的应用程序需要更高的精度,您可能需要增加你的定点单词长度。

图5。仿真结果对比单精度和双精度IIR滤波器结果定点版本。

图5。仿真结果比较双精度IIR滤波器的结果与单精度结果(上)和定点结果(底部)。

会聚在这个量化需要与硬件设计经验,全面了解可能的系统输入,清晰的精度要求,和一些援助定点设计师。这种努力是值得的如果它帮助您缩小您的生产部署算法。但是情况你需要简单地部署到硬件原型,或者精度需求很难减少物理足迹?

在这些情况下一个解决方案是使用单精度浮点数。

与本地浮点简化这个过程

使用本机浮点有两个好处:

  • 你不需要花时间来分析所需要的最小数量的比特保持足够的精确度,各种各样的输入数据。
  • 单精度浮点操作的动态范围尺度更有效地与32位的固定成本。

现在设计过程要简单得多,你知道的一些迹象,指数,尾数可以代表一个数字宽动态范围。图6中的表比较了资源利用率的浮点和定点IIR滤波器的实现使用的数据类型选择如图5所示。

图6。资源使用对比的定点和浮点实现IIR滤波器。

图6。资源使用对比的定点和浮点实现IIR滤波器。

当你在考虑对比结果从浮点和定点实现,记住,浮点计算需要比简单的定点算术操作。使用单精度将导致更高的物理资源使用当您部署到一个FPGA和ASIC。如果电路面积问题,那么你将需要权衡更高精度和资源使用。您还可以使用浮点和定点减少面积,同时保留单精度来实现数值计算密集型的高动态范围的岛屿。

管理资源使用与本地浮点

本机浮点是一种简单的方法来生成高动态范围的应用程序代码一个FPGA或部署到一个ASIC。但如果本机浮点超过你的资源预算,有几种方法可以减少资源使用情况:

  • 使用高密度脂蛋白编码器优化。资源共享和其他algorithm-level优化支持本地浮点代码生成。金宝app例如,这些优化可以减少区域通过共享复杂的数学运算,消费显著区域,如经验值,量化通过时分复用和其他共享和流媒体技术。
  • 在适当的地方使用定点转换过程。定点转换非常简单的设计没有高动态范围需求或反馈循环,和定点设计师帮助自动化这个过程。在某些类型的设计,实现收敛没有添加额外的比特是很困难的。在这种情况下,使用选择性应用程序的本地浮点是更好的选择。这种方法使用定点转换的设计允许您使用浮点在高动态范围的部分数据路径。
  • 创建浮点和定点“岛屿”的设计。一旦你已经确定的部分设计实现融合,它将是一个挑战,您可以通过使用数据类型转换块孤立他们,将输入转换为单精度,然后转换操作的输出回到适当的定点类型。图7显示了电机控制设计的一部分获得操作和要求操作隔离本地浮点地区,与输出转换回一个定点值。
图7。混合定点和浮点本土相同的设计。

图7。混合定点和浮点本土相同的设计。

这是一个快速指南中选择浮点或定点设计:

对整个设计使用浮点如果:

  • 你缺乏经验与定点量化。
  • 你的算法有一个非常大的和非常小的数字。
  • 你的设计广泛使用大于32位定点类型。
  • 你的设计包括非线性等操作,国防部,快速眼动,日志,经验值,:,很难转换为定点。
  • 你有灵活性,使用更大的面积和延迟(例如,在电机控制等较低带宽的应用程序或音频处理)。

对整个设计使用定点如果:

  • 你是经验丰富的在定点量化。
  • 将你的算法转换为定点很简单。
  • 你有严格的区域和延迟需求。

混合浮动和定点如果:

  • 你的设计的混合控制逻辑和数据路径和大动态范围。
  • 只有部分的设计是具有挑战性的定点数字转换。
  • 你的区域有足够的保证金要求有限使用浮点算术。

一个真实的例子使用本机浮点

如图8所示,如果你处理动态范围问题,朝着更长的单词长度,定点实现比浮点版本可以消耗更多的资源。

图8。Sqrt函数资源利用率。

图8。Sqrt函数资源利用率。在更大的单词长度,sqrt消耗比单精度实现、FPGA资源固定成本。

可以看到本机浮点,在这样的情况下,考虑一下这个例子的电动汽车模型(图9)。这是一个复杂的模型包含许多组件,包括电池模型,一个逆变器、永磁同步电动机和车辆模型。

图9。电动汽车模型。

图9。电动汽车模型。

图10显示了数学方程用于实现这些组件。

图10。电气车辆中使用的数学方程模型。

图10。电气车辆中使用的数学方程模型。

针对这样一个模型与定点硬件可能是具有挑战性的,因为所有的组件之间的反馈回路。需要几个月的时间才能找出如何降低量化误差与复杂系统的组件之间的反馈回路永磁同步电动机和变频器。为了减少错误,您必须使用非常大的单词长度。在浮点支持下,然而,这个模型可以直接目标金宝app硬件没有将它转换为定点。

如图11所示,浮点数的数据类型是正确的选择与反馈的浮点算法实现使用更少的地区和执行更好,作为定点版本的相同的算法需要大量的单词长度。

图11。比较的定点和浮点实现电动汽车模型。

图11。比较的定点和浮点实现电动汽车模型。

结论

定点量化历来是最具挑战性的任务之一在一个算法适应目标FPGA和ASIC的硬件。本机浮点HDL代码生成允许您生成硬件描述语言(VHDL)或Verilog浮点实现在硬件没有定点的工作转换。这种方法可以节省大量的时间,如果你创建一个FPGA实现,它可以是一个目标算法Xilinx更快的方法®Zynq®SoC或英特尔®SoC FPGA。

设计需要最好的两个世界的控制逻辑的不动点和浮动的高动态范围的数据路径你可以很容易地把两者结合起来。

2018年出版的