计算复杂数学函数.PDFVIP

  • 41
  • 0
  • 约 5页
  • 2018-11-27 发布于天津
  • 举报
计算复杂数学函数

手把手课堂:FPGA 101 计算复杂数学函数 作者:Adam P. Taylor 工程-系统负责人 e2v技术公司 aptaylor@ FPGA 的最大优势之一是您能够利用其嵌入式 DSP 模块解决最棘手 的数学传递函数。多项式近似法就是此方面的良方。 由于其灵活性与高性能,FPGA 已经在众多需要计算复杂数学题或传递函数的工业、科研、军事 及其它应用中找到用武之地。苛刻的精度要求与计算时延在更关键的应用中并不少见。 在采用 FPGA 实现数学函数时,工程师一般选择定点数学(参见:赛灵思中国通讯第 80 期的 《FPGA 数学基础》,/xcelljournal/ docs/xcell80/44?e=2232228/2002872 )。另外, 您还可以采用CORDIC 等许多算法计算超越函数(参见:赛灵思中国通讯第79 期的《如何在FPGA 中运用CORDIC 算法》,/ publications/archives/xcel l/Xcell79.pdf) 。 不过,在遇到极为复杂的数学函数时,与在 FPGA 之中实现精确需求函数相比,还有更高效的 方法进行处理。为了理解这些变通方法 – 尤其是其中的多项式近似法,我们首先需要定义相关 问题。 设置问题 FPGA 中负责监控铂电阻温度计(PRT )并把PRT 电阻转换成温度的复杂数学传递函数就是这样 一个例子。这种转换一般采用Callendar-Van Dusen 方程实现。通过以下该方程的简化形式,可 以确定温度介于0C~660C 之间。 式中,R0 为0C 时的电阻,a 与b 是PRT 的系数,而t 则是温度。 现实中,我们希望从电阻转换到温度。为此,我们需要调整该方程,确保得出的结果是给定电阻 下的温度。大多数采用PRT 的系统都会设计电子装置、采用电子电路测量PRT 的电阻,然后利 用FPGA 、通过调整后的下式计算温度。 在FPGA 中实现此方程即使是经验丰富的FPGA工程师也会望而却步。参考温度绘制所获得的电 阻可以获得图1所示图形。 从图中可以清晰看出响应的非线性。 温度与电阻 图1 – 传递函数图 直接在 FPGA 中实现调整后的传递函数会在实际所需设计工作量以及验证方面面临着巨大挑战 (确保精度以及跨边界与极端条件函数)。许多工程师会想方设法实现函数,以便减少设计与验 证工作量,从而控制项目进度。一个可行的方法是采用查找表保存曲线中的一系列点,同时提供 LUT 所含点之间的线性插值。 根据相关精度要求和保存在查找表中的元素数量,这种方法有可能满足需求。但是,您仍然需要 在设计中包含线性插值函数。此函数在数学上非常复杂,而且往往包含一个非二次幂除法,其会 进一步增加复杂性。 利用FPGA资源 相反,您还可以利用另一种方法实现此类传递函数,那就是利用FPGA 的本身特性。赛灵思 Spartan-6与7系列Artix 、Kintex与Virtex等新型FPGA不仅仅只包含传统查找表和触发器,还具有 内置DSP Slice、Block RAM 、分布式RAM 、PCIe®等众多高级IP硬核以及以太网端点、高速串行 链路等。 由于其提供的48 位累加器,工程师通常把DSP Slice 称为DSP48s 。不过,这些Slice 还提供25 x 18 位宽乘法器、加/减功能以及众多其它功能。您可以利用这些内部RAM 结构和DSP Slice 更轻 松实现传递函数。 多项式近似法 利用FPGA 具有丰富DSP 与RAM 的结构的一种方法是多项式近似法。为了使用此方法,您必 须首先绘出数学函数图,在MATLAB 或Excel 等数学程序中涵盖输入值范围。然后您可以在相 关数据集中添加多项式趋势线,然后可以在 FPGA 中实现该趋势线的等式,以取代复杂数学函 数,只要趋势线等式符合精度要求。 如果一个多项式方程无法针对整个传递函数输入范围提供 足够精度,则可以添加更多方程。只要生成一系列在相关输 入范围使用的多项式常数,您就能够继续依赖此方法。 能够添加多项式趋势线的数学程序大部分都允许您选择阶次或多项式项的数量。阶次越高,则配 合越准确——但是您需要在 FPGA 中实现更多的项。在针对传递函数示例实施此过程时,我们 是采用Microsoft Excel ,我们已经获得了图2 所示趋势线与等式。本例中采用4 次多项式方程。 在获得了适合我们希望实现的传递函数的多项式之后,我们可以采用相同分析工具(在

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档