CN111078187B - 一种针对单精度浮点数的任意次方根求解方法及其求解器 - Google Patents
一种针对单精度浮点数的任意次方根求解方法及其求解器 Download PDFInfo
- Publication number
- CN111078187B CN111078187B CN201911194267.8A CN201911194267A CN111078187B CN 111078187 B CN111078187 B CN 111078187B CN 201911194267 A CN201911194267 A CN 201911194267A CN 111078187 B CN111078187 B CN 111078187B
- Authority
- CN
- China
- Prior art keywords
- value
- precision floating
- calculation
- point number
- floating point
- 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.)
- Active
Links
Images
Classifications
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种针对单精度浮点数的任意次方根求解方法及其求解器。求解器包括:除法计算模块,用于对输入的次方根值N进行除法操作;反正切值计算模块,用于将输入的单精度浮点数的尾数部分M进行求反正切值的操作并得到对数值log2M;计算模块,用于对单精度浮点数的指数部分E、次方根值N的倒数1/N以及对数值log2M进行乘法和加法操作;正弦和余弦计算模块,用于对计算模块得到的计算结果求以2为底双曲正弦和余弦值;计算结果整合模块,将求得的双曲正弦和双曲余弦值求和,并与指数部分E的中间计算结果进行整合,得到单精度浮点数格式的最终计算结果。本发明的求解器可以计算任意单精度浮点数的任意次方根值,具有一定通用性。
Description
技术领域
本发明涉及一种针对单精度浮点数的任意次方根求解方法,属于数字信号处理技术领域。
背景技术
在如今的微处理器计算中,使用最多的莫过于乘法器和加法器。所以相关的研究也喷涌而出,无论是从算法方面的改进,还是从硬件计算架构方面的改进,都有很多学者做出了贡献,相关的学术成果也是层出不穷。但任意次方根的计算,却鲜有优化方案。
虽然任意次方根的计算不如乘法和加法操作在微处理器计算中那么普遍,但它也有广泛的应用场景。以二次方根计算为例,像频谱分析、音频信号处理、数字通讯和三维图像技术中都有着很重要的运用。因此,有些学者在一些固定次方根(二次方根、三次方根)的电路设计方面做出了努力。但固定次方根电路的运用有着局限性,不能通用计算任意次方根。
高次方根的运算在一些特定领域也有着十分重要的作用。比如说计算机图形、大气模型等领域。所以一种能够计算任意次方根的电路就十分必要,既能支持普遍运用的二次方根和立方根计算,也能支持任意高次方根的计算。目前比较常用的实现任意次方根的方法有牛顿迭代法、数字递归法和坐标旋转数字计算方法(CORDIC)等。牛顿迭代法和数字递归法需要用到大量的乘法器和加法器,且在计算高次方根时,计算资源会急剧增加,不利于硬件实现。基于CORDIC的方法目前只能实现定点数的任意次方根计算,具有一定的局限性。广义双曲CORDIC将传统的以自然常数e为底的双曲CORDIC拓展到可以以任意数为底,极大拓展了CORDIC算法的应用范围。
发明内容
为了能够获得较快的运算速度和使用较少的电路资源,本发明基于广义CORDIC算法,提出一种可以实现单精度浮点数的任意次方根求解方法及其求解器。
本发明方法采用的技术方案如下:
一种针对单精度浮点数的任意次方根求解方法,具体步骤包括:
(1)对于待求解的大于等于0的单精度浮点数R,将其分为指数位E和尾数位M;
(2)利用工作在向量模式的广义双曲坐标下的CORDIC算法求解尾数部分M以2为底的对数值log2M;
(3)利用工作在向量模式的线性坐标下的CORDIC算法对任意N次方根进行除法操作,得到1/N的值;
(4)将步骤(3)计算得到的1/N的值和指数位E-127的值用乘法器进行乘法操作,并将乘法结果分为整数部分EI和小数部分EF;
(5)将步骤(2)计算得到的log2M和步骤(3)计算得到的1/N的值用乘法器进行乘法操作,得到log2M/N;
(6)将步骤(4)计算得到的小数部分EF和步骤(5)计算得到的log2M/N相加,得到log2M/N+EF;
进一步地,步骤(2)中,将CORDIC算法的x初始值设置为M+1,y初始值设为M-1,z初始值设为0,经过若干次迭代后得到计算结果乘以2之后得到log2M。
进一步地,步骤(3)中,将CORDIC算法的x初始值设置为N,y初始值设为1,z初始值设为0,经过若干次迭代后得到计算结果1/N。
进一步地,步骤(8)中,整合后判断数值大小,若其数值在[1,2)之间,则最终得到的单精度浮点数计算结果的指数部分为EI+127,尾数部分为若其数值在[2,2.8284)之间,则最终得到的单精度浮点数计算结果的指数部分为EI+128,尾数部分为
本发明一种针对单精度浮点数的任意次方根求解器,包括以下几个模块:
除法计算模块,用于对输入的次方根值N进行除法操作,得到1/N;
反正切值计算模块,用于将输入的单精度浮点数的尾数部分M进行求反正切值的操作,并将计算结果左移一位得到以2为底的对数值log2M;
计算模块,用于对单精度浮点数的指数部分E、次方根值N的倒数1/N以及单精度浮点数尾数部分M的以2为底的对数值log2M进行乘法和加法操作;
正弦和余弦计算模块,用于对计算模块得到的计算结果求以2为底双曲正弦和余弦值;
计算结果整合模块,用于将正弦和余弦计算模块求得的以2为底双曲正弦和余弦值求和,并与单精度浮点数的指数部分E的中间计算结果进行整合,得到单精度浮点数格式的最终计算结果。
本发明具有以下有益效果:
(1)本发明提出的一种针对单精度浮点数的任意次方根求解方法,可以对任意浮点数求任意次方根,具有一定的通用性,极大地拓展了应用范围。
(2)通过全流水的硬件架构设计单精度浮点数的任意次方根求解器,具有延迟低、计算速度快的特点。
(3)充分利用CORDIC算法只需要进行加法和移位操作的特点,提出的单精度浮点数任意次方根求解器具有关键路径短、计算主频高的特点。
(4)所实现的任意次方根求解方法计算误差低。
附图说明
图1是针对单精度浮点数的任意次方根求解器的整体架构图。
图2是单精度浮点数格式示意图。
图3是广义双曲CORDIC的正弦、余弦计算模块流水框图。
图4是在FPGA平台下利用本发明求解器加速机器人控制应用的示意图。
具体实施方式
下面结合附图对本发明方案进行详细说明,针对单精度浮点数的任意次方根求解器的整体架构图如图1所示。
首先对于一个单精度浮点数,其表示形式如图2所示,分为符号位、指数位和尾数位。对于一个单精度浮点数,如果其符号位为S,指数位为E,尾数位为M,则其表示的数字的值为:
R=(-1)s*M*2E-127 (1)
考虑到任意次方根针对正数才有意义,所以所求的单精度浮点数的符号位S为0,假设求任意次方根N,则有以下公式:
那么根据(2)和(3),可以得到以下公式:
对于单精度浮点数来说,下面需要求解开N次方之后的计算结果的尾数部分和指数部分。从公式(4)可以看出,计算结果的指数部分可以由Ef计算得到,而计算结果的尾数部分则由计算得到,下面通过广义双曲CORDIC计算尾数部分的值:
工作在向量模式的广义双曲坐标下的CORDIC算法迭代表达式如下所示
将迭代公式中的x0值设为单精度浮点数的尾数部分M+1,y0值设为单精度浮点数的尾数部分M-1,z0值设为0。则经过若干次迭代之后,将输出的结果zi值左移1位,即可得到以2为底的对数值log2M。
此时,公式(5)可以表示为:
在利用广义双曲CORDIC计算的同时,对于任意次方根N,利用工作在向量模式的线性坐标下的CORDIC算法:
将迭代公式中的x0值设为次方根值N,y0值设为1,z0值设为0。则经过若干次迭代之后,输出的结果zi值为1/N。
根据定义,求解单精度浮点数的任意次方根N,N大于等于2,M为单精度浮点数的尾数位,其值在[1,2)之间,并且EF为小数,所以EF的值在[0,1)之间,此时可以计算出Mroot的取值范围:
若Mroot的值在[1,2)之间,则最终得到的单精度浮点数计算结果的指数部分为EI+127,尾数部分为Mroot;若Mroot的值在[2,2.8284)之间,则最终得到的单精度浮点数计算结果的指数部分为EI+128,尾数部分为Mroot/2,即有:
且
最后,将Eresult和Mresult再整合成标准单精度浮点数格式,即完成了整个计算过程。
实施例
(1)本实施例将广义双曲CORDIC的反正切值计算模块(GHVCORDIC)和基于广义双曲CORDIC的正弦、余弦计算模块(GHRCORDIC)中广义双曲CORDIC算法的迭代次数设为24。同时为了匹配流水线,基于CORDIC的除法计算模块(LVCORDIC)中的CORDIC算法迭代次数也设为24。基于上述设置设计实施例的硬件电路,以广义双曲CORDIC的正弦、余弦计算模块为例,其流水硬件架构如图3所示。对于设计好的硬件电路,进行计算精度和硬件资源消耗等分析。
根据上述设置的计算迭代情况设置各个计算模块的数据位宽,如下表所示:
表1:CORDIC算法位宽设置
CORDIC | 符号位 | 整数位 | 小数位 | 总位宽 |
GHV | 1 | 2 | 27 | 30 |
LV | 1 | 8 | 27 | 36 |
GHR | 1 | 2 | 27 | 30 |
乘法器 | 0 | 1 | 27 | 28 |
在Synopsys的DesignCompiler(DC)下综合本发明的硬件设计,使用的工艺节点为台积电的40nm工艺,本实施例的硬件性能如下表所示:
表2:硬件性能表
本实施例可在台积电40nm工艺下达到2.38GHZ的最高主频。并且本设计使用了全流水的设计架构,2.38GHZ下数据吞吐率可以达到2.38Gflops(flops:floating-pointoperations per second,每秒浮点运算次数),具有吞吐率高的特点。
下面使用Matlab生成随机激励数据测试本实施例的计算精度,对于每个输入范围生成100000个随机数进行测试,测试结果如下表所示:
表3:计算精度表
从表3中可以看出,本实施例的平均计算误差在10-7数量级,最大计算误差也在10-6数量级。具有计算精度高的特点。
(2)本实施例以机器人控制系统为例,说明本发明提供的求解器如何运用在实际应用中。在机器人控制系统中,需要实时计算手臂等部件的位置信息来确定下一步执行的相应指令。计算位置信息时涉及大量的平方根计算,且对计算精度要求和计算范围要求很高,采用传统的CPU运算对算力要求较高,且延时较长,不能满足实时性要求。以附图4为例,在基于FPGA的机器人控制系统中,可以嵌入本发明提出的针对单精度浮点数的任意次方根求解器,对于平方根进行求解时,将求解器的输入N值设为2,可以实时计算出平方根结果,并且可以灵活切换,支持任意次方根计算的需求。
(3)本实施例以科学计算为例,说明本发明提供的求解器如何运用在实际应用中。在科学计算中,如天体力学、流体力学和大气模型等公式计算中,经常需要用到任意次方根计算尤其是高次方根计算。一般调用Matlab等平台的自带求解器进行计算,在实际跑大量计算任务时会耗时较长。可以在Matlab等平台上根据本发明提供的方法设计对应平台下的求解器,在运行中调用该求解器,以较快的速度完成任意次方根计算,将计算结果输出。
Claims (8)
1.一种针对单精度浮点数的任意次方根求解方法,其特征在于,具体步骤包括:
(1)对于待求解的大于等于0的单精度浮点数R,将其分为指数位E和尾数位M;
(2)利用工作在向量模式的广义双曲坐标下的CORDIC算法求解尾数部分M以2为底的对数值log2M;
(3)利用工作在向量模式的线性坐标下的CORDIC算法对输入的次方根值N进行除法操作,得到1/N的值;
(4)将步骤(3)计算得到的1/N的值和指数位E减去单精度浮点数的偏移值127后的值用乘法器进行乘法操作,并将乘法结果分为整数部分EI和小数部分EF;
(5)将步骤(2)计算得到的log2M和步骤(3)计算得到的1/N的值用乘法器进行乘法操作,得到log2M/N;
(6)将步骤(4)计算得到的小数部分EF和步骤(5)计算得到的log2M/N相加,得到log2M/N+EF;
2.根据权利要求1所述的一种针对单精度浮点数的任意次方根求解方法,其特征在于,步骤(2)中,将CORDIC算法的x初始值设置为M+1,y初始值设为M-1,z初始值设为0,经过若干次迭代后得到计算结果乘以2之后得到log2M。
3.根据权利要求1所述的一种针对单精度浮点数的任意次方根求解方法,其特征在于,步骤(3)中,将CORDIC算法的x初始值设置为N,y初始值设为1,z初始值设为0,经过若干次迭代后得到计算结果1/N。
6.一种针对单精度浮点数的任意次方根求解器,其特征在于,包括以下几个模块:
除法计算模块,用于对输入的次方根值N进行除法操作,得到1/N;
反正切值计算模块,用于将输入的单精度浮点数的尾数部分M进行求反正切值的操作,并将计算结果左移一位得到以2为底的对数值log2M;
计算模块,用于对单精度浮点数的指数部分E、次方根值N的倒数1/N以及单精度浮点数尾数部分M的以2为底的对数值log2M进行乘法和加法操作;
正弦和余弦计算模块,用于对计算模块得到的计算结果求以2为底双曲正弦和余弦值;
计算结果整合模块,用于将正弦和余弦计算模块求得的以2为底双曲正弦和余弦值求和,并与单精度浮点数的指数部分E的中间计算结果进行整合,得到单精度浮点数格式的最终计算结果。
7.权利要求6所述的一种针对单精度浮点数的任意次方根求解器,其特征在于,所述计算模块包括两个乘法器和一个加法器。
8.权利要求6所述的一种针对单精度浮点数的任意次方根求解器,其特征在于,所述除法计算模块、反正切值计算模块以及正弦和余弦计算模块均利用CORDIC算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911194267.8A CN111078187B (zh) | 2019-11-28 | 2019-11-28 | 一种针对单精度浮点数的任意次方根求解方法及其求解器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911194267.8A CN111078187B (zh) | 2019-11-28 | 2019-11-28 | 一种针对单精度浮点数的任意次方根求解方法及其求解器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078187A CN111078187A (zh) | 2020-04-28 |
CN111078187B true CN111078187B (zh) | 2021-05-28 |
Family
ID=70312552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911194267.8A Active CN111078187B (zh) | 2019-11-28 | 2019-11-28 | 一种针对单精度浮点数的任意次方根求解方法及其求解器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078187B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813372B (zh) * | 2020-07-10 | 2021-05-18 | 上海擎昆信息科技有限公司 | 一种高精度低时延实现32位整数除法的方法及装置 |
CN111984226B (zh) * | 2020-08-26 | 2024-02-09 | 南京大学 | 一种基于双曲cordic的立方根求解装置及求解方法 |
CN112035796B (zh) * | 2020-09-04 | 2023-05-16 | 金陵科技学院 | 面向集成电路的超低延时的整数次幂计算电路的优化方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253924A (zh) * | 2011-07-29 | 2011-11-23 | 电子科技大学 | 开方运算的硬件实现方法以及开方运算器 |
CN108196822A (zh) * | 2017-12-24 | 2018-06-22 | 北京卫星信息工程研究所 | 一种双精度浮点开方运算的方法及系统 |
CN109062540A (zh) * | 2018-06-06 | 2018-12-21 | 北京理工大学 | 一种基于cordic算法的可重构浮点运算装置 |
-
2019
- 2019-11-28 CN CN201911194267.8A patent/CN111078187B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253924A (zh) * | 2011-07-29 | 2011-11-23 | 电子科技大学 | 开方运算的硬件实现方法以及开方运算器 |
CN108196822A (zh) * | 2017-12-24 | 2018-06-22 | 北京卫星信息工程研究所 | 一种双精度浮点开方运算的方法及系统 |
CN109062540A (zh) * | 2018-06-06 | 2018-12-21 | 北京理工大学 | 一种基于cordic算法的可重构浮点运算装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111078187A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078187B (zh) | 一种针对单精度浮点数的任意次方根求解方法及其求解器 | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
JPH11288411A (ja) | 基本関数の高精度推定 | |
CN111984227B (zh) | 一种针对复数平方根的近似计算装置及方法 | |
Ramachandran et al. | Performance analysis of mantissa multiplier and Dadda tree multiplier and implementing with DSP architecture | |
Sunesh et al. | Design and implementation of fast floating point multiplier unit | |
CN111443893A (zh) | 一种基于cordic算法的n次根计算装置及方法 | |
Wang et al. | GH CORDIC-Based Architecture for Computing $ N $ th Root of Single-Precision Floating-Point Number | |
CN110187866B (zh) | 一种基于双曲cordic的对数乘法计算系统及方法 | |
Lyu et al. | Ultralow-latency VLSI architecture based on a linear approximation method for computing Nth roots of floating-point numbers | |
CN111984226B (zh) | 一种基于双曲cordic的立方根求解装置及求解方法 | |
Pang et al. | VHDL Modeling of Booth Radix-4 Floating Point Multiplier for VLSI Designer’s Library | |
Lee et al. | AIR: Iterative refinement acceleration using arbitrary dynamic precision | |
Jeong et al. | A cost-effective pipelined divider with a small lookup table | |
CN110222305A (zh) | 一种基于双曲cordic的对数函数计算系统及方法 | |
Muller et al. | Semi-logarithmic number systems | |
CN113778379A (zh) | 一种基于cordic的低复杂度硬件系统和应用方法 | |
CN113778378A (zh) | 一种求解复数n次方根的装置和方法 | |
US7644116B2 (en) | Digital implementation of fractional exponentiation | |
Joseph et al. | Design of Efficient Pruning Architecture for FFT Algorithm | |
Akhil et al. | Delay and Area analysis of hardware implementation of FFT using FPGA | |
Krishnan | A comparative study on the performance of FPGA implementations of high-speed single-precision binary floating-point multipliers | |
Yousif et al. | FPGA Implementation of Polynomial Curve Fitting Approximation for Sine and Cosine Generator | |
Yun et al. | A latency-effective pipelined divider for double-precision floating-point numbers |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |