改进的跳跃迭代CORDIC系统及方法

文档序号:32853743发布日期:2023-01-06 23:35阅读:35来源:国知局
改进的跳跃迭代CORDIC系统及方法
改进的跳跃迭代cordic系统及方法
技术领域
1.本发明属于数字信号处理和集成电路设计技术领域,具体涉及一种改进的跳跃迭代cordic(坐标旋转数字计算机,coordinate rotation digital computer)系统及方法。


背景技术:

2.cordic方法是用于计算三角、反三角、指数、对数等超越函数的简捷方法。将该方法应用在以单片机为核心的三轴电子罗盘中,用于实现罗盘的倾斜补偿并计算俯仰角、横滚角和航向角;此外,该方法可应用于电机驱动中位置反馈解算和三角函数计算;还可应用于无人驾驶或自主导航系统中3d点云图构建时的位置点解算。实验表明,该方法可有效地在单片机、fpga上运行,能够较好地兼顾计算精度与效率,有实用价值。相比传统查表法、级数展开和多项式函数逼近等方法,经典的cordic方法充分结合硬件计算特点,可以将包括三角函数在内的一些复杂超越函数非线性运算简化为一系列简单的加减和移位操作的线性逼近,是硬件与算法相结合的一种优化方案,具有资源占用较少,精度可控等优点。在通信系统、自适应信号处理、图像处理、三维图形构建、和机器人等领域应用广泛。
3.上述领域的快速发展对于三角函数的计算提出了高速度高精度计算的要求,增大数据吞吐量的同时控制硬件逻辑资源的占用。因此,许多学者对cordic方法提出改进方案。例如,有研究人员提出一种低延迟的免缩放cordic方法,通过在不同阶段中多个角度的适当组合来缩短延迟。还有研究人员设计了一个高效可重构结构,该结构可以通过配置完成不同的功能。另有研究人员提出并使用fpga实现了低延迟混合自适应cordic(ha-cordic)方法。此外还有一些研究人员通过采用贪婪方法实现对cordic迭代结构的优化,从而达到串行转并行和减少选代次数,节约资源的目的,但其对核心点元素模长因子处理将引入较多乘法运算,不便硬件实现,或实现结构复杂,资源消耗较大。


技术实现要素:

4.本发明的主要目的在于提供一种改进的跳跃迭代cordic系统及方法,以克服现有技术中的不足。
5.为实现前述发明目的,本发明采用的技术方案包括:
6.本发明的一个方面提供的一种改进的跳跃迭代cordic系统包括:
7.角度区间折叠模块,其用于依据三角函数的对称性进行区间转换,将幅角在[0,2π]内的向量映射到[0,π/4]内,从而实现对任意输入角度θ进行迭代运算;
[0008]
查找表模块,其用于依据公式tanθi=2-i
随着i自增生成由一系列角度θi组成的角度列表,i为迭代次数,i≥0,并按需求精度进行归一化放大且以二进制形式存放,其中二进制数表中各值最高位依序右移;
[0009]
残差匹配模块,其用于在进行迭代前,基于前次迭代计算的残差角度zi与预选角度列表进行大小匹配查找,从而获得匹配的预选角度θ
i+n
,n≥0,例如可以为自然数;
[0010]
跳跃迭代模块,其用于依据所述预选角度θ
i+n
,跳过冗余顺序迭代,直接与残差角
度zi进行迭代计算;
[0011]
结果映射还原模块,其用于依据角度区间折叠模块的映射折叠规则,对所述跳跃迭代模块中的计算结果进行还原。
[0012]
在一个实施例中,所述查找表模块能够根据需求计算精度设置表格的位宽量级,并将生成的一系列角度θi作为列表元素按降序排列且近似逐级减半,再将形成的角度列表进行定点数转换后,使各角度对应的二进制数的最高位随i自增依序右移一位。
[0013]
在一个实施例中,所述残差匹配模块的功能具体包括:设θ0对应的二进制数除符号位外的最高有效位位数为j
mb
,则在每次迭代结束时进行判断,若zi为正数则判断其第j
mb-n位是否为1,zi为负数则判断其第j
mb-n位是否为0,是则输出θ
i+n
到所述跳跃迭代模块进行迭代,否则n自增并重复上一步骤,如此循环,当计算后剩余残差值绝对值zi小于固定角的最小角度θm,则停止迭代输出计算结果。
[0014]
在一个实施例中,所述跳跃迭代模块利用残差匹配模块中所确定的残差最高位位值进行移位操作,并将当前残差角度值与相匹配的预选角度θ
i+n
进行加减操作,循环运行残差匹配模块和跳跃迭代模块,直到残差达到设计精度范围之内,则停止迭代。
[0015]
在一个实施例中,所述结果映射还原模块所执行的操作为角度区间折叠模块的逆操作。
[0016]
本发明的另一个方面提供的一种改进的跳跃迭代cordic方法包括:
[0017]
执行角度区间折叠操作,包括:依据三角函数的对称性进行区间转换,将幅角在[0,2π]内的向量映射到[0,π/4]内,从而实现对任意输入角度θ进行迭代运算;
[0018]
执行查找表操作,包括:依据公式tanθi=2-i
随着i自增生成由一系列角度θi组成的角度列表,i为迭代次数,i≥0,并按需求精度进行归一化放大且以二进制形式存放,各角度对应的二进制数的最高位随i自增依序右移一位;
[0019]
执行残差匹配操作,包括:在进行迭代前,基于前次迭代计算的残差角度zi与预选角度列表进行大小匹配查找,从而获得匹配的预选角度θ
i+n
,n≥0;
[0020]
执行跳跃迭代操作,包括:依据所述预选角度θ
i+n
,跳过冗余顺序迭代,直接与残差角度zi进行迭代计算;
[0021]
执行结果映射还原操作,包括:依据角度区间折叠操作的映射折叠规则,对跳跃迭代操作的计算结果进行还原。
[0022]
在一个实施例中,所述的执行查找表操作具体包括:根据需求计算精度设置表格的位宽量级,并将生成的一系列角度θi作为列表元素按降序排列且近似逐级减半,再将形成的角度列表进行定点数转换后,使各角度对应的二进制数的最高位随i自增依序右移一位。
[0023]
在一个实施例中,所述的执行残差匹配操作具体包括:设θ0对应的二进制数除符号位外的最高有效位位数为j
mb
,则在每次迭代结束时进行判断,若zi为正数则判断其第j
mb-n位是否为1,zi为负数则判断其第j
mb-n位是否为0,是则输出θ
i+n
到所述跳跃迭代模块进行迭代,否则n自增并重复上一步骤,如此循环,当计算后剩余残差值绝对值zi小于固定角的最小角度θm,则停止迭代输出计算结果。
[0024]
在一个实施例中,所述的方法具体包括:在执行跳跃迭代操作时,利用执行残差匹配操作所确定的残差最高位位值进行移位操作,并将当前残差角度值与相匹配的预选角度
θ
i+n
进行加减操作,循环执行残差匹配操作和跳跃迭代操作,直到残差达到设计精度范围之内,则停止迭代。
[0025]
在一个实施例中,所述的方法具体包括:
[0026]
在进行正切函数的计算时,直接进行跳跃迭代计算;
[0027]
而在进行正余弦函数的计算时,先进行经典迭代计算,当cosθi项对坐标的调整不再影响末端坐标的精度时,切换为跳跃迭代计算。
[0028]
进一步的,在进行正余弦函数的计算时,是按照如下公式将θ分解为两部分:
[0029][0030]
其中l为经典迭代次数,b为跳跃迭代次数,总的迭代次数为n=l+b,若需求三角函数的计算的最大误差为ε,k的误差为γ,则l的取值满足:γ小于ε的最小值。
[0031]
在一个实施例中,所述改进的跳跃迭代cordic方法具体包括:
[0032]
设直角坐标系中的一个与x轴夹角为的向量p(x0,y0)绕原点逆时针旋转θ角后得到向量p(xn,yn),所述向量p(x0,y0)与x轴夹角为且向量p(x0,y0)与向量p(xn,yn)的关系表示为:
[0033][0034]
执行经典迭代计算,包括:
[0035]
将θ分解为多步微旋转θi的叠加,表示为:
[0036][0037]
引入变量角度累加器z,用于记录多步微旋转的累加角度,表示为:
[0038][0039]
其中zi表示i次迭代后的多步微旋转累加角度与目标角度的差值,用于判断下次旋转方向,具体表示为:
[0040][0041]
若σi=-1,下次往逆时针的方向旋转,反之则下次往顺时针方向旋转;
[0042]
在进行i次迭代之后,式(1)的迭代形式为:
[0043][0044]
其中θi的划分遵循tanθi=2-i
,随着i自增生成一系列已知θi,将其中每个θi都归一化表达为确定的二进制数,则每个微旋转角度累加转化为对应二进制数加减的计算,相应迭代形式为:
[0045][0046][0047]
经过数次迭代后系数项逼近常数:
[0048][0049]
k为模长因子;
[0050]
忽略常数k值的影响,则得到经典迭代公式,即式(9):
[0051][0052]
其中σi2-i
的计算被转换成计算机硬件中的移位操作;
[0053]
之后对经典迭代结果进行模长的修正,包括:
[0054]
将初始值进行预缩放进行修正,将式(10)代入式(3)和式(9)经n次迭代后得到的输出为式(11),
[0055][0056][0057]
从而完成输入角度为θ的三角函数计算。
[0058]
在一个实施例中,所述方法还包括:
[0059]
执行跳跃迭代计算,包括:
[0060]
使生成的θi按降序排列且近似逐级减半,并将相应的角度列表进行定点数转换后各角度二进制数最高位随i自增依序右移一位,当i最大为m时,划分的角度序列最小角度为θm;
[0061]
设θ0对应二进制数除符号位外最高有效位位数为j
mb
,则在每次迭代结束时进行判断,zi为正数则判断其第j
mb-n位是否为1,zi为负数则判断其第j
mb-n位是否为0,是则输出θ
i+n
进行迭代,否则n自增重复上一步骤,如此循环,当计算后剩余残差值绝对值zi小于固定角的最小角度θm,则停止迭代输出计算结果。
[0062]
本发明的另一个方面提供了一种改进的跳跃迭代cordic方法在fpga(现场可编程门阵列,field programmable gate array,fpga)实现的方法,其包括:利用fpga执行所述的改进的跳跃迭代cordic方法。
[0063]
相比于现有技术,本发明提供的一种改进的跳跃迭代cordic方法是跳跃迭代的cordic方法,其可根据迭代残差匹配查找近似预选角度,跳过冗余迭代,减少迭代次数,克
服了现有cordic方法在计算过程中存在冗余迭代的问题;同时,通过对随之引起的模数因子的改变进行分析,本发明还提出了经典迭代加跳跃迭代综合迭代的矫正方法,保证了计算结果的精度。将本发明的改进的跳跃迭代cordic方法在matlab进行仿真分析,并进行fpga实现验证,结果表明:以32位输出为例;在计算正切值时,跳跃迭代平均迭代次数减少了67.91%,在计算正余弦函数时,其平均迭代次数减少了33%。因此,本发明的方法在实时性强、硬件资源有限、精度要求高的数字信号处理系统中具有潜在的应用价值。
附图说明
[0064]
图1示出了现有cordic方法中的坐标旋转角度θ。
[0065]
图2示出了现有cordic方法中的伪旋转示意图。
[0066]
图3示出了本发明改进的跳跃迭代cordic方法中一种区间划分的示意图。
[0067]
图4示出了现有cordic方法的旋转过程示意图。
[0068]
图5示出了本发明中一种跳跃迭代的cordic方法的旋转过程示意图。
[0069]
图6示出了本发明中一种跳跃迭代计算流程的示意图。
[0070]
图7示出了现有cordic方法与跳跃迭代cordic方法计算tan32
°
收敛曲线。
[0071]
图8示出了一种跳跃迭代计算cos32
°
的收敛过程的示意图。
[0072]
图9示出了现有cordic方法计算各角度余弦值绝对误差的示意图。
[0073]
图10示出了跳跃迭代计算各角度余弦值绝对误差的示意图。
[0074]
图11示出了本发明中一种跳跃迭代计算各角度余弦值迭代次数的示意图。
[0075]
图12示出了本发明中一种跳跃迭代各角度正切值计算迭代次数的示意图。
[0076]
图13示出了本发明中一种跳跃迭代正切计算仿真图。
[0077]
图14示出了本发明中一种跳跃迭代正余弦计算仿真图。
具体实施方式
[0078]
如前所述,鉴于现有cordic方法的不足,本发明提出了一种跳跃迭代的高速高精cordic方法,其在现有cordic方法的基础上结合区间折叠等手段改进预设角的选择机制,使每次迭代选取的角度都充分接近残差角度,则每次迭代都以最佳逼近角向目标值靠近,可有效减少迭代次数,同时对随之引起的模长因子的改变作以修正,使其精度等级不变。最后通过matlab仿真以及在fpga方法实现,验证所提方法的高效性。如下将结合实施例及附图对本发明的技术方案作更为详尽的揭示说明。
[0079]
本实施例首先提供了一种改进的跳跃迭代cordic系统,其包括角度区间折叠模块、预选角度列表模块、残差匹配模块、跳跃迭代模块、结果映射还原模块等。
[0080]
其中,所述角度区间折叠模块利用三角函数的对称性进行区间转换,将[0,2π]映射到[0,π/4]内,从而实现对任意输入角度进行迭代运算。
[0081]
所述查找表模块依据公式tanθi=2-i
随着i自增生成一系列角度列表θi,按需求精度进行归一化放大并以二进制形式存放在存储器中,该二进制数近似半分,即二进制数表依序右移,为后续残差快速匹配查找提供可能。
[0082]
所述残差匹配模块在进行迭代前,基于上次迭代计算残差zi与预选角度列表θi进行大小匹配查找,具体可直接判断残差角除符号位外最高有效位位值,进而在预选角度列
表中取最高有效位位值相同角度。
[0083]
所述跳跃迭代模块依据所述残差匹配模块中选取角度,跳过冗余顺序迭代,直接与残差角度进行迭代计算,可精准消除残差,快速计算收敛。
[0084]
所述结果映射还原模块,依据角度区间折叠模块的映射折叠规则,对所述跳跃迭代模块中的计算结果进行还原。
[0085]
进一步的,所述角度区间折叠模块以[0,π/4]的角度代替全象限角度,包括依据三角函数对称特性,结合二进制数正负标志位进行取反替换操作。
[0086]
进一步的,所述结果映射还原模块即为角度区间折叠模块的逆操作,依据三角函数对称特性,将所折叠角度即三角函数计算结果进行还原。
[0087]
同时,本实施例还提供了一种改进的跳跃迭代cordic方法,其具体包括:
[0088]
执行角度区间折叠操作,包括:依据三角函数的对称性进行区间转换,将幅角在[0,2π]内的向量映射到[0,π/4]内,从而实现对任意输入角度θ进行迭代运算;
[0089]
执行查找表操作,包括:依据公式tanθi=2-i
随着i自增生成由一系列角度θi组成的角度列表,i为迭代次数,i≥0,并按需求精度进行归一化放大且以二进制形式存放,其中二进制数表依序右移;
[0090]
执行残差匹配操作,包括:在进行迭代前,基于前次迭代计算的残差角度zi与预选角度列表进行大小匹配查找,从而获得匹配的预选角度θ
i+n
,n≥0;
[0091]
执行跳跃迭代操作,包括:依据所述预选角度θ
i+n
,跳过冗余顺序迭代,直接与残差角度zi进行迭代计算;
[0092]
执行结果映射还原操作,包括:依据角度区间折叠操作的映射折叠规则,对跳跃迭代操作的计算结果进行还原。
[0093]
如下对本实施例的方法进行详细说明,具体如下。
[0094]
现有cordic方法圆周系统包括旋转模式和向量模式。本说明书以圆周系统旋转模式为例,阐述其原理。假设在直角坐标系中有一个与x轴夹角为的单位向量p(x0,y0),将该向量绕原点逆时针旋转θ角后,可得到向量p(xn,yn),则两个向量之间的关系为:
[0095][0096]
采用迭代的思想,将θ可以分解为若干步微旋转θi的叠加,其表示为:
[0097][0098]
引入变量角度累加器z,用来记录多步微旋转的累加角度,其表示为:
[0099][0100]
此处zi表示i次迭代后的多步微旋转累加角度与目标角度的差值,用于判断下次旋转方向,具体表示为:
[0101]
[0102]
若σi=-1,下次往逆时针的方向旋转;反之,下次往顺时针方向旋转。
[0103]
在进行i次迭代之后,式(1)的迭代形式为:
[0104][0105]
为了便于在计算机中实现,θi的划分需要遵循tanθi=2-i
,随着i的自增将生成一系列已知的θi,在计算机中每个θi都归一化表达为确定的二进制数,此时,每个微旋转角度累加就转化为对应二进制数加减的计算。迭代形式为:
[0106][0107]
其中系数项
[0108][0109]
经过无数次迭代后系数项逼近常数:
[0110][0111]
k称为模长因子,为了便于计算暂时忽略常数k值的影响,则得到经典迭代式:
[0112][0113]
其中σi2-i
的计算可转换成计算机硬件中的移位操作。
[0114]
至此,cordic方法以经典迭代的形式将函数计算转化为计算机硬件中的加减运算和移位操作。但这种经典迭代结果还需进行模长的修正。如图2所示,旋转θ度之后x与y的坐标值均增加cos-1
θ倍,最终以经典迭代结束时模长增长了1/k倍。
[0115]
在实际计算中,先将初始值进行预缩放进行修正,此时将
[0116][0117]
代入式(3)和(9)经n次迭代后的输出为:
[0118][0119]
结果显然完成了输入角度为θ的三角函数计算。
[0120]
考虑正切函数的奇偶特性,可将辐角在(-π/2,0)内的向量转换到(0,π/2)。由正切函数性质有:
[0121]
arctan x+arctan(x-1
)=π/2
ꢀꢀꢀ
(12)
[0122]
当向量的辐角在(π/4,π/2)内,可用式(12)将其转换到[0,π/4],将(-π/2,π/2)内所有角度都转换到[0,π/4]来计算。
[0123]
正余弦函数也是通过三角函数的对称性进行区间转换。把[0,2π]映射到[0,π/4]内,从而实现对任意输入角度进行迭代运算。具体原理如图3与表1所示
[0124]
表1区间转换
[0125][0126]
通过以上过程,可以实现区间折叠。
[0127]
现有的cordic方法在迭代过程中,每次旋转迭代的角度值θi都是按表2的顺序选取,所取角度逐步叠加接近输入角度θ,如图4所示为输入角度θ为25
°
的迭代旋转过程。可看出迭代过程中以固定的预选角度叠加序列,存在冗余迭代,效率较低。
[0128]
若每次迭代都能准确匹配到最接近残差角度zi的预选角度θ
i+n
,则可去掉冗余的迭代,减少迭代次数,实现跳跃迭代,提高计算速度。如图5所示为跳跃迭代旋转过程。θi的生成遵循tanθi=2-i
,生成的元素θi按降序排列且近似逐级减半,则将该角度列表进行定点数转换后各角度二进制数最高位随i自增依序右移一位,如表2所示,当i最大为m时,划分的角度序列最小角度为θm。
[0129]
以上过程也可以被概括为,查找表模块根据需求计算精度设置表格的位宽量级,并将生成的一系列角度作为列表元素按降序排列且近似逐级减半,再将形成的角度列表进行定点数转换后,使各角度对应的二进制数的最高位随自增依序右移一位。
[0130]
表2角度标定值
[0131]
[0132][0133]
基于上述规律进行匹配查找,具体查找与迭代过程如图6所示,设θ0对应二进制数除符号位外最高有效位位数为j
mb
,则在每次迭代结束时进行判断,zi为正数则判断其第j
mb-n位是否为1,zi为负数则判断其第j
mb-n位是否为0,是则输出θ
i+n
进行迭代,否则n自增重复上一步骤,如此循环,当计算后剩余残差值绝对值zi小于固定角的最小角度θm,则停止迭代并输出计算结果。以上的过程是由残差匹配模块执行。进一步的,请再次参阅图6,前述过程也可以认为是跳跃迭代模块利用残差匹配模块中所确定的残差最高位位值大小进行移位操作,并将当前残差角度值与相匹配的预选角度θ
i+n
进行加减操作,循环运行残差匹配模块和跳跃迭代模块,直到残差达到设计精度范围之内时停止迭代。其中,位值判断的操作包括图6中的补码、原码等操作。
[0134]
图7所示为现有cordic方法(简称“传统迭代”)与改进的跳跃迭代cordic方法(简称“跳跃迭代”)在matlab中计算tan32
°
各自收敛过程。
[0135]
在本发明中,跳跃迭代计算方法对于计算正切函数和正余弦函数时略有不同。例如,正切函数计算与旋转叠加出的最终角度θ有关,并不考虑模长变化,因此可直接进行跳跃迭代;而对于正余弦函数计算时,本发明的跳跃迭代的cordic方法改变了每次迭代前预选角度的选取方式,这也同时改变了其模长因子的组成结构,因此基于现有cordic方法的模长因子不再适用于本发明的跳跃迭代的cordic方法。
[0136]
由式(6)可得,每次迭代中对下一坐标引起变化的元素有cosθi和2-i
,当i趋近于无穷的时候,结合式(7)则有:
[0137][0138]

[0139][0140]
为了分析其迭代过程中y1和y2两元素对末端坐标的影响权重,求:
[0141]
[0142]
即y1是y2的高阶无穷小,为量化表征这两者趋近于0的速度之差,比较y1与y2的导数:
[0143][0144]
上式中,y
′2恒小于1,y
′1恒大于1,且随着i逐渐增大,导数之差持续增加,即存在“加速度”之差或者更高阶的差值。
[0145]
进而可得出结论:随着i的增加,cosθi趋近于1的速度快于2-i
趋近于0的速度,换言之,cosθi与2-i
对于迭代末端坐标修正的权重相比,前者快速减小,后者逐渐增加。
[0146]
因此,在计算正余弦函数时,可先以经典cordic方法进行迭代,当cosθi项对坐标的调整不在影响末端坐标的精度时,程序切换为跳跃迭代方式进行计算,可加快收敛速度,使其快速逼近准确值,因此将角度θ分解为两部分:
[0147][0148]
式中,l为传统结构迭代次数,b为跳跃结构迭代次数,总的迭代次数为n=l+b,若工程中需求三角函数的计算的最大误差为ε,k的误差为γ,则l取满足γ小于ε的最小值,其在matlab中迭代过程如图8所示。可看到同精度要求下,本发明的跳跃迭代的cordic方法迭代次数明显少于现有cordic方法。
[0149]
本发明改进的跳跃迭代cordic方法计算正弦与余弦函数时为消除模长因子变化的影响,其迭代结构为经典迭代加跳跃迭代模式,而计算正切函数时为纯跳跃迭代模式,因此本发明的跳跃迭代的cordic方法对于正切计算更具优势。
[0150]
让现有的cordic方法迭代32次,以0.01的步长在matlab计算0到45
°
的各个角度的余弦,如图9所示,各角度计算所得误差在7e-10以内。则设定跳跃迭代参数ε=7e-10,n=32,此时满足γ小于ε的经典迭代次数l最小值为16次。则跳跃迭代以0.01的步长在matlab计算各角度余弦值绝对误差如图10所示。
[0151]
由图10可看出跳跃迭代结果符合设计精度ε。图11是跳跃迭代次数的统计,可以看出,迭代次数大致呈正态分布,本实施例改进的跳跃迭代cordic方法累计迭代次数最大不超过24次,最小仅为17次,平均迭代次数为21.44次,比现有cordic方法减少33%。且理论上该比例将随着n增大而增大。
[0152]
图12所示为跳跃迭代cordic方法计算以0.01为步长遍历0到45度各角度正切值的实际迭代次数,与现有cordic方法迭代32次计算所得精度相比,该跳跃迭代cordic方法的迭代次数最大不超过15次,最小仅需1次,平均迭代次数为10.27次。可以认为,相比现有cordic方法,本发明的跳跃迭代的cordic方法迭代次数减少了67.91%。
[0153]
依据上文给出的实现流程,在quartus prime软件上完成了相应的verilog代码开发,分别实现了32位输出的正切和正余弦值的计算。并将其配置在altera(intel)cyclone iv e系列的现场可编程门阵列上。为保证系统计算精度,所有数据均归一化放大2
30
,即1073741824倍。最终在modelsim平台上得到仿真结果如图13和图14所示。
[0154]
其中idata为角度输入,c、s分别表示计算所得正余弦值,从图13可以看出,当输入
角度为30
°
时,则:
[0155]
tan30
°
=365212200/632566084
[0156]
=0.57735027096394248
[0157]
与matlab误差为1.774316716e-9
,迭代次数为10。从图14中可以看出,当输入角度为45
°
时,则:
[0158]
cos45
°
=759250125/1073741824
[0159]
=0.707106781192123889
[0160]
与matlab误差为5.576364e-12,迭代次数为21,均与理论分析相一致。
[0161]
在相同的时序、面积和电路环境属性等约束条件下,使用quartus prime软件对两种方法进行综合,对寄存器消耗量、查找表消耗量等硬件资源消耗参数进行对比分析,在表3中给出了不同输出位宽下在fpga中实现两种方法逻辑综合结果,可以看出两种方法在相同输出位宽下逻辑资源的消耗量基本一致。
[0162]
表3逻辑综合结果
[0163][0164]
此外,本发明还提供了一种计算机设备,其包括处理器以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现所述的改进的跳跃迭代cordic方法。
[0165]
以及,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现所述的改进的跳跃迭代cordic方法。
[0166]
本发明针对现有基于流水线cordic方法在相位旋转过程中,存在冗余迭代,计算效率低等缺点,提出了旋转模式下跳跃迭代cordic方法,通过改变预选角度的选取方式,实现了旋转方向和旋转角度的准确选取,每次迭代都能查找最佳逼近角度,从而快速收敛,并对随之引起的模长因子结构变化进行了分析修正,保证了末端坐标的精确性。matlab及fpga实现结果表明:其在相同精度的情况下,两种方法资源消耗量一致,但与现有cordic方法相比,本发明的跳跃迭代的cordic方法可以有效减少迭代次数,提高计算效率,在要求迭代次数一致的情况下,该方法比现有cordic方法具有更高的运算精度,而且需求精度越高,该方法迭代次数减少越多。本发明的跳跃迭代的cordic方法兼顾速度与精度,在控制硬件资源消耗的同时,显著减少了迭代次数,并保证输出精度,便于工程实现,非常适合高速高精的数字信号处理领域应用。
[0167]
尽管已参考说明性实施例描述了本发明,但所属领域的技术人员将理解,在不背离本发明的精神及范围的情况下可做出各种其它改变、省略及/或添加且可用实质等效物替代所述实施例的物质或元件。另外,可在不背离本发明的范围的情况下做出许多修改以使特定情形或材料适应本发明的教示。因此,本文并不打算将本发明限制于用于执行本发
明的所揭示特定实施例,而是打算使本发明将包含归属于所附权利要求书的范围内的所有实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1