CN111949934A - 一种基于fpga的cordic优化方法 - Google Patents
一种基于fpga的cordic优化方法 Download PDFInfo
- Publication number
- CN111949934A CN111949934A CN202010845215.9A CN202010845215A CN111949934A CN 111949934 A CN111949934 A CN 111949934A CN 202010845215 A CN202010845215 A CN 202010845215A CN 111949934 A CN111949934 A CN 111949934A
- Authority
- CN
- China
- Prior art keywords
- cordic
- input
- module
- lookup table
- multiplier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种基于FPGA的CORDIC优化方法,基于FPGA的CORDIC优化方法包括阈值判断模块,用来判断中间位数据是否符合taylor算法启用条件;查找表模块,构造一个低容量查找表对输入三角函数进行预旋转,输出前几次旋转的结果,减少CORDIC算法的旋转次数,从而减少硬件规模消耗;taylor算法计算模块,通过调用乘法器和加法器以完成taylor展开公式的硬件实现,用来完成对输入三角函数的计算;CORDIC算法计算模块,采用流水线结构设计,用来完成对输入角度的计算;象限补偿模块,用来对最终结果进行校正。本发明具有低延迟,低误差,硬件资源占用少的特点。
Description
(一)技术领域
本发明涉及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为本发明在Altera Cyclone IV FPGA上实现的一种基于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的正负来判断补偿因子ε的数值。
Claims (6)
1.一种基于FPGA的CORDIC优化方法。其特征是在于包括阈值判断模块1、查找表2、taylor计算模块3、CORDIC计算模块4以及象限补偿单元5组成。所述的阈值判断模块1的输入端和三角函数的中间位连接,所述的阈值判断模块1的输出端与所述的查找表2的地址输入端、三角函数的低位和taylor计算模块3的数据输入端连接,所述的查找表2的数据输出端、三角函数的低位和CORDIC计算模块4的输入端连接,所述的CORDIC计算模块4、所述的taylor计算模块3、三角函数的高位和象限补偿单元5连接。
2.根据权利要求1所述的一种基于FPGA的CORDIC优化方法,其特征在于所述的阈值判断模块1包括一个多输入或门和一个多路选择器,所述多输入或门与三角函数中间位连接,当所述中间位输入均为0时切换所述多路选择器至所述taylor计算模块3,否则切换至所述查找表2。
3.根据权利要求1所述的一种基于FPGA的CORDIC优化方法,特征在于所述查找表2用于直接输出CORDIC迭代的前n次数值,所述查找表的地址为三角函数中间位,所述查找表的存储值为预旋转的角度值,所述角度值为16bit定点数,前7位为整数位,后9位为小数位。
4.根据权利要求1所述的一种基于FPGA的CORDIC优化方法,特征在于所述的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的输出端一起和累加器相连。
5.根据权利要求1所述的一种基于FPGA的CORDIC优化方法。其特征在于所述的CORDIC计算模块4包括n级流水线,所述每级流水线包括一个移位寄存器三个加减法运算器。
6.根据权利要求1所述的一种基于FPGA的CORDIC优化方法。其特征在于所述的象限补偿模块5包括一个多路器,一个查找表和一个加法器。所述多路器的数据端分别与θ和θ取反连接,所述多路器的控制端与输入三角函数的异或连接,所述查找表的输入端和输入三角函数连接,所述多路器输出和所述查找表和加法器连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010845215.9A CN111949934A (zh) | 2020-08-20 | 2020-08-20 | 一种基于fpga的cordic优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010845215.9A CN111949934A (zh) | 2020-08-20 | 2020-08-20 | 一种基于fpga的cordic优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111949934A true CN111949934A (zh) | 2020-11-17 |
Family
ID=73358708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010845215.9A Pending CN111949934A (zh) | 2020-08-20 | 2020-08-20 | 一种基于fpga的cordic优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949934A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385632B1 (en) * | 1999-06-18 | 2002-05-07 | Advanced Micro Devices, Inc. | Fast CORDIC algorithm with sine governed termination |
CN101626220A (zh) * | 2009-08-03 | 2010-01-13 | 浙江大学 | 一种基于cordic算法的数字锁相放大器 |
CN102542336A (zh) * | 2011-12-23 | 2012-07-04 | 西安奇维科技股份有限公司 | 一种基于fpga 的三角函数实现方法 |
CN106027045A (zh) * | 2016-05-23 | 2016-10-12 | 西安电子科技大学昆山创新研究院 | 基于改进cordic算法的直接数字频率合成器 |
CN106155627A (zh) * | 2016-06-30 | 2016-11-23 | 中国人民解放军国防科学技术大学 | 基于t_cordic算法的低开销迭代三角函数装置 |
CN106202890A (zh) * | 2016-06-30 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置 |
CN109614073A (zh) * | 2018-10-28 | 2019-04-12 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 四象限反正切函数硬件实现电路 |
CN109814836A (zh) * | 2018-12-28 | 2019-05-28 | 中电科仪器仪表有限公司 | 一种基于区间划分和cordic的三角函数计算方法及装置 |
CN110096672A (zh) * | 2019-04-25 | 2019-08-06 | 天津大学 | 基于fpga的低成本流水线型fft处理器实现方法 |
-
2020
- 2020-08-20 CN CN202010845215.9A patent/CN111949934A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385632B1 (en) * | 1999-06-18 | 2002-05-07 | Advanced Micro Devices, Inc. | Fast CORDIC algorithm with sine governed termination |
CN101626220A (zh) * | 2009-08-03 | 2010-01-13 | 浙江大学 | 一种基于cordic算法的数字锁相放大器 |
CN102542336A (zh) * | 2011-12-23 | 2012-07-04 | 西安奇维科技股份有限公司 | 一种基于fpga 的三角函数实现方法 |
CN106027045A (zh) * | 2016-05-23 | 2016-10-12 | 西安电子科技大学昆山创新研究院 | 基于改进cordic算法的直接数字频率合成器 |
CN106155627A (zh) * | 2016-06-30 | 2016-11-23 | 中国人民解放军国防科学技术大学 | 基于t_cordic算法的低开销迭代三角函数装置 |
CN106202890A (zh) * | 2016-06-30 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置 |
CN109614073A (zh) * | 2018-10-28 | 2019-04-12 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 四象限反正切函数硬件实现电路 |
CN109814836A (zh) * | 2018-12-28 | 2019-05-28 | 中电科仪器仪表有限公司 | 一种基于区间划分和cordic的三角函数计算方法及装置 |
CN110096672A (zh) * | 2019-04-25 | 2019-08-06 | 天津大学 | 基于fpga的低成本流水线型fft处理器实现方法 |
Non-Patent Citations (6)
Title |
---|
TRIO ADIONO: "CORDIC and Taylor Based FPGA Music Synthesizer", IEEE, pages 1 - 6 * |
姚亚峰;徐洋洋;侯强;钟梁;: "基于小容量查找表的CORDIC算法设计", 湖南大学学报(自然科学版), no. 04, pages 85 - 89 * |
孙宇峰: "一种高精度正余弦函数的FPGA实现方法", 信息工程大学学报, pages 368 - 370 * |
张盛耀: "CORDIC 算法在基于 FPGA 的数字信号处理中的应用", 科技咨询导报, pages 16 - 19 * |
朱保周: "低误差浮点基本函数计算的算法研究与设计", 中国优秀硕士论文电子期刊网, pages 137 - 85 * |
蔡权利: "基于 FPGA 的 CORDIC 算法实现", 电子器件, pages 1242 - 1246 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
CN109739470B (zh) | 一种基于2型双曲cordic任意指数函数的计算系统 | |
CN113138749B (zh) | 基于cordic算法的三角函数计算装置及方法 | |
CN112734023B (zh) | 应用于循环神经网络的激活函数的可重构电路 | |
CN106155627A (zh) | 基于t_cordic算法的低开销迭代三角函数装置 | |
CN111984227A (zh) | 一种针对复数平方根的近似计算装置及方法 | |
CN102799412A (zh) | 基于并行流水线设计的cordic加速器 | |
CN100511125C (zh) | 一种cordic算法的实现装置 | |
CN111813371A (zh) | 数字信号处理的浮点除法运算方法、系统及可读介质 | |
CN109614073B (zh) | 四象限反正切函数硬件实现电路 | |
CN103176948A (zh) | 一种低成本的单精度初等函数运算加速器 | |
CN114326922A (zh) | 一种数据处理方法及装置 | |
CN111949934A (zh) | 一种基于fpga的cordic优化方法 | |
CN100386719C (zh) | 用于数字扫描变换装置的坐标转换方法及处理器 | |
CN103593159A (zh) | 一种高效率高精度除法实现方法及装置 | |
CN112836170A (zh) | 一种数据坐标转换方法及装置 | |
CN107657078B (zh) | 基于fpga的超声相控阵浮点聚焦发射实现方法 | |
US20210224035A1 (en) | Xiu-accumulating register, xiu-accumulating register circuit, and electronic device | |
CN115526131A (zh) | 多级编码近似计算Tanh函数的方法及装置 | |
CN109190084B (zh) | 一种正余弦计算的硬件实现方法 | |
CN115658008A (zh) | 一种资源复用型超越函数运算实现方法 | |
CN111988035B (zh) | 一种高速高精度nco电路 | |
CN113778378A (zh) | 一种求解复数n次方根的装置和方法 | |
CN108416311B (zh) | 一种基于可编程门阵列和坐标旋转处理的方位角获取方法 | |
Saha et al. | Area efficient architecture of Hyperbolic functions for high frequency applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |