一种基于FPGA的CORDIC优化方法与流程

文档序号:22966989发布日期:2020-11-19 21:39阅读:304来源:国知局
一种基于FPGA的CORDIC优化方法与流程

(一)技术领域

本发明涉及cordic算法领域,尤其涉及一种基于fpga的cordic优化方法.

(二)

背景技术:

在科学计算、模拟仿真、运动控制、信号处理等的领域,经常需要使用到三角函数,很多根据三角函数值来计算角度的情况对精确性和实时性都有很高的要求。

传统的三角函数计算方法包括查找表法、cordic算法和taylor展开法。查找表是实现起来最简单的方法,将输入作为地址,输出作为存储值,将输入输出对应关系提前存储在rom中,根据不同需求进行调用,可以达到很快的速度。但是查找表法需要比较麻烦的前期准备工作,而且随着精度的提升,消耗的硬件资源呈指数级增长,不利于高精度三角函数计算。

cordic算法是由j.volder于1959年提出,首先用于导航系统中,通过逐次趋近的方法对坐标进行旋转来得到结果,无需使用查找表和乘法器,只需要简单的移位和相加运算就可以产生高精度的三角函数计算结果。cordic因为本身迭代计算的性质,还非常适合以流水线的形式出现,极大提高了数据吞吐率,因此,cordic算法非常适合硬件实现。但是cordic缺点在于当输入三角函数坐标接近坐标轴的时候,cordic收敛较慢,计算精度不理想,而且cordic在硬件实现过程中需要消耗大量时序逻辑资源。

taylor展开法也是计算三角函数的重要方法之一,taylor展开法利用多项式函数来逼近原函数,由于三角函数可以任意次求导,因此可以用taylor展开来获取角度信息。taylor展开在硬件实现过程中需要频繁调用乘法器,对硬件资源消耗较大,但taylor展开在三角函数趋近坐标轴时项数并不会发生改变,一定程度上可以和coridc算法形成互补。

(三)

技术实现要素:

针对传统cordic收敛慢,精度低,时序逻辑资源消耗大等缺陷,本发明的目的在于提供一种低延迟,低误差,硬件资源占用少的基于fpga的cordic优化方法。

本发明的目的是这样实现的:

一种基于fpga的cordic优化方法。包括阈值判断模块1、查找表2、taylor计算模块3、cordic计算模块4以及象限补偿单元5组成。所述的阈值判断模块1的输入端和三角函数的中间位连接,所述的阈值判断模块1的输出端与所述的查找表2的地址输入端、三角函数的低位和taylor计算模块3的数据输入端连接,所述的查找表2的数据输出端、三角函数的低位和cordic计算模块4的输入端连接,所述的cordic计算模块4、所述的taylor计算模块3、三角函数的高位和象限补偿单元5连接。

在于所述的阈值判断模块1包括一个多输入或门和一个多路选择器,所述多输入或门与三角函数中间位连接,当所述中间位输入均为0时切换所述多路选择器至所述taylor计算模块3,否则切换至所述查找表2。

所述查找表2用于直接输出cordic迭代的前n次数值,所述查找表的地址为三角函数中间位,所述查找表的存储值为预旋转的角度值,所述角度值为16bit定点数,前7位为整数位,后9位为小数位。

所述的taylor计算模块3包括4个乘法器,3个除法器,2个反相器和1个累加器;在所述的taylor计算模块中,乘法器1的两个输入端均和输入数据相连用于计算输入数据平方,乘法器2的输入端与乘法器1和输入数据相连,乘法器3、乘法器4的输入端分别与乘法器1和前级乘法器输出相连,乘法器2的输出端与固定值3!和除法器1的输入端相连,乘法器3的输出端与固定值5!和除法器2的输入端相连,乘法器4的输出端与固定值7!和除法器3的输入端相连,除法器1和除法器3的输出端在经过反相器后,与除法器2的输出端一起和累加器相连。

所述的cordic计算模块4包括n级流水线,所述每级流水线包括一个移位寄存器三个加减法运算器。

所述的象限补偿模块5包括一个多路器,一个查找表和一个加法器。所述多路器的数据端分别与θ和θ取反连接,所述多路器的控制端与输入三角函数的异或连接,所述查找表的输入端和输入三角函数连接,所述多路器输出和所述查找表和加法器连接。

与现有技术相比,本发明有如下优点:

1、本发明采用低容量查找表进行预迭代,极大地减少了cordic算法需要的时间,节省了时序逻辑资源。

2、本发明的cordic优化方法结构简单,可以在不同平台上进行移植,具有普遍的适用性。

3、本发明采用taylor算法和cordic相结合的方法,克服了coridc在趋近坐标轴时产生的收敛速度慢,精度低的缺点。

(四)附图说明

图1为本发明的cordic优化算法的整体结构示意图

图2为本发明的cordic优化算法的输入信号格式示意图

图3为本发明的cordic优化算法的查找表的真值表

图4为本发明的cordic优化算法的taylor计算模块结构示意图

图5为本发明的cordic优化算法的cordic计算模块的结构示意图

图6为本发明的cordic优化算法的象限补偿模块的结构示意图

图7为本发明的cordic优化算法的象限补偿模中查找表的真值表

(五)具体实施方式

下面结合具体的实施例来进一步阐述本发明。

图1为本发明在alteracycloneivfpga上实现的一种基于fpga的cordic优化方法示意图,包括包括阈值判断模块1、查找表2、taylor计算模块3、cordic计算模块4以及象限补偿单元5组成。所述的阈值判断模块1的输入端和三角函数的中间位连接,所述的阈值判断模块1的输出端与所述的查找表2的地址输入端、三角函数的低位和taylor计算模块3的数据输入端连接,所述的查找表2的数据输出端、三角函数的低位和cordic计算模块4的输入端连接,所述的cordic计算模块4、所述的taylor计算模块3、三角函数的高位和象限补偿单元5连接。

图2为本发明中的输入信号格式示意图,从左至右第1位为最高位,表示符号,正0负1;从左至右第2到5位为中间位;从左至右第6到9位为低位。

图3为本发明的cordic优化算法的查找表的真值表,地址为三角函数中间位,所述查找表的存储值为预旋转的角度值,所述角度值为16bit定点数,前7位为整数位,后9位为小数位。

图4为本发明的cordic优化算法的taylor计算模块结构示意图,一个乘法器用作平方运算,平方运算的结果分别和x,x^3,x^5相乘,得到x^3、x^5、x^7,满足泰勒展开公式的要求。

图5为本发明中本发明的cordic优化算法的cordic计算模块的结构示意图,cordic计算模块由n级流水线串联而成。

图6为本发明的cordic优化算法的象限补偿模块的结构示意图,当输入三角函数位于第一象限时不需要补偿,位于第二象限时输出为π-θ,位于第三象限时输出为π+θ,第四象限时为2π-θ。

图7为本发明的cordic优化算法的象限补偿模中查找表的真值表,根据输入x和y的正负来判断补偿因子ε的数值。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1