CN104102471B - 一种应用fpga定点化技术实现指数cordic算法收敛域扩张的方法 - Google Patents
一种应用fpga定点化技术实现指数cordic算法收敛域扩张的方法 Download PDFInfo
- Publication number
- CN104102471B CN104102471B CN201410344474.8A CN201410344474A CN104102471B CN 104102471 B CN104102471 B CN 104102471B CN 201410344474 A CN201410344474 A CN 201410344474A CN 104102471 B CN104102471 B CN 104102471B
- Authority
- CN
- China
- Prior art keywords
- fixed point
- fpga
- cordic
- exponential function
- cordic algorithm
- 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.)
- Expired - Fee Related
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种应用FPGA定点化技术实现指数函数CORDIC算法收敛域扩张的方法,该方法包括:由双曲系统CORDIC算法推导收敛域内指数函数CORDIC算法;应用区间压缩方法实现指数函数CORDIC算法的收敛域扩张;应用定点化技术在FPGA实现指数函数CORDIC算法收敛域扩张。本发明只用两条数据链,即对角度zi与坐标xi进行迭代,能有效节省1/3硬件资源,提高算法实时性;应用定点化技术在FPGA实现收敛域扩张方法,其求解方法巧妙,只需使用两个乘法器,避免除法器的使用;采用15级流水线结构,用FPGA实现双曲系统CORDIC算法来求解指数函数,运算结果相对误差达到了10‑4,满足实际工程精度要求。
Description
技术领域
本发明涉及一种应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法。
背景技术
指数函数和对数函数在超声检测、无线通信、图像信号处理等领域应用非常广泛,用较低的硬件代价实现快速高精度的指、对数函数运算电路变得非常重要。目前在硬件实现指数/对数函数求值的方法主要有查表法、泰勒展开式法、查表相加法、基于查找表的多项式逼近和坐标旋转数字计算(Coordinate Rotation Digital Computer,CORDIC)算法等。CORDIC算法由于硬件实现简单而备受关注,它是1959年由Volder J提出,通过一系列固定与运算基数有关角度不断偏摆迭代以逼近所需旋转角度,由简单加法、移位操作即可完成三角函数、指数函数、对数函数等超越函数的计算。1971年Walther J D把旋转模式、向量模式和线性模式统一成标准CORDIC迭代方程,并根据旋转角度分为圆周系统和双曲系统。指数函数就是在双曲系统下采用旋转模式实现的。
为实现指数函数的CORDIC算法,国内外开展很多有益研究,主要从指数CORDIC算法实现机理、算法改进思路、算法收敛域扩张等进行研究,但大多文献只给出了指数CORDIC算法的仿真实现及理论探索,对硬件实现很少作详细讨论,更没有涉及FPGA实现技巧的研究。为此,本发明针对指数函数CORDIC算法在FPGA实现的技巧问题,研究FPGA定点化技术实现收敛域扩张的方法,在FPGA实现指数函数CORDIC算法。
发明内容
为解决上述技术问题,本发明的目的是提供一种应用FPGA定点化技术实现指数函数CORDIC算法收敛域扩张的方法,该方法降低结构复杂度、节省系统资源、收敛域范围宽和计算精度高。
本发明目的通过以下技术方案来实现:
1、一种应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法,包括:
A由双曲系统CORDIC算法推导收敛域内指数函数CORDIC算法;
B采用区间压缩方法实现指数函数CORDIC算法的收敛域扩张;
C应用定点化技术在FPGA实现指数函数CORDIC算法收敛域扩张。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:算法只用两条数据链,即对角度zi与坐标xi进行迭代,能有效节省1/3硬件资源,提高算法实时性;应用定点化技术在FPGA实现收敛域扩张方法,其求解方法巧妙,只需使用两个乘法器,避免除法器的使用;采用15级流水线结构,用FPGA实现双曲系统CORDIC算法来求解指数函数,运算结果相对误差达到了10-4,满足实际工程精度要求。本指数CORDIC算法在超声相控TCG(TimeComplement Gain)应用具有有重要的实际意义。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1是应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法流程图;
图2是双曲函数坐标旋转模型;
图3是整数Q和小数θ定点化值求解原理框架图;
图4是双曲系统CORDIC算法求解指数函数流水线结构图;
图5是FPGA实现双曲系统CORDIC算法指数函数部分流水线电路图;
图6是CORDIC算法指数函数在Modelsim的仿真图。
具体实施方式
容易理解,根据本发明的技术方案,在不变更本发明的实质精神下,本领域的一般技术人员可以提出本发明的多个结构方式和制作方法。因此以下具体实施方式以及附图仅是本发明的技术方案的具体说明,而不应当视为本发明的全部或者视为本发明技术方案的限定或限制。
下面结合实施例及附图对本发明作进一步详细的描述。
图1是应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法流程图,该方法包括:
步骤10由双曲系统CORDIC算法推导指数函数CORDIC算法,实现步骤如下:
图2为双曲函数坐标旋转模型图,图中θ为射线OVn、双曲线和x轴围成面积的2倍,为射线OV1、双曲线和x轴围成面积的2倍,分别对应阴影部分面积的2倍,双曲线x2-y2=C上点V1(x1,y1)沿着上半轴曲线移动到点Vn(xn,yn),可表示为:
矩阵形式表示为
将θ分解成一系列基本角度(实际上是面积)之和,为简化计算,令微旋转角度满足条件θi=di·tanh-12-i,di为旋转方向,由每次迭代之后剩下角度的极性决定,则式(2)可转化为式(3)。
其中,K为校模因子
当C=0时,双曲线x2-y2=C最终退化为直线x=±y,若暂不考虑K,则迭代递推关系为:
由于式(5)只用到加法、乘法非常适合FPGA实现。
为满足迭代序列收敛,迭代序列i的取值从第4项开始,每个3k+1(k∈Z+)项必须重复一次,即i=1,2,3,4,4,5,…,13,13,…
经过n次旋转后,有
若取初值x1=y1=1/K,zin=θ,则有:
xn+1=yn+1=coshzin+sinhzin=eθ (7)
步骤20采用区间压缩方法实现指数函数CORDIC算法的收敛域扩张,实现方法如下:
为了保证迭代序列收敛,双曲系统的CORDIC算法的收敛范围为
由于zin的范围较小,实际应用意义不大。为扩大指数函数收敛域(输入值范围),必须对输入值zin作预处理。
令zin=Qln2+θ,其中Q∈Z,|θ|<ln2=0.6931,使θ处于算法收敛域内,由此可得:
若整数Q能确定,则2Q可通过左移或右移|Q|位实现,可把的计算等效转化为eθ的计算,通过区间压缩方法实现指数函数CORDIC算法的收敛域扩张。
步骤30应用定点化技术在FPGA实现指数函数CORDIC算法收敛域扩张,实现步骤如下:
(1)整数Q值和小数θ值定点化值的求解
令
Q=[zin/ln2]
R=zin%ln2
θ=R/ln2
其中Q表示zin与ln2相除得到商的整数部分,R表示zin与ln2相除得到的余数部分,θ表示R与ln2相除得到的商。
则有
通常FPGA实现定点数运算,故在FPGA求解Q、θ过程中,必须对式(10)进行定点化,即乘以2n放大,再对结果右移n位实现除法恢复到原始值。
本算法扩大65536(216)倍实现定点化,把除法运算转换成乘法运算,实现定点化运算,有利于硬件实现,这时有:
(其中ln2=0.6931) (11)
由于可以分解为整数Q和小数θ两部分,故式(11)可转化为:
图3为整数Q和小数θ定点化值求解原理框架图。
①定点化求解整数Q值
假设输入值zin∈[-27,27),对zin定点化后(扩大216倍)取整,用[zin·216]表示,其位宽为24bit;对定点化后(扩大216倍)取整,用[zin·216·216/ln2]表示,其位宽为42bit。表1为对应的二进制数位宽表,用H10表示bit[41:32]共10bit,为整数部分,用L32表示bit[31:0]共32bit,为小数部分,则H10即为Q整数部分。
表1
[zin·216·216/ln2]对应二进制数位宽表
②求解小数θ定点化值
根据式(12)与表1可以得出定点化小数部分为其中L16表示L32的高16位bit[31:16],则216·θ=ln2·L16。由于ln2为浮点数,必须进行定点化(扩大216倍),得216·216·θ=ln2·216·L16≈45426·L16,[45426·L16]位宽为32bit。表2为对应的二进制数位宽表,用H17表示bit[32:16]共17bit,右移16位可得216·θ=H17,即H17为θ小数部分的定点化值。
表2
[45426·L16]对应二进制数位宽表
在FPGA实现上只需两个乘法器,即可实现整数Q和小数θ定点化值求解,实现定点化区间压缩,达到收敛域扩张的效果。
(2)采用流水线结构在FPGA定点化实现
图4为双曲系统CORDIC算法求解指数函数流水线结构图,图5为FPGA实现双曲系统CORDIC算法指数函数部分流水线电路图。由于坐标xn、yn的初值与迭代模式相同,可以合成一个迭代通道,省掉坐标yn的迭代过程,这时式(5)可以转化为式(13),只需用到两条数据链,即对角度zi与坐标xi进行迭代,这种方式在硬件实现上可以节省约1/3硬件资源,大大提高了FPGA处理算法的实时性。
图6为CORDIC算法指数函数在Modelsim的仿真图。采用15级流水线CORDIC算法结构,输入定点化参数[zin·216],其中zin∈[-8,8]。图中斜线为输入zin值,曲线为对应的指数函数值输出,垂直的线为光标线,此时光标位置对应的输入值1,输出值为e1≈2.71823,与理论值2.71828相比,相对误差为
表3列出了收敛域zin∈[-8,8]部分输入值的运算结果,可以看出,当输入值zin<0时,其绝对误差很小,达到10-4,当输入值zin>0时,其相对误差很小,达到10-4。
表3
收敛域zin∈[-8,8]部分输入值的FPGA运算结果
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (5)
1.一种应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法,该方法包括如下步骤:
A由双曲系统CORDIC算法推导收敛域内指数函数CORDIC算法;
B采用区间压缩方法实现指数函数CORDIC算法的收敛域扩张;
C应用定点化技术在FPGA实现指数函数CORDIC算法收敛域扩张;该步骤C具体包括:
应用FPGA定点化技术,对输入值zin=Qln2+θ进行定点化,扩大216倍实现定点化,再通过右移实现除法,恢复到原始值;
分析FPGA定点数的运算模式,获得Q、θ的定点化值;
FPGA实现上,通过采用二个乘法器和移位操作实现整数部分Q和小数部分θ定点化值的求解,实现收敛域扩张的指数函数CORDIC算法。
2.根据权利要求1所述的应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法,其特征在于,所述步骤A具体包括:
在双曲系统旋转模式下,根据单位向量V1移动到Vn的关系式得到CORDIC公式,把计算转化为旋转方向的移位和加法运算;
让迭代序列i在3k+1项处重复一次迭代k∈Z+,以保证算法收敛;
根据中间角度变量zi确定旋转方向di,在一定初始条件下可获得指数函数的CORDIC算法;所述单位向量V1和Vn的坐标分别为x1,y1和xn,yn。
3.根据权利要求1所述的应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法,其特征在于,所述步骤B具体包括:
应用区间压缩方法,对收敛域内输入值zin作区间压缩变换,令zin=Qln2+θ,Q∈Z,使|θ|<ln2,保证θ处于收敛区间内;
对指数函数进行数学处理,由把的计算等效转化为eθ的计算,把运算问题转化为求解整数Q和小数θ,通过区间压缩方法实现指数函数收敛域的扩张。
4.根据权利要求1所述的应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法,其特征在于,应用FPGA定点化技术求解整数Q和小数θ的步骤具体包括:
定点化求解整数Q值,通过对输入值zin定点化后取整,用[zin·216]表示,其位宽为24bit;对定点化后取整,用[zin·216·216/ln2]表示,其位宽为42bit,用H10表示bit[41:32],共10bit,为整数部分,用L32表示bit[31:0],共32bit,为小数部分,则H10即为整数部分Q;所述输入值zin定点化是对输入值zin扩大216倍;所述定点化是对扩大216倍;
求解θ定点化值,定点化小数部分为其中L16表示L32的高16位bit[31:16],即216·θ=ln2·L16,定点化即扩大216倍后为216·216·θ=ln2·216·L16≈45426·L16,[45426·L16]位宽为32bit;用H17表示bit[32:16]共17bit,右移16位可得216·θ=H17,即H17为θ小数部分的定点化值。
5.根据权利要求1所述的应用FPGA定点化技术实现指数CORDIC算法收敛域扩张的方法,其特征在于,FPGA实现上采用二条数据链实现指数函数CORDIC的步骤具体包括:
坐标xn、yn的初值与迭代模式相同,合成一个迭代通道,省掉坐标yn的迭代过程,用两条数据链,即对角度zi与坐标xi进行迭代,可节省约1/3硬件资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410344474.8A CN104102471B (zh) | 2014-07-18 | 2014-07-18 | 一种应用fpga定点化技术实现指数cordic算法收敛域扩张的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410344474.8A CN104102471B (zh) | 2014-07-18 | 2014-07-18 | 一种应用fpga定点化技术实现指数cordic算法收敛域扩张的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102471A CN104102471A (zh) | 2014-10-15 |
CN104102471B true CN104102471B (zh) | 2017-03-22 |
Family
ID=51670653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410344474.8A Expired - Fee Related CN104102471B (zh) | 2014-07-18 | 2014-07-18 | 一种应用fpga定点化技术实现指数cordic算法收敛域扩张的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102471B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6492739B2 (ja) * | 2015-02-20 | 2019-04-03 | セイコーエプソン株式会社 | 回路装置、物理量検出装置、電子機器及び移動体 |
CN108416311B (zh) * | 2018-03-14 | 2022-04-19 | 电子科技大学 | 一种基于可编程门阵列和坐标旋转处理的方位角获取方法 |
CN110187866B (zh) * | 2019-06-03 | 2021-06-25 | 南京宁麒智能计算芯片研究院有限公司 | 一种基于双曲cordic的对数乘法计算系统及方法 |
CN114780912A (zh) * | 2022-04-06 | 2022-07-22 | Oppo广东移动通信有限公司 | 数据处理设备和方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626220A (zh) * | 2009-08-03 | 2010-01-13 | 浙江大学 | 一种基于cordic算法的数字锁相放大器 |
US8572151B2 (en) * | 2010-03-15 | 2013-10-29 | Integrated Device Technology, Inc. | Methods and apparatuses for cordic processing |
CN103713878A (zh) * | 2014-01-10 | 2014-04-09 | 华南理工大学 | 一种应用补码方法的正余弦cordic算法在fpga实现的方法 |
-
2014
- 2014-07-18 CN CN201410344474.8A patent/CN104102471B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626220A (zh) * | 2009-08-03 | 2010-01-13 | 浙江大学 | 一种基于cordic算法的数字锁相放大器 |
US8572151B2 (en) * | 2010-03-15 | 2013-10-29 | Integrated Device Technology, Inc. | Methods and apparatuses for cordic processing |
CN103713878A (zh) * | 2014-01-10 | 2014-04-09 | 华南理工大学 | 一种应用补码方法的正余弦cordic算法在fpga实现的方法 |
Non-Patent Citations (2)
Title |
---|
一种面向FPGA的指/对数函数求值算法;牟胜梅等;《计算机工程与应用》;20111121;第47卷(第33期);第59-61页 * |
基于改进SF-CORDIC的指数和对数函数求值算法;黄晓可等;《计算机应用与软件》;20140215;第31卷(第2期);第279-282页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104102471A (zh) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102471B (zh) | 一种应用fpga定点化技术实现指数cordic算法收敛域扩张的方法 | |
CN109739470B (zh) | 一种基于2型双曲cordic任意指数函数的计算系统 | |
CN102073472B (zh) | 一种三角函数cordic迭代运算协处理器及运算处理方法 | |
Kumar | FPGA implementation of the trigonometric functions using the CORDIC algorithm | |
Khader et al. | Two computational algorithms for the numerical solution for system of fractional differential equations | |
CN103677738A (zh) | 基于混合模式cordic算法的低延时基本超越函数实现方法及装置 | |
Yang et al. | Convergence analysis of Legendre-collocation methods for nonlinear Volterra type integro equations | |
CN112486455A (zh) | 一种基于cordic方法求复数的n次开根号的硬件计算系统及其计算方法 | |
Kang et al. | Accelerated Bregman Method for Linearly Constrained–Minimization | |
AnanthaLakshmi et al. | A novel power efficient 0.64-GFlops fused 32-bit reversible floating point arithmetic unit architecture for digital signal processing applications | |
Boudabous et al. | Implementation of hyperbolic functions using CORDIC algorithm | |
Aggarwal et al. | Reconfigurable CORDIC architectures for multi-mode and multi-trajectory operations | |
CN106814990A (zh) | Cordic算法的优化方法 | |
Lamnii et al. | Sextic spline solution of fifth-order boundary value problems | |
CN103809931A (zh) | 一种专用高速浮点指数运算器的设计 | |
Babolian et al. | He’s homotopy perturbation method: an effective tool for solving a nonlinear system of two-dimensional Volterra–Fredholm integral equations | |
CN102566963A (zh) | 一种fpga进行数据处理的方法 | |
Prasad et al. | FPGA implementation of pipelined CORDIC based quadrature direct digital synthesizer with improved SFDR | |
Du et al. | Volume inequalities for Orlicz mean bodies | |
Zhihua et al. | The design of NCO based on CORDIC algorithm and implementation in FPGA (∗) | |
Dong et al. | Implementation of single-precision floating-point trigonometric functions with small area | |
Srinivasa Murthy et al. | FPGA Implementation of Sine and cosine Generators using CORDIC Algorithm | |
Kir et al. | FPGA based implementation of CORDIC using different number format | |
Saha et al. | High speed multiplier using high accuracy floating point logarithmic number system | |
Poghosyan | Fourier formulae for equidistant Hermite trigonometric interpolation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170322 Termination date: 20170718 |