你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

赛灵思中国通讯52-如何利用FPGA计算数学复变函数

发布者:jackzhang 时间:2014-06-23 17:23:44

作者:Adam P. Taylor  工程-系统负责人 e2v技术公司

由于其灵活性与高性能,FPGA 已经在众多需要计算复杂数学题或传递函数的工业、科研、军事及其它应用中找到用武之地。苛刻的精度要求与计算时
延在更关键的应用中并不少见。在采用 FPGA 实现数学函数时,工程师一般选择定点数学(参见 :赛灵思中国通讯第 45 期的《FPGA 数学运算的基础知识》。另外,您还可以采用 CORDIC 等许多算法计算超越函数(参见 :赛灵思中国通讯第 44期的《如何在 FPGA 中运用 CORDIC算法》,ht tp: / / china .xi l inx. com/ publications/archives/xcel  l/Xcell79.pdf )。不过,在遇到极为复杂的数学函数时,与在 FPGA 之中实现精确需求函数相比,还有更高效的方法进行处理。为了理解这些变通方法 – 尤其是其中的多项式近似法,我们首先需要定义相关问题。

设置问题
F P G A 中负责监控铂电阻温度计(PRT)并把 PRT 电阻转换成温度的复杂数学传递函数就是这样一个例子。这种转换一般采用 Callendar-Van Dusen 方程实现。通过以下该方程的简化形式,可以确定温度介于 0 oC~660 oC 之间。.


式中,R0 为 0 oC 时的电阻,a与 b 是 PRT 的系数,而 t 则是温度。现实中,我们希望从电阻转换到温度。为此,我们需要调整该方程,确保得出的结果是给定电阻下的温度。大多数采用 PRT 的系统都会设计电子装置、采用电子电路测量PRT 的电阻,然后利用 FPGA、通过调整后的下式计算温度。
在 FPGA 中实现此方程即使是经验丰富的 FPGA 工程师也会望而却步。参考温度绘制所获得的电阻可以获得图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

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了