By Adam Taylor
注:本文摘自“复杂数学函数的计算”,作者是Adam Taylor,该文章发表在 第87期XCell期刊 上。Adam经常给XCell期刊投稿,在XCell日报上,他的“MicroZed Chronicles”系列文章已经发表了近30期,最近他成为了e2v科技的系统工程主管。
越来越多的关键应用都对精确性和计算延迟时间有严格的要求。FPGA的灵活性和性能使得它们广泛应用在工业、科学、军事以及其他的许多应用场合中,来计算复杂的数学问题或者传递函数,有许多算法,比如CORDIC算法,可以用来做为超越函数的计算处理模块。
CORDIC算法可以用来实现正弦、余弦、乘法、除法、平方根等超越函数,因此,把CORDIC算法和基本的数学模块结合起来来计算传递函数,可以得到较为精确的结果。但是,对于复杂的传递函数来说,获得精确结果的代价是花费更多的设计和验证的时间。(参见第79期Xcell期刊,“How to Use the CORDIC Algorithm in Your FPGA”。CORDIC算法在上世纪50年代发展的简单介绍,可以参见“CORDIC and the Hustler”这里)
对于复杂的传递函数,除了在FPGA中实现精确的函数功能外,还有许多更为有效的处理方法。一个例子就是用FPGA来监控铂电阻温度计(PRT),并把铂电阻温度计的电阻值转换为温度。这个转换一般会使用Callendar-Van Dusen方程,这个方程可以用来确定0oC~660oC之间的温度值,方程如下: