一种基于fpga的三角函数实现方法

文档序号:6353992阅读:2663来源:国知局
专利名称:一种基于fpga 的三角函数实现方法
技术领域
本发明涉及一种三角函数实现方法,具体涉及一种基于FPGA的三角函数实现方法。
背景技术
传统上计算三角函数和其它一些硬件不易实现的函数,一般使用查表法、多项式展开或近似的方法。这些方法不能兼顾速度、精度、简单性等方面的要求。Voider于1959年在美国航空控制系统的设计中提出CORDIC (Coordinate Rotational Digital Computer, 坐标旋转计算机)算法。其基本思想是用一系列与运算基数相关的角度的不断偏摆,从而逼近所需旋转的角度。从广义上讲它是一个数值计算逼近的方法。这些固定的角度与计算基数有关,运算只有移位和加减。可通过该算法不同的实现形式(如圆周模式、双曲线模式、线性模式等)来计算包括乘、除、平方根、正旋、余弦、反正切、向量旋转(即复数乘法)以及指数运算等。1971年,J. S Walther提出了统一的CORDIC算法形式,把圆周旋转、双曲旋转和直线旋转统一到同一个CORDIC迭代方程中,为统一硬件实现多功能运算奠定了基础。CORDIC迭代方程从算法本身入手,将复杂的算法分解成一些在硬件中容易实现的基本算法,如加法、移位等,从而使得这些算法在硬件上可以得到较好的实现。由于该算法是一种规则化的算法,它满足了硬件对算法的模块化、规则化的要求,因此CORDIC算法可以充分发挥硬件的优势,利用硬件的资源,从而实现硬件与算法相结合的一种优化方案。因此,现阶段CORDIC算法的研究非常活跃,无非都在追求高速、准确以及灵活的极致。

发明内容
本发明的目的在于提供一种基于FPGA的三角函数实现方法,该方法基于CORDIC 迭代算法,再进过简单处理就可以得到正切和反正切结果,而且计算出来的结果在输出前转换成了 IEEE-7M标准单精度浮点格式,使用简单方便灵活;采用16级迭代运算,精度误差小于10_3 ;尤其在用FPGA做算法处理用到三角函数时更能体现其高速的特点。本发明的技术方案是
一种基于FPGA的三角函数实现方法,其特殊之处在于,该方法包括 利用FPGA控制设计的三个子模块计算得出三角函数结果;所述三个子模块分别是 C0RDIC_PRE前预处理模块、CORDIC模块以及C0RDIC_P0ST后处理模块;
其中C0RDIC_PRE前预处理模块由于迭代本身的限制,最大旋转角度为0、9. 9 °,故前置处理单元就是将输入角度扩展为[ + 2n^r ] (n=0, 1,2-)任意角度并放大处理;在迭代开始前根据三角函数的对称性把输入角度转化到第一象限;
CORDIC模块采用流水线结构设计,即前一个步骤的输出是下一个步骤的输入; C0RDIC_P0ST后处理模块后置处理将内部CORDIC计算出来的结果在输出前转换成
IEEE-754 标准格式,即((-:Tf2fl-127(1./ 形式。
上述C0RDIC_PRE前预处理模块在迭代开始前根据三角函数的对称性把输入角度所在象限统一转化到第I象限并放大处理,在旋转模式时,由于受迭代本身的限制,最大旋转角度为
权利要求
1.一种基于FPGA的三角函数实现方法,其特征在于,该方法包括利用FPGA控制设计的三个子模块计算得出三角函数结果;所述三个子模块分别是 C0RDIC_PRE前预处理模块、CORDIC模块以及C0RDIC_P0ST后处理模块;其中C0RDIC_PRE前预处理模块由于迭代本身的限制,最大旋转角度为0、9. 9 °,故前置处理单元就是将输入角度扩展为[ + 2n^r ] (η=0, 1,2-)任意角度并放大处理;在迭代开始前根据三角函数的对称性把输入角度转化到第一象限;CORDIC模块采用流水线结构设计,即前一个步骤的输出是下一个步骤的输入; C0RDIC_P0ST后处理模块后置处理将内部CORDIC计算出来的结果在输出前转换成IEEE-754 标准格式,即((-1)13-127(1./))形式。
2.根据权利要求1所述基于FPGA的三角函数实现方法,其特征在于所述C0RDIC_PRE前预处理模块在迭代开始前根据三角函数的对称性把输入角度所在象限统一转化到第I象限并放大处理,在旋转模式时,由于受迭代本身的限制,最大旋转角度为
3.根据权利要求1所述基于FPGA的三角函数实现方法,其特征在于所述CORDIC模块中,假设CORDIC模块的第i次迭代过程,其中arctan (i)由公式arrtan(|)算出,每迭代一次其值除二 ;对所有内部信号都用16bits表示,输入及输出信号都用32bits表示,16级流水线设计。
4.根据权利要求1所述基于FPGA的三角函数实现方法,其特征在于所述C0RDIC_ POST后处理模块将内部CORDIC模块计算出来的结果在输出前转换成IEEE-7M单精度标准格式,即((-1)52M2 (1./))形式;单精度浮点数由符号位,指数偏置位e =E+bias (Ε是未偏置的指数)和小数/ =.力22力21力20. . . m三个部分组成;所述C0RDIC_P0ST后处理模块包括导零检测电路,其功能是用来统计数据从最高位开始连续“0”的个数,再根据它把计算出来的数值转换成IEEE-7M标准格式;在转换过程中需要对尾数进行左移,才能表示为(127(1./),此位移量再与前置处理器单元传来的参考指数值相减,得到输出指数值;符号位直接由前置处理过程得到;最后将符号位、指数数值、小数按位连接得到IEEE-7M格式的数据,再根据输入角度的正负以及三角函数对称的性质进行最后处理然后输出结果。
全文摘要
一种基于FPGA的三角函数实现方法,包括设计的三个子模块计算得出三角函数结果;分别是CORDIC_PRE前预处理模块、CORDIC模块以及CORDIC_POST后处理模块;其中CORDIC_PRE前预处理模块将输入角度扩展[2n](n=0,1,2…)任意角度并放大处理;在迭代开始前根据三角函数的对称性把输入角度转化到第一象限;CORDIC模块采用流水线结构设计;CORDIC_POST后处理模块后置处理将内部CORDIC计算出来的结果在输出前转换成IEEE-754标准格式。本发明采用16级迭代运算,精度误差小于10-3;尤其在用FPGA做算法处理用到三角函数时更能体现其高速的特点。
文档编号G06N7/00GK102542336SQ20111043648
公开日2012年7月4日 申请日期2011年12月23日 优先权日2011年12月23日
发明者刘升, 蒋建军 申请人:西安奇维科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1