CN113138749B - 基于cordic算法的三角函数计算装置及方法 - Google Patents
基于cordic算法的三角函数计算装置及方法 Download PDFInfo
- Publication number
- CN113138749B CN113138749B CN202110398378.1A CN202110398378A CN113138749B CN 113138749 B CN113138749 B CN 113138749B CN 202110398378 A CN202110398378 A CN 202110398378A CN 113138749 B CN113138749 B CN 113138749B
- Authority
- CN
- China
- Prior art keywords
- iteration
- module
- angle
- trigonometric function
- formula
- 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
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/544—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 for evaluating functions by calculation
- G06F7/548—Trigonometric functions; Co-ordinate transformations
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
公开了基于CORDIC算法的三角函数计算装置及方法。装置包括:特殊角度判别模块,配置来判断输入角度是否为0、±π/6、±π/4、±π/3、±π/2、±2π/3、±3π/4、±5π/6、±π,如果是则不进行迭代,输出存储在存储模块中的三角函数值;象限映射模块,配置来对输入的角度值进行判断,并将其转换到[‑π/2,π/2];单步迭代模块,包含N/2级流水线,配置来在迭代控制模块的控制下进行初始的迭代运算;双步迭代模块,配置来在单步迭代模块之后,包含N/4级流水线,在迭代控制模块下进行双步迭代运算;迭代控制模块,配置来判断单步迭代模块和双步迭代模块是否完成迭代,并控制完成全部迭代;存储模块,配置来存储特殊角度判别模块中的特殊角度三角函数值和迭代运算过程中所需要的常数。
Description
技术领域
本发明涉及集成电路的技术领域,尤其涉及一种基于CORDIC算法的三角函数计算装置,还涉及一种基于CORDIC算法的三角函数计算方法。
背景技术
CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,由Jack E.Volder等人于1959年提出。该算法的基本思想是通过一系列固定的、与运算基数有关的角度的不断偏摆以逼近所需的旋转角度。CORDIC算法有两种模式:旋转模式、向量模式。这两种模式可以应用于圆周坐标系、线性坐标系、双曲坐标系。通过模式和坐标系的选择,则可以用于三角函数、反三角函数、双曲函数、反双曲函数、平方根等运算。该算法通过迭代的方式,将原来的乘法操作转化为加法、减法、移位器操作,可以有效减少计算资源的消耗。CORDIC算法有两种迭代结构:并行迭代、串行迭代。并行迭代是通过增加流水线的模式,减少了运算的延时。串行迭代则只有一个迭代模块,通过反馈的形式减少了面积的损耗。
三角函数作为一种常见的初等函数,被广泛应用于各个领域,如滤波技术、航海测绘、图像处理等。在实际工程应用中,常常需要对三角函数进行硬件实现,但具有一定的难度。目前,三角函数的求值方法主要有四种:查表法、多项式逼近法、泰勒展开式法、CORDIC算法。其中,查表法占用的存储资源大,而多项式逼近法与泰勒展开式法,会消耗大量的乘法器,效率低、速度慢。采用CORDIC算法计算三角函数,使用的是圆周旋转模式,具有一定的优点:占用少量查找表,利用加法、移位迭代避免使用乘法器造成资源浪费。但是,三角函数运算误差与迭代次数有直接关系。当迭代次数较少时,计算精度会大大下降,而迭代次数增加时,运算速度会下降,并且需要更多的硬件资源。传统的CORDIC算法采用单步迭代的方式,N位输入则需要N次迭代来保证精度。采用串行迭代方式来实现CORDIC算法,需要的延时大。而并行方式实现CORDIC算法,面积消耗大。而且CORDIC算法一般用于浮点型运算,相比于定点型运算,资源消耗更大。
针对上述CORDIC存在的问题,目前采用CORDIC计算三角函数的硬件电路的优化方式有:
1.采用无缩放因子双步迭代的CORDIC算法,减少迭代次数,降低缩放因子补偿操作所带来的计算精度下降代价。
2.采用串并结合的结构,在面积与性能之间做权衡。
3.将浮点型的输入角度转化为定点型的输入角度,用定点加法器代替浮点加法器。
但这些方法存在收敛范围太小,损失的精度大,电路延时不能有效减小等问题。而对于一些特殊角度,已知其正余弦值,经过迭代后其输出结果反而不准确。因此,如何在增加计算精度、保证运算速度的前提下,降低硬件开销进行三角函数的运算,是目前亟需解决的问题。
发明内容
为克服现有技术的缺陷,本发明要解决的技术问题是提供了一种基于CORDIC算法的三角函数计算装置,其结构简单,资源消耗少,提高了计算结果的精度,同时减少了迭代次数,提高运算速度,避免了不必要的角度旋转,对电路结构和输入角度格式进行设置。
本发明的技术方案是:这种基于CORDIC算法的三角函数计算装置,其包括:特殊角度判别模块、象限映射模块、单步迭代模块、双步迭代模块、迭代控制模块和存储模块;
特殊角度判别模块,其配置来判断输入角度是否为0、±π/6、±π/4、±π/3、±π/2、±2π/3、±3π/4、±5π/6、±π,如果是,则不进行迭代,直接输出存储在存储模块中的三角函数值;
象限映射模块,其配置来对输入的角度值进行判断,并将其转换到[-π/2,π/2];
单步迭代模块,包含N/2级流水线,其配置来在迭代控制模块的控制下进行初始的迭代运算;
双步迭代模块,其配置来在单步迭代模块之后,包含N/4级流水线,在迭代控制模块下进行双步迭代运算;
迭代控制模块,其配置来判断单步迭代模块和双步迭代模块是否完成迭代,并控制完成全部迭代;该模块包括:(1)剩余角判断单元,该单元在每次迭代完成后,判断剩余角度是否为0,若为0,则直接输出迭代结果;(2)角度选择单元,该单元在完成所有迭代次数小于N/3的单步迭代模块之后,选择进行后续单双步迭代的角度;(3)随机进位单元,该单元在每次迭代完成后,产生1位额外的操作数,与剩余角度进行相加,用于修正截断带来的精度损失;
存储模块,其配置来存储特殊角度判别模块中的特殊角度三角函数值和迭代运算过程中所需要的常数。
本发明采用定点数据进行CORDIC算法的实现,用定点加法器代替浮点加法器,结构简单,资源消耗少,同时还通过移位,进一步减少了部分的查找表资源消耗;在迭代过程中,加入随机进位单元,减小了由截断带来的计算误差,进一步提高了计算结果的精度;采用单双步迭代相结合的迭代模式,在保证精度的同时,减少了迭代次数,提高运算速度;采用了角度选择模块,对剩余的角度,按最高位为1的位进行旋转角度选取,避免了不必要的角度旋转;通过设置参数和常数值,对电路结构和输入角度格式进行设置。
还提供了一种基于CORDIC算法的三角函数计算方法,其包括以下步骤:
(1)对输入的角度值进行判断,并将其转换到[-π/2,π/2];
(2)判断输入角度是否为0、±π/6、±π/4、±π/3、±π/2、±2π/3、±3π/4、±5π/6、±π,如果是,则跳转步骤(11),直接输出存储在存储模块中的三角函数值,否则执行步骤(3);
(3)剩余角度输入;
(4)判断是否为0,若是则跳转步骤(11),直接输出结果,否则执行步骤(5);
(5)随机进位;
(6)判断迭代次数是否大于N/3,是则执行步骤(7),否则执行步骤(9);
(7)判断最高位是否在高N/2位,是则执行步骤(8),否则执行步骤(10);
(8)单步迭代进行角度选择,跳转步骤(3);
(9)单步迭代不进行角度选择,跳转步骤(3);
(10)双步迭代进行角度选择,跳转步骤(3);
(11)输出结果。
附图说明
图1为本发明实施例基于CORDIC算法的三角函数计算装置的结构示意图。
图2为本发明实施例定点输入角度象限映射关系及迭代模块初始赋值。
图3为本发明实施例的单步迭代模块的示意图。
图4为本发明实施例的双步迭代模块的示意图。
图5为本发明实施例的迭代控制模块的工作流程图。
图6为本发明实施例的随机进位单元的示意图。
图7为本发明实施例的角度选择单元的示意图。
图8为本发明实施例的特殊角度的三角函数值表。
图9为本发明实施例规定的数据信号的形式示意图。
图10为本发明实施例规定的角度信号的形式示意图。
图11为本发明实施例角度信号格式选择图。
图12为本发明实施例的串行结构的示意图。
图13为本发明实施例的并行结构的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了使本揭示内容的叙述更加详尽与完备,下文针对本发明的实施方式与具体实施例提出了说明性的描述;但这并非实施或运用本发明具体实施例的唯一形式。实施方式中涵盖了多个具体实施例的特征以及用以建构与操作这些具体实施例的方法步骤与其顺序。然而,亦可利用其它具体实施例来达成相同或均等的功能与步骤顺序。
如图1所示,这种基于CORDIC算法的三角函数计算装置,其包括:特殊角度判别模块、象限映射模块、单步迭代模块、双步迭代模块、迭代控制模块和存储模块;
特殊角度判别模块,其配置来判断输入角度是否为0、±π/6、±π/4、±π/3、±π/2、±2π/3、±3π/4、±5π/6、±π,如果是,则不进行迭代,直接输出存储在存储模块中的三角函数值;
象限映射模块,其配置来对输入的角度值进行判断,并将其转换到[-π/2,π/2];
单步迭代模块,包含N/2级流水线,其配置来在迭代控制模块的控制下进行初始的迭代运算;
双步迭代模块,其配置来在单步迭代模块之后,包含N/4级流水线,在迭代控制模块下进行双步迭代运算;
迭代控制模块,其配置来判断单步迭代模块和双步迭代模块是否完成迭代,并控制完成全部迭代;该模块包括:(1)剩余角判断单元,该单元在每次迭代完成后,判断剩余角度是否为0,若为0,则直接输出迭代结果;(2)角度选择单元,该单元在完成所有迭代次数小于N/3的单步迭代模块之后,选择进行后续单双步迭代的角度;(3)随机进位单元,该单元在每次迭代完成后,产生1位额外的操作数,与剩余角度进行相加,用于修正截断带来的精度损失;
存储模块,其配置来存储特殊角度判别模块中的特殊角度三角函数值和迭代运算过程中所需要的常数。
本发明采用定点数据进行CORDIC算法的实现,用定点加法器代替浮点加法器,结构简单,资源消耗少,同时还通过移位,进一步减少了部分的查找表资源消耗;在迭代过程中,加入随机进位单元,减小了由截断带来的计算误差,进一步提高了计算结果的精度;采用单双步迭代相结合的迭代模式,在保证精度的同时,减少了迭代次数,提高运算速度;采用了角度选择模块,对剩余的角度,按最高位为1的位进行旋转角度选取,避免了不必要的角度旋转;通过设置参数和常数值,对电路结构和输入角度格式进行设置。
优选地,对于输出数据信号x、y,采用二进制补码表示,x[N-1:N-2]和y[N-1:N-2]为整数位,x[N-3:0]和y[N-3:0]为小数位,x、y的输出范围为[-1,1];对于角度信号z,为了满足输入角度所能取得的数据范围是[-π,π],输入角度的整数位扩充一位,z[N-1:N-3]为整数位,z[N-4:0]为小数位。
优选地,对于角度信号z的格式信号phase_format等于1时,z的输入范围为[-π,π],查找表存储的旋转角度范围为[-π,π];phase_format等于0时,对z进行标准化,输入范围为[-1,1],表示为n个π,查找表存储的旋转角度范围为[-1,1]。
优选地,所述单步迭代模块和双步迭代模块的结构配置信号arch等于1时,电路配置成串行模式;arch等于0时,电路配置成并行模式。
优选地,角度选择单元在迭代次数大于N/3后起作用,利用最高比特位进行选择性迭代,若为1,则进行该次迭代;若为0,则不进行该次迭代。
优选地,单步迭代模块在迭代次数小于N/3或迭代次数大于N/3,最高位仍在高N/2起作用;双步迭代模块在完成所有单步迭代模块后起作用。
优选地,单步迭代模块遵循的迭代公式为公式(1):
其中,Xn、Yn为第n次迭代运算后的坐标值;β=±1=Sign(Zn),其中,Zn为第n次迭代运算后的剩余角度值;当β=1时,旋转方向为逆时针;当β=-1时,旋转方向为顺时针;
双步迭代模块遵循的迭代公式为公式(2):
角度旋转所遵循的公式为公式(3):
Zn+1=Zn+βatan(2-n),n=0,1,2,3,... (3)。
优选地,校正因子为公式(4):
其中,n=N/2,K为常数,通过将x、y初始值乘上1/K来弥补CORDIC过程中造成的误差。
优选地,存储模块也用于存储atan(2-n)和校正因子K,其中atan(2-n)仅存储到n=N/3即可,剩余atan(2-n)采用移位的形式实现;存储模块以ROM的形式实现。
还提供了一种基于CORDIC算法的三角函数计算方法,其包括以下步骤:
(1)对输入的角度值进行判断,并将其转换到[-π/2,π/2];
(2)判断输入角度是否为0、±π/6、±π/4、±π/3、±π/2、±2π/3、±3π/4、±5π/6、±π,如果是,则跳转步骤(11),直接输出存储在存储模块中的三角函数值,否则执行步骤(3);
(3)剩余角度输入;
(4)判断是否为0,若是则跳转步骤(11),直接输出结果,否则执行步骤(5);
(5)随机进位;
(6)判断迭代次数是否大于N/3,是则执行步骤(7),否则执行步骤(9);
(7)判断最高位是否在高N/2位,是则执行步骤(8),否则执行步骤(10);
(8)单步迭代进行角度选择,跳转步骤(3);
(9)单步迭代不进行角度选择,跳转步骤(3);
(10)双步迭代进行角度选择,跳转步骤(3);
(11)输出结果。
以下更详细地说明本发明的内容。
本发明提供了一种基于CORDIC算法的单双步迭代相结合的三角函数计算装置,如图1所示,包括:
所述的特殊角度判别模块,用于判断输入角度是否为0、±π/6、±π/4、±π/3、±π/2、±2π/3、±3π/4、±5π/6、±π,如果是,则不进行迭代,直接输出存储在存储模块中的三角函数值。
所述的象限映射模块,用于对输入的角度值进行判断,并将其转换到[-π/2,π/2]。
具体地,象限映射模块有两个功能:1.判断输入角度所在象限,并根据三角函数转换公式将其转换到一、四象限;2.迭代初始化,为迭代过程赋初值,并将缩放因子的倒数赋予x或y,用于修正缩放因子带来的误差。
输入角度z与±π/2进行比较,对于一、四象限的输入角度不进行转换,二、三象限的输入角度则统一分别转换到一、四象限。定点输入角度象限映射关系及迭代模块初始赋值,如图2所示。
所述的单步迭代模块,包含N/2级流水线,用于在所述的迭代控制模块的控制下进行初始的迭代运算。
具体地,如图3所示,在单步迭代中需要输入上一次迭代的结果,xn、yn、zn。经过一次移位和加减运算即可得到迭代后的结果xn+1、yn+1、zn+1,加减运算的符号由zn的符号位决定。
所述的双步迭代模块,用于在所述的单步迭代模块之后,包含N/4级流水线,在所述的迭代控制模块下进行双步迭代运算。
具体地,如图4所示,在双步迭代中需要输入上一次迭代的结果,xn、yn、zn。经过两次移位和加减运算即可得到迭代后的结果xn+1、yn+1、zn+1,加减运算的符号由zn的符号位决定。当开始做双步迭代时,后续的双步迭代方向就已经确定,由单步迭代中的双向旋转变为单向旋转。
所述的迭代控制模块,用于判断所述的单步迭代和双步迭代模块判断是否完成迭代,并控制完成全部迭代。该模块包括:(1)剩余角判断单元,该单元在每次迭代完成后,判断剩余角度是否为0,若为0,则直接输出迭代结果;(2)随机进位单元,该单元在每次迭代完成后,产生1位额外的操作数,与剩余角度进行相加,用于修正截断带来的精度损失;(3)角度选择单元,该单元在完成所有迭代次数小于N/3的单步迭代模块之后,选择进行后续单双步迭代的角度。
具体地,所述的迭代控制模块的工作流程,如图5所示。所述的迭代控制模块对每次迭代后产生的剩余角度进行判断,若为0,则跳过后续迭代过程,直接输出结果;若不为0,则继续执行迭代过程。判断完剩余角度之后,采用LFSR伪随机数产生结构,对剩余角度进行随机进位;进位完成后,判断迭代次数,选择下一步迭代进行的模式。当迭代次数小于N/3,不进行角度选择;当迭代次数大于N/3,则进行角度选择。若剩余角的最高位在N/2,则进行单步迭代,反之,则进行双步迭代。
所述的随机进位单元的结构示意图,如图6所示。其中,gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路,最后一级gn必须为1;所述的角度选择单元的结构示意图,如图7所示。当迭代次数大于N/3时,角度选择单元起作用。每次迭代,由剩余角度的最高位决定是否执行该次迭代。若最高位为1,执行该次迭代;若为0,旁路该次迭代。
所述的存储模块,用于存储所述的特殊角度判别模块中的特殊角度三角函数值,和迭代运算过程中所需要的常数。
具体地,存储的特殊角度函数值,如图8所示。特殊角度的函数值以二进制补码表示,如图9所示,整数位为2位,剩余部分为小数位;每次旋转需要的角度atan(2-n)也存储在存储模块中。旋转角度以二进制补码表示,如图10所示。当迭代次数大于N/3,截取N位以后,atan(2-n)中只有一位是1,只存储前N/3次迭代所需要的旋转角度,后续旋转角度由移位得到;具体地,K值以二进制补码表示,如图9所示,整数位为2位,剩余部分为小数位,根据输入数据位宽N,截取N位。存储模块以ROM的形式实现。
根据本发明的一种实施例,对于输出数据信号x、y,采用二进制补码表示,如图9所示。x[N-1:N-2]和y[N-1:N-2]为整数位,x[N-3:0]和y[N-3:0]为小数位,x、y的输出范围为[-1,1];对于输入角度信号z的格式如图10所示。为了满足输入角度所能取得的数据范围是[-π,π],输入角度的整数位为3位,z[N-1:N-3]为整数位,z[N-4:0]为小数位。
根据本发明的一种实施例,角度信号有两种格式可供选择,如图11所示。phase_format等于1时,角度的范围为[-π,π];phase_format等于0时,对角度进行标准化,输入范围为[-1,1],表示为n个π。
根据本发明的一种实施例,迭代模块有两种结构可以选择。arch等于1时,电路配置成串行模式,如图12所示,串行模式中只有一个单步迭代模块和一个双步迭代模块,节省电路面积;arch等于0时,电路配置成并行模式,如图13所示,并行模式采用流水线的形式,一共含有3N/4级迭代模块,有效提高吞吐率。
接下来,就以16位三角函数计算为例,对本发明进行详细说明。
1)首先配置phase_format和arch信号,如phase_format配置为1,arch配置为0,则电路中的角度信号配置为[-π,π],迭代模块配置为并行模式,存储模块中的数据位宽均为16位,存储的旋转角度只存储到atan(2-5)。
2)输入计算角度值z,判断z是否为特殊角。如z=0010000110000011,则z=π/3,则直接输出π/3的三角函数值;若z=π/5,则没有特殊角度与其相等,进入象限映射模块。
3)z=π/5,则z处于第一象限内。角度映射单元对输入角度变换后,对迭代模块的输入赋初值,x0=1/K=0010011011011101,y0=0,z0=z;
4)每次迭代,由迭代控制模块进行控制。z0=π/5,不等于0,则对其进行随机进位;随机进位单元的输出根据迭代模块的数量设置为12位输出,若随机进位单元分配到该次迭代的输出为1,则z0’=0001010000011100;由于是第1次迭代,因此选择单步迭代不执行角度选择。
5)当执行到第5次迭代时,若z0’=0000000101001101,角度选择单元开始起作用,对于高8位的数据采用单步迭代的方式,对于低8位的数据采用双步迭代的方式。这里只需要执行一次单步迭代和两次双步迭代即可完成最终结果的输出。
除非指明为相反之意,本说明书所附权利要求中的数值参数是近似值,能够根据通过本发明的内容所获得的所需特性改变。具体而言,所有使用于说明书及权利要求中表示组成的含量、反应条件等等的数字,应理解为在所有情况中是受到“约”的用语所修饰。一般情况下,其表达的含义是指包含由特定数量在一些实施例中±10%的变化、在一些实施例中±5%的变化、在一些实施例中±1%的变化、在一些实施例中±0.5%的变化。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。
Claims (9)
1.基于CORDIC算法的三角函数计算装置,其特征在于:其包括:特殊角度判别模块、象限映射模块、单步迭代模块、双步迭代模块、迭代控制模块和存储模块;
特殊角度判别模块,其配置来判断输入角度是否为0、±π/6、±π/4、±π/3、±π/2、±2π/3、±3π/4、±5π/6、±π,如果是,则不进行迭代,直接输出存储在存储模块中的三角函数值;
象限映射模块,其配置来对输入的角度值进行判断,并将其转换到[-π/2,π/2];
单步迭代模块,包含N/2级流水线,其配置来在迭代控制模块的控制下进行初始的迭代运算;
双步迭代模块,其配置来在单步迭代模块之后,包含N/4级流水线,在迭代控制模块下进行双步迭代运算;
迭代控制模块,其配置来判断单步迭代模块和双步迭代模块是否完成迭代,并控制完成全部迭代;该模块包括:(1)剩余角判断单元,该单元在每次迭代完成后,判断剩余角度是否为0,若为0,则直接输出迭代结果;(2)角度选择单元,该单元在完成所有迭代次数小于N/3的单步迭代模块之后,选择进行后续单双步迭代的角度;(3)随机进位单元,该单元在每次迭代完成后,产生1位额外的操作数,与剩余角度进行相加,用于修正截断带来的精度损失;
存储模块,其配置来存储特殊角度判别模块中的特殊角度三角函数值和迭代运算过程中所需要的常数;
单步迭代模块遵循的迭代公式为公式(1):
其中,Xn、Yn为第n次迭代运算后的坐标值;β=±1=Sign(Zn),其中,Zn为第n次迭代运算后的剩余角度值;当β=1时,旋转方向为逆时针;当β=-1时,旋转方向为顺时针;
双步迭代模块遵循的迭代公式为公式(2):
角度旋转所遵循的公式为公式(3):
Zn+1= Zn+ βatan(2-n),n=0,1,2,3,... (3)。
2.根据权利要求1所述的基于CORDIC算法的三角函数计算装置,其特征在于:对于输出数据信号x、y,采用二进制补码表示,x[N-
1:N-2]和y[N-1:N-2]为整数位,x[N-3:0]和y[N-3:0]为小数位,x、y的输出范围为[-1,1];对于角度信号z,为了满足输入角度所能取得的数据范围是[-π,π],输入角度的整数位扩充一位,z[N-1:N-3]为整数位,z[N-4:0]为小数位。
3.根据权利要求2所述的基于CORDIC算法的三角函数计算装置,其特征在于:对于角度信号z的格式信号phase_format等于1时,z的输入范围为[-π,π],查找表存储的旋转角度范围为[-π,π];
phase_format等于0时,对z进行标准化,输入范围为[-1,1],表示为n个π,查找表存储的旋转角度范围为[-1,1]。
4.根据权利要求3所述的基于CORDIC算法的三角函数计算装置,其特征在于:所述单步迭代模块和双步迭代模块的结构配置信号arch等于1时,电路配置成串行模式;arch等于0时,电路配置成并行模式。
5.根据权利要求4所述的基于CORDIC算法的三角函数计算装置,其特征在于:角度选择单元在迭代次数大于N/3后起作用,利用最高比特位进行选择性迭代,若为1,则进行该次迭代;若为0,则不进行该次迭代。
6.根据权利要求5所述的基于CORDIC算法的三角函数计算装置,其特征在于:单步迭代模块在迭代次数小于N/2起作用;双步迭代模块在完成所有单步迭代模块后起作用。
7.根据权利要求6所述的基于CORDIC算法的三角函数计算装置,其特征在于:校正因子为公式(4):
其中,n=N/2,K为常数,通过将x、y初始值乘上1/K来弥补CORDIC过程中造成的误差。
8.根据权利要求7所述的基于CORDIC算法的三角函数计算装置,其特征在于:存储模块也用于存储atan(2-n)和校正因子K,其中atan(2-n)仅存储到n=N/3即可,剩余atan(2-n)采用移位的形式实现;
存储模块以ROM的形式实现。
9.基于CORDIC算法的三角函数计算方法,其特征在于:其包括以下步骤:
(1)对输入的角度值进行判断,并将其转换到[-π/2,π/2];
(2)判断输入角度是否为0、±π/6、±π/4、±π/3、±π/2、±2π/3、
±3π/4、±5π/6、±π,如果是,则跳转步骤(11),直接输出存储在存储模块中的三角函数值,否则执行步骤(3);
(3)剩余角度输入;
(4)判断是否为0,若是则跳转步骤(11),直接输出结果,否则执行步骤(5);
(5)随机进位;
(6)判断迭代次数是否大于N/3,是则执行步骤(7),否则执行步骤(9);
(7)判断最高位是否在高N/2位,是则执行步骤(8),否则执行步骤(10);
(8)单步迭代进行角度选择,跳转步骤(3);
(9)单步迭代不进行角度选择,跳转步骤(3);
(10)双步迭代进行角度选择,跳转步骤(3);
(11)输出结果;
单步迭代遵循的迭代公式为公式(1):
其中,Xn、Yn为第n次迭代运算后的坐标值;β=±1=Sign(Zn),其中,Zn为第n次迭代运算后的剩余角度值;当β=1时,旋转方向为逆时针;当β=-1时,旋转方向为顺时针;
双步迭代遵循的迭代公式为公式(2):
角度旋转所遵循的公式为公式(3):
Zn+1= Zn+ βatan(2-n),n=0,1,2,3,... (3)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110398378.1A CN113138749B (zh) | 2021-04-09 | 2021-04-09 | 基于cordic算法的三角函数计算装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110398378.1A CN113138749B (zh) | 2021-04-09 | 2021-04-09 | 基于cordic算法的三角函数计算装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113138749A CN113138749A (zh) | 2021-07-20 |
CN113138749B true CN113138749B (zh) | 2023-09-26 |
Family
ID=76812387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110398378.1A Active CN113138749B (zh) | 2021-04-09 | 2021-04-09 | 基于cordic算法的三角函数计算装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113138749B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114707110B (zh) * | 2022-06-07 | 2022-08-30 | 中科亿海微电子科技(苏州)有限公司 | 一种三角函数和双曲函数扩展指令计算装置及处理器核 |
CN115543258B (zh) * | 2022-11-30 | 2023-06-16 | 无锡奇芯科技有限公司 | 基于cordic算法的存储方法 |
CN118092853B (zh) * | 2024-04-26 | 2024-07-19 | 中科亿海微电子科技(苏州)有限公司 | 基于risc-v浮点超越函数指令集扩展方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480871B1 (en) * | 1999-04-07 | 2002-11-12 | Dhananjay S. Phatak | Algorithm (Method) and VLSI architecture for fast evaluation of trigonometric functions |
CN103677737A (zh) * | 2013-09-26 | 2014-03-26 | 中国人民解放军国防科学技术大学 | 基于进位节省加法器的低延时cordic三角函数实现的方法及装置 |
CN103677738A (zh) * | 2013-09-26 | 2014-03-26 | 中国人民解放军国防科学技术大学 | 基于混合模式cordic算法的低延时基本超越函数实现方法及装置 |
CN204990269U (zh) * | 2015-07-21 | 2016-01-20 | 开县正品诚赢科技发展有限责任公司 | 一种基于fpga的反三角函数实现装置 |
CN106155627A (zh) * | 2016-06-30 | 2016-11-23 | 中国人民解放军国防科学技术大学 | 基于t_cordic算法的低开销迭代三角函数装置 |
CN106202890A (zh) * | 2016-06-30 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572151B2 (en) * | 2010-03-15 | 2013-10-29 | Integrated Device Technology, Inc. | Methods and apparatuses for cordic processing |
-
2021
- 2021-04-09 CN CN202110398378.1A patent/CN113138749B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480871B1 (en) * | 1999-04-07 | 2002-11-12 | Dhananjay S. Phatak | Algorithm (Method) and VLSI architecture for fast evaluation of trigonometric functions |
CN103677737A (zh) * | 2013-09-26 | 2014-03-26 | 中国人民解放军国防科学技术大学 | 基于进位节省加法器的低延时cordic三角函数实现的方法及装置 |
CN103677738A (zh) * | 2013-09-26 | 2014-03-26 | 中国人民解放军国防科学技术大学 | 基于混合模式cordic算法的低延时基本超越函数实现方法及装置 |
CN204990269U (zh) * | 2015-07-21 | 2016-01-20 | 开县正品诚赢科技发展有限责任公司 | 一种基于fpga的反三角函数实现装置 |
CN106155627A (zh) * | 2016-06-30 | 2016-11-23 | 中国人民解放军国防科学技术大学 | 基于t_cordic算法的低开销迭代三角函数装置 |
CN106202890A (zh) * | 2016-06-30 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113138749A (zh) | 2021-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113138749B (zh) | 基于cordic算法的三角函数计算装置及方法 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
CN1175730A (zh) | 使用浮点运算硬件进行微处理器整数除法操作的方法和装置 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110515589B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111813371B (zh) | 数字信号处理的浮点除法运算方法、系统及可读介质 | |
Linhardt et al. | Digit-by-digit transcendental-function computation | |
EP0416309A2 (en) | Method and apparatus for performing the square root function using a rectangular aspect ratio multiplier | |
JP4199100B2 (ja) | 関数演算方法及び関数演算回路 | |
US4956799A (en) | Trigonometric function arithmetic processor using pseudo-division | |
CN113126954B (zh) | 浮点数乘法计算的方法、装置和算术逻辑单元 | |
CN110515584A (zh) | 浮点计算方法及系统 | |
WO1999066423A1 (fr) | Dispositif pour calcul de donnees | |
CN107423026B (zh) | 一种正余弦函数计算的实现方法及装置 | |
CN109298848A (zh) | 双模式浮点除法平方根的电路 | |
CN116933840A (zh) | 支持可变指数位宽的多精度Posit编解码运算装置及方法 | |
WO2023116400A1 (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
CN116738132A (zh) | 超越函数的处理方法、超越函数单元、图形处理器 | |
JP2020098469A (ja) | 演算処理装置および演算処理装置の制御方法 | |
Liu et al. | FPGA implementation of multiplication-free complex division | |
CN108874367B (zh) | 一种基于乘方运算的复合有限域求逆器及其求逆方法 | |
CN115033205B (zh) | 一种低延迟高精度定值除法器 | |
CN118170344B (zh) | 一种处理器多功能定点除法计算装置及方法 | |
EP1089227A2 (en) | Interpolation method and apparatus | |
CN112306454B (zh) | 一种实现cordic旋转模式下近似计算的装置和方法 |
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 |