一种基于CORDIC方法求复数的N次开根号的硬件计算系统及其计算方法与流程

    专利2022-07-08  102


    本发明涉及复数计算领域,具体涉及一种基于cordic方法求复数的n次开根号的硬件计算系统及其计算方法。
    背景技术
    :对超越函数求值,常见方法为用多项式近似,例如利用泰勒展开来逼近目标函数,只要阶数取得足够大,就可以无限逼近目标函数。当我们把这个方法运用到某些特殊机器时,很快会发现问题:泰勒展开包括大量复杂浮点运算,对于没有硬件浮点运算单元的机器,只能通过软件浮点实现。cordic(coordinaterotationdigitalcomputer)的出现解决了这个问题。该算法利用迭代逼近的方法,仅仅通过加/减和移位操作即可计算,极大的方便了机器实现。cordic算法应用广泛,如离散傅里叶变换、离散余弦变换、离散hartley变换、chirp-z变换、各种滤波以及矩阵的奇异值分解中都可应用cordic算法。从广义上讲,cordic算法提供了一种数学计算的逼近方法。由于它最终可分解为一系列的加减和移位操作,故非常适合硬件实现。例如,在工程领域可采用cordic算法实现直接数字频率合成器。而对于求复数的n次开根号的计算来讲,若采用其他方法则会需要大量计算与大量消耗,另外如果不对cordic算法进行拓展收敛域,那会导致限制输入复数的范围从而限制应用。技术实现要素:发明目的:一个目的是提出一种基于cordic方法求复数的n次开根号的硬件计算系统,以解决现有技术存在的上述问题。进一步目的是提出一种基于上述系统的计算方法。技术方案:一种基于cordic方法求复数的n次开根号的硬件计算系统,该基于cordic方法求复数的n次开根号的硬件计算系统,其主要包括:平面坐标转化极坐标计算单元,模长计算单元,相角计算单元,极坐标转化平面坐标计算单元和控制单元五个单元。平面坐标转化极坐标计算单元:将输入复数由平面坐标形式转化为极坐标形式,得到输入复数的模长ρ和相角θ,本单元主要通过圆周向量模式cordic(cordic_c_v)完成计算。模长计算单元:求输入复数的模长ρ的次幂,即本单元主要由双曲向量模式cordic(cordic_h_v)、线性向量模式cordic(cordic_l_v)和双曲旋转模式cordic(cordic_h_r)完成计算。相角计算单元:求相角的即本单元主要由线性向量模式cordic(cordic_l_v)完成计算。极坐标转化平面坐标计算单元:将复数由极坐标形式转化为平面坐标形式,本单元主要由圆周旋转模式cordic(cordic_c_r)完成计算。控制单元:读取配置信息n,通过循环状态机结构调用各个计算单元,控制求复数n次开根号的硬件计算系统的整体运算流程。所述的基于cordic方法求复数的n次开根号的硬件计算系统,其进一步设计在于:其求复数的n次开根号的计算原理如下:对于任意复数有:z=p jq=ρcosθ jρsinθ=ρej(2kπ θ)其中:故求复数的1/n次幂:可理解为取模的1/n次幂,同时相位角度加上2kπ后分成n等份。之后可做计算:该系统为了简便计算过程,只求当k=0时的值,其他情况以此类推。其中可由如下等式计算得出:在进一步的实施例中,硬件计算系统输入如下3个变量:待求复数的实数部p_in;待求复数的虚数部q_in;n次开根号中的n;并输出如下2个变量:求得复数的实数部p_out;求得复数的虚数部q_out。一种基于cordic方法求复数的n次开根号的硬件计算方法,包括如下步骤:步骤1、输入配置信息n,输入所需计算的实数部p_in,虚数部q_in;步骤2、配置平面坐标转化极坐标计算单元内的cordic_c_v的初始输入;步骤3、计算输入复数模长的模长和相角;步骤4、将模长计算单元和相角计算单元的输出传给极坐标转化平面坐标计算单元、并向外部输出计算结果。在进一步的实施例中,步骤2包括配置平面坐标转化极坐标计算单元内的cordic_c_v的初始输入,即x10,y10,z10分别设为p_in,q_in,0;根据输出值x1n,y1n,z1n将输入的复数转化成极坐标的表示方式。在进一步的实施例中,步骤3包括:步骤3-1、将平面坐标转化极坐标计算单元的模长输出x1n,传给模长计算单元,先后配置该单元内的cordic_h_v的初始输入x20,y20,z20分别为x1n 1,x1n-1,0,其输出为x2n,y2n,z2n;cordic_l_v的初始输入x30,y30,z30分别为n,z2n*2 ln(p),0,其输出为x3n,y3n,z3n;cordic_h_r的初始输入x40,y40,z40分别为z3n-ln(k),其输出为x4n,y4n,z4n,最终求得的y4n为复数的模ρ的1/n次幂,即步骤3-2、将平面坐标转化极坐标计算单元的相角输出z1n传给相角计算单元,复用模长计算单元中的cordic_l_v,配置此cordic_l_v的初始输入x50,y50,z50分别为n,z1n,0,其输出为x5n,y5n,z5n,最终求得至此,完成整个步骤3之后得到待求复数的n次开根号的极坐标表达形式在进一步的实施例中,步骤4包括:将模长计算单元和相角计算单元的输出传给极坐标转化平面坐标计算单元,配置该单元内部的cordic_c_r的初始输入x60,y60,z60分别为,y4n,0,z5n,其输出为x6n,y6n,z6n,此单元将得到的极坐标表达形式的结果转化为平面坐标形式并向外部输出计算结果。在进一步的实施例中,计算中出现的tanh-1(2-i),tan-1(2-i),常量,用查找表将这些值预先存储后查找。有益效果:本发明实现了一种基于cordic方法求复数的n次开根号的硬件计算系统,采用定点型数据格式,有效地通过拓展所使用的cordic计算单元的收敛域来扩展输入范围,其次可以灵活地调节计算精度。在硬件实现中只需通过移位和加减法操作,可在低面积消耗下完成任意复数n次开根号的硬件计算,在信号处理与无线通信等领域中具有广泛的应用。附图说明图1是本发明的基于cordic方法求复数的n次开根号的硬件计算系统的模块示意图。图2是本系统的工作流程示意图。图3是本系统的正向迭代次数与计算精度的仿真图。具体实施方式在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。计算系统需要的各cordic模型的输出与输入的关系如下:设各模型的输入为x,y,z,则输出如下:coric_c_r:xn=k(x·cosz-y·sinz)yn=k(y·cosz x·sinz)zn=0coric_c_v:yn=0coric_l_v:xn=xyn=0coric_h_r:xn=k*(x·coshz-y·sinhz)yn=k*(y·coshz x·sinhz)zn=0coric_h_v:yn=0而对于求复数的n次开根号的计算来讲,若采用其他方法则会需要大量计算与大量消耗,另外如果不对cordic算法进行拓展收敛域,那会导致限制输入复数的范围从而限制应用。而使用本发明提出的基于cordic方法,在宽收敛域下,用低面积消耗满足了更大范围输入求n次开根号,可适应更多实际应用场景,可见本发明具有一定的借鉴意义和应用前景。本实例所述的基于cordic方法求复数的n次开根号的硬件计算系统,其主要包括:平面坐标转化极坐标计算单元,模长计算单元,相角计算单元,极坐标转化平面坐标计算单元和控制单元五个单元,如图1所示。平面坐标转化极坐标计算单元:将输入复数由平面坐标形式转化为极坐标形式,得到输入复数的模长ρ和相角θ,本单元主要通过圆周向量模式cordic(cordic_c_v)完成计算。模长计算单元:求输入复数的模长ρ的次幂,即本单元主要由双曲向量模式cordic(cordic_h_v)、线性向量模式cordic(cordic_l_v)和双曲旋转模式cordic(cordic_h_r)完成计算。相角计算单元:求相角的即本单元主要由线性向量模式cordic(cordic_l_v)完成计算。极坐标转化平面坐标计算单元:将复数由极坐标形式转化为平面坐标形式,本单元主要由圆周旋转模式cordic(cordic_c_r)完成计算。控制单元:读取配置信息n,通过循环状态机结构调用各个计算单元,控制求复数n次开根号的硬件计算系统的整体运算流程。该基于cordic方法求复数的n次开根号的硬件计算系统,其计算原理如下:对于任意复数有:z=p jq=ρcosθ jρsinθ=ρej(2kπ θ)其中:故求复数的1/n次幂:可理解为取模的1/n次幂,同时相位角度加上2kπ后分成n等份。之后可做计算:该系统为了简便计算过程,只求当k=0时的值,其他情况以此类推。其中可由如下等式计算得出:而利用cordic计算方法只需用简单的加法和移位计算就能完成对数运算,除法运算,指数运算等复杂运算的特点,完成该系统的低消耗计算过程。该基于cordic方法求复数的n次开根号的硬件计算系统,其输入有3个变量:一个是待求复数的实数部p_in,另一个是待求复数的虚数部q_in,还有n次开根号中的n。其输出有两个变量:一个是求得复数的实数部p_out,另一个是求得复数的虚数部q_out。本实例所述的基于cordic方法求复数的n次开根号的硬件计算系统,其具体实现流程图如图2所示,具体步骤如下:步骤1)输入配置信息n,输入所需计算的实数部p_in,虚数部q_in。步骤2)配置平面坐标转化极坐标单元中的cordic_c_v的初始输入,即x10,y10,z10,可根据输出值将输入的复数转化成极坐标的表示方式。配置:x10=p,y10=q,z10=0得到输出:y1n=0,其中k为圆周模式中的尺寸收缩因子。步骤3-1)根据步骤2的输出,先后配置模长计算单元中的cordic_h_v的初始输入x20,y20,z20,cordic_l_v的初始输入x30,y30,z30,cordic_h_r的初始输入x40,y40,z40,可根据cordic_h_r的输出值,得到复数的模ρ的1/n次幂。配置:x20=kρ 1,y20=kρ-1,z20=0得到输出:先将所得到的z2n减去后左移1位得到ln(ρ)。配置:x30=n,y30=ln(ρ),z30=0得到:z3n=ln(ρ)/n先查表得到用一个加法器将z3n与之相加后得到配置:得到:其中k*为双曲系统中的尺寸收缩因子。步骤3-2)配置相角计算单元cordic_l_v的初始输入x50,y50,z50,求得可根据输出值,得到所给复数的n次开根号的极坐标表达形式配置:x50=n,y50=θ,z50=0得到:步骤4)配置极坐标转化平面坐标单元中的cordic_c_r的输入x60,y60,z60,可根据输出值,得到的极坐标表达形式的结果转化为平面坐标形式并向外部输出计算结果。配置:y60=0,z60=θ0得到:本实例所述的基于cordic方法求复数的n次开根号的硬件计算系统,其拓展收敛域的方法如下:cordic_h_v计算单元,将原本的i=0,1,2,…,n拓展为i=-m,-m 1,…,0,1,2,…,n,同时表达式需要由原本的2-i改变为1-2-2-i 1,i≤0。对应有迭代公式:xi 1=xi-sign(yi)(1-2-2-i 1)yiyi 1=yi-sign(yi)(1-2-2-i 1)xizi 1=zi sign(yi)tanh-1(1-2-2-i 1)此时的hv对应的k*的表达式要更新为cordic_h_r计算单元,将原本的i=0,1,2,…,n拓展为i=-2,-1,0,1,2,…,n,同时表达式需要由原本的2-i改变为1-2-2-i 1,i≤0。对应有迭代公式:xi 1=xi sign(zi)(1-2-2-i 1)yiyi 1=yi sign(zi)(1-2-2-i 1)xizi 1=zi-sign(zi)tanh-1(1-2-2-i 1)此时的hv对应的k*的表达式要更新为cordic_l_v计算单元,将原本的i=0,1,2,…,n,拓展为i=-2,-1,0,1,2,…,ncordic_c_r计算单元,将原本的i=0,1,2,…,n,拓展为i=-2,-1,0,1,2,…,n,并且迭代表达式不变。cordic_c_v计算单元,将原本的i=0,1,2,…,n,拓展为i=-2,-1,0,1,2,…,n,并且迭代表达式不变。计算中出现的tanh-1(2-i),tan-1(2-i),等,用查找表法在算法中实预先存储后查找。上述特例在matlab中,分别对n=2,3,4进行仿真,对输入复数的实数部与虚数部在[-100,100]随机取点,重复取10000次,仿真精度结果与正向迭代次数的关系如图3,利用verilog硬件描述语言对其编码,取两种情况进行验证,硬件计算中采用31位定点数,其中1位符号位,10位整数位,20位小数位,验证情况如表1所示。在台积电27nm工艺库下综合,可得到如表2所示的性能指标。表1:精确度验证情况表情况输入开根号次数nmatlab仿真精度verilog实现精度情况12 3i24.4317×10-57.9186×10-5情况2-3 2i34.5198×10-59.6117×10-5表2:综合的性能指标表频率面积功耗1ghz6275.3um22.6176mw1.5ghz6561.2um23.9549mw综上所述,本实施例的基于cordic方法求复数的n次开根号的硬件计算系统,通过拓展所使用的cordic计算单元的收敛域来扩展输入范围,从图3可以看出,可以灵活地调节计算精度。在硬件实现中只需通过移位和加减法操作,可在低面积消耗下完成任意复数n次开根号的硬件计算,其具有低计算复杂度、低硬件开销及高硬件利用率,同时显示了对于实际应用的巨大潜力。如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上做出各种变化。当前第1页1 2 3 
    技术特征:

    1.一种基于cordic方法求复数的n次开根号的硬件计算系统,其特征在于,包括:

    用于将输入复数由平面坐标形式转化为极坐标形式的平面坐标转化极坐标计算单元;

    用于计算输入复数模长的模长计算单元;

    用于计算输入复数相角的相角计算单元;

    通过循环状态机结构调用各个计算单元的控制单元。

    2.根据权利要求1所述的一种基于cordic方法求复数的n次开根号的硬件计算系统,其特征在于:

    所述平面坐标转化极坐标计算单元将输入复数由平面坐标形式转化为极坐标形式,得到输入复数的模长ρ和相角θ,通过圆周向量模式完成计算;

    所述模长计算单元进一步用于求输入复数的模长ρ的次幂:由双曲向量模式、线性向量模式和双曲旋转模式完成计算;

    所述相角计算单元进一步用于求相角的由线性向量模式完成计算;

    所述极坐标转化平面坐标计算单元进一步用于将复数由极坐标形式转化为平面坐标形式,由圆周旋转模式完成计算;

    所述控制单元进一步用于读取配置信息n,通过循环状态机结构调用各个计算单元,控制求复数n次开根号的硬件计算系统的整体运算流程。

    3.根据权利要求1所述的一种基于cordic方法求复数的n次开根号的硬件计算系统,其特征在于,硬件计算系统输入如下3个变量:待求复数的实数部p_in;待求复数的虚数部q_in;n次开根号中的n;并输出如下2个变量:求得复数的实数部p_out;求得复数的虚数部q_out。

    4.一种基于cordic方法求复数的n次开根号的硬件计算方法,其特征在于,包括如下步骤:

    步骤1、输入配置信息n,输入所需计算的实数部p_in,虚数部q_in;

    步骤2、配置平面坐标转化极坐标计算单元内的cordic_c_v的初始输入;

    步骤3、计算输入复数模长的模长和相角;

    步骤4、将模长计算单元和相角计算单元的输出传给极坐标转化平面坐标计算单元、并向外部输出计算结果。

    5.根据权利要求4所述的一种基于cordic方法求复数的n次开根号的硬件计算系统,其特征在于,步骤2中进一步包括配置平面坐标转化极坐标计算单元内的cordic_c_v的初始输入,即x10,y11,z10分别设为p_in,q_in,0;根据输出值x1n,y1n,z1n将输入的复数转化成极坐标的表示方式。

    6.根据权利要求4所述的一种基于cordic方法求复数的n次开根号的硬件计算系统,其特征在于,步骤3进一步包括:

    步骤3-1、将平面坐标转化极坐标计算单元的模长输出x1n,传给模长计算单元,先后配置该单元内的cordic_h_v的初始输入x20,y20,z20分别为x1n 1,x1n-1,0,其输出为x2n,y2n,z2n;cordic_l_v的初始输入x30,y30,z30分别为n,z2n*2 ln(p),0,其输出为x3n,y3n,z3n;cordic_h_r的初始输入x40,y40,z40分别为z3n-ln(k),其输出为x4n,y4n,z4n,最终求得的y4n为复数的模ρ的1/n次幂,即

    步骤3-2、将平面坐标转化极坐标计算单元的相角输出z1n传给相角计算单元,复用模长计算单元中的cordic_l_v,配置此cordic_l_v的初始输入x50,y50,z50分别为n,z1n,0,其输出为x5n,y5n,z5n,最终求得至此,完成整个步骤3之后得到待求复数的n次开根号的极坐标表达形式

    7.根据权利要求4所述的一种基于cordic方法求复数的n次开根号的硬件计算系统,其特征在于,步骤4进一步包括:将模长计算单元和相角计算单元的输出传给极坐标转化平面坐标计算单元,配置该单元内部的cordic_c_r的初始输入x60,y60,z60分别为,y4n,0,z5n,其输出为x6n,y6n,z6n,此单元将得到的极坐标表达形式的结果转化为平面坐标形式并向外部输出计算结果。

    8.根据权利要求4所述的一种基于cordic方法求复数的n次开根号的硬件计算系统,其特征在于,计算中出现的tanh-1(2-i),tan-1(2-i),常量,用查找表将这些值预先存储后查找。

    技术总结
    本发明提出一种基于CORDIC方法求复数的N次开根号的硬件计算系统及其计算方法,该系统包括:控制单元使用状态机的方式控制整个系统的运算流程;平面坐标转化极坐标计算单元,用以将待求复数由平面坐标形式转化为极坐标形式;模长计算单元,用以计算待求复数的极坐标形式中的模长的N次开根号;相角计算单元,用以计算待求复数的极坐标形式中的相角的N分之一;极坐标转化平面坐标计算单元,用以将所求得的复数由极坐标形式转化为平面坐标形式并输出。该系统有效地通过拓展所使用的CORDIC计算单元的收敛域来扩展输入范围,其次可以通过调整正向迭代次数灵活地调节计算精度。在信号处理与无线通信等领域中具有广泛的应用。

    技术研发人员:李丽;武瑞琪;傅玉祥;陈辉;何书专;何国强
    受保护的技术使用者:南京大学
    技术研发日:2020.11.27
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23504.html

    最新回复(0)