一种求解复数n次方根的装置和方法

文档序号:378157 发布日期:2021-12-10 浏览:12次 >En<

阅读说明:本技术 一种求解复数n次方根的装置和方法 (Device and method for solving complex number N-degree square root ) 是由 李丽 徐瑾 傅玉祥 陈辉 蒋林 武瑞琪 何书专 陈健 于 2021-09-27 设计创作,主要内容包括:本发明公开一种求解复数N次方根的装置和方法,涉及复数N次方根运算技术领域。针对现有技术中复数N次方根计算过程复杂,效率低等问题,本发明构建CORDIC模块进行计算,CORDIC模块采用流水线架构,可同时进行多次迭代,利用复数N次方根N个根求解过程的相似性共享计算资源降低计算复杂度,并行执行结果处理单元的计算,降低计算成本,提高计算效率和计算精度,硬件装置复杂度低,可支持10~(-8)到10~(4)范围内的输入,相对误差数量级可达10~(-6)。(The invention discloses a device and a method for solving a complex number N-th square root, and relates to the technical field of complex number N-th square root operation. Aiming at the problems of complex computation process of a plurality of N square roots, low efficiency and the like in the prior art, the CORDIC module is constructed for computation, the CORDIC module adopts a pipeline architecture and can carry out iteration for multiple times at the same time, the similarity of the complex N square roots and the N roots in the solving process is used for sharing computing resources, the computation complexity is reduced, the computation of a result processing unit is executed in parallel, the computation cost is reduced, the computation efficiency and the computation precision are improved, the complexity of a hardware device is low, and 10 can be supported ‑8 To 10 4 Input in the range, the relative error can reach 10 orders of magnitude ‑6 。)

一种求解复数N次方根的装置和方法

技术领域

本发明涉及复数N次方根运算技术领域,更具体地说,涉及一种求解复数N次方根的装置和方法。

背景技术

复数运算是电路计算的核心部分,广泛应用于通信系统和信号处理领域,用于实时数据表示和系统建模;N次方根运算是复杂函数理论的重要组成部分,在多项式计算、矩阵计算、三角函数等计算中,适时引入N次方根运算可以简化计算过程。然而复数N次方根运算,因其根个数的不确定性以及复数运算的复杂性而具有很高的复杂性,大多数N次方根运算研究都集中在实数上,或者通常由软件来实现复数N次方根运算。然而,通过软件实现常采用各类算法混合运算,而非专用算法来保证准确可靠的计算,过程多存在冗余,且在实时工作中表现不佳。

另一种方法是通过专用集成电路(ASIC)硬件加速N次方根运算,以实现高计算性能。但是目前只有少数工作与复数平方根的硬件实现相关,随着高阶根在大气模型、辐射等领域被广泛运用,仅平方根运算已无法满足应用需求;而在具体的硬件实现中,与N相关联常数消耗的资源与N的范围成正比,在实际应用中,最常用的N值为2到10的整数。

坐标旋转数字计算机(CORDIC)可以通过简单的移位和加法运算有效地计算三角函数、指数函数和对数函数等超越函数,可以实现较高的计算速度,并且在精度和面积之间有较好的权衡,实现低成本。为此,本发明提出了一种基于CORDIC的低复杂度硬件解决方案,用于计算复数的2到10次方根,实现高计算效率的同时降低硬件实现复杂度。

因为结果的数量不确定,N次方根计算一直是一个具有挑战性的课题,因此大多数硬件实现都侧重于实数N次方根或仅仅是二次方根计算。申请号为CN202011357034.8的中国专利申请,公开日2021年03月12日,公开了一种基于CORDIC方法求复数的N次开根号的计算方法,该方法是本发明申请人的前期工作成果,虽可实现任意阶N次方根计算,但只能根据N的值,串行计算出每一个输入复数的N次方根,每次只计算出N个结果中的1个,然而复数N次方根计算有N个结果,当N值较大时,电路的复杂性将随着N值的增大而迅速增加,因此该方法的计算效率和灵活性不够。

发明内容

1.要解决的技术问题

针对现有技术中复数N次方根计算过程复杂,效率低等问题,本发明提供一种求解复数N次方根的装置和方法,采用流水线架构,利用复数N次方根N个根求解过程的相似性共享计算资源,降低计算成本。

2.技术方案

本发明的目的通过以下技术方案实现。

一种求解复数N次方根的装置,复数表示为z=a+b*i,装置包括CORDIC计算模块和结果处理单元,输入数据a、b经过CORDIC模块计算后输入结果处理单元计算,得到计算结果。

更进一步的,所述CORDIC模块包括第一坐标转换单元、模长计算单元、相角计算单元和第二坐标转换单元,第一坐标转换单元包括圆周向量计算单元;模长计算单元包括第一线性向量计算单元、双曲线向量计算单元和双曲线旋转计算单元;相角计算单元包括第二线性向量计算单元;第二坐标转换单元包括圆周旋转计算单元;

输入数据输入第一坐标转换单元,从平面坐标形式转换为极坐标形式,转换坐标后数据分别通过模长计算单元和相角计算单元计算,输入第二坐标转换单元将极坐标形式转换为平面坐标形式;所述系统使用流水线架构。

更进一步的,CORDIC模块的收敛次数为X,x为大于零的整数;通过x级流水线架构对CORDIC模块进行X次迭代以完成结果收敛。

更进一步的,迭代次数包括用于决定计算精度的正迭代次数,和用于扩大计算收敛范围的负迭代次数。

更进一步的,所述装置还包括查找表,用于存储与N相关的常数值。对于计算中的常数,预先计算好存储在查找表中,可以避免复杂的硬件计算。

更进一步的,所述结果处理单元包括若干个并行的子计算单元,根据处理单元输入整数N的不同,动态激活结果处理单元中不同的子计算单元,并行完成N个根的计算。

更进一步的,所述子计算单元使用三角函数二角和差公式,计算的实部和虚部。的实部和虚部表达式为:

更进一步的,所述子计算单元包括乘法器、加法器和减法器,第一乘法器和第三乘法器的输出端与加法器的输入端连接,计算输出的虚部;第二乘法器和第四乘法器的输出端与减法器的输入端连接,计算输出的实部。

一种求解复数N次方根的方法,使用所述一种求解复数N次方根的装置,所述复数的表示为z=a+b*i,输入数据a、b通过流水架构在CORDIC模块进行X次迭代完成结果收敛,X为大于零的整数;CORDIC模块计算结果传输至结果处理单元计算进行并行计算,得到计算结果。

更进一步的,N为大于等于二,小于等于十的整数。

本发明创新性地使用高效的并行结果处理单元,利用复数N次方根N个根求解过程的相似性来降低计算复杂度,并采用流水线架构,可动态支持复数的2到10次方根的计算,节省存储资源,克服了N次方根计算复杂度高,计算时间长的问题。

3.有益效果

相比于现有技术,本发明采用流水线架构,可同时计算多个迭代过程,提高吞吐率;在计算过程中通过提前计算与N相关的常数值并存储在查找表中,并根据不同整数N灵活取出对应的常数,进一步降低硬件开销,节省存储资源。

本发明利用复数N次方根N个根求解过程的相似性来共享计算资源,降低高阶N次方根的硬件实现复杂度;利用CORDIC特性,通过简单的移位和加法运算来求解。根据输入整数N的不同,动态激活不同的结果处理单元,并行计算N个结果,保证灵活性的同时,有效地提高输入范围、吞吐率和灵活性,降低硬件实现复杂度和资源消耗。

本发明扩大了计算收敛范围,软件仿真可支持10-8到104范围内的输入,相对误差数量级可达10-6,支持范围广且计算精度高。

附图说明

图1是本发明的硬件架构示意图;

图2是本发明的并行结果处理单元架构示意图;

图3是本发明中CV-CORDIC模块的23级流水线架构示意图;

图4是本发明中平均相对误差、整数N值和正迭代次数P的仿真关系图。

具体实施方式

下面结合说明书附图和具体的实施例,对本发明作详细描述。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。

实施例

本实施例硬件装置如图1所示,系统输入复数z的实部a和虚部b,经过CORDIC模块,如图所示,CORDIC模块包括第一坐标转换单元、模长计算单元、相角计算单元和第二坐标转换单元,第一坐标转换单元包括圆周向量计算单元;模长计算单元包括第一线性向量计算单元、双曲线向量计算单元和双曲线旋转计算单元;相角计算单元包括第二线性向量计算单元;第二坐标转换单元包括圆周旋转计算单元;

输入数据输入第一坐标转换单元,从平面坐标形式转换为极坐标形式,转换坐标后数据分别通过模长计算单元和相角计算单元计算,输入第二坐标转换单元将极坐标形式转换为平面坐标形式发送至结果处理单元;所述系统使用流水线架构实现高速全流水计算。

结果处理单元使用三角函数二角和差公式,进行移位和加法运算,计算的实部和虚部。结果处理单元包括若干个并行的子计算单元,根据处理单元输入整数N的不同,动态激活结果处理单元中不同的子计算单元,并行完成N个根的计算。

高阶N次方根有N个根,随着N的增加,电路的复杂度会迅速增加。以N=10为例,若用10路计算资源并行计算10个结果,硬件开销是原来的10倍;若串行计算10个根,会消耗大量计算时间。为了降低高阶第N个根的复杂度,本实施例利用N个根求解过程中的相似性来共享计算资源,最终连接并行结果处理单元并行处理,降低高阶N次方根的硬件实现复杂度。

本实施例使用三种坐标系共五种CORDIC算法计算复数的N次方根,每个坐标系都包含旋转和向量两种模式,广义CORDIC公式如下:

xk+1=xk-μdk(2-kyk)

yk+1=yk+dk(2-kxk)

zk+1=zk-dkek

其中k代表当前迭代次数,dk代表判决算子,dk的值由CORDIC的工作模式决定,在旋转模式下,dk=sign(zk);在向量模式下,dk=sign(xkyk)。除此之外,当使用不同的坐标系来描述CORDIC方程时,μ和ek的值如下面的公式所示:

上式中,circlar表示圆形坐标系,linear表示线性坐标系,hyperbolic表示双曲线性坐标系。一般情况下,k从0开始,每次迭代k值自增1,也可通过负向扩展,即k从负值开始,来扩大计算范围;双曲坐标系的一个例外是当k=4,13,40这些固定特殊数值时,迭代需要重复一次以确保收敛。

本实施例对每个CORDIC算子进行23次迭代以完成结果收敛,理论上在不考虑精度的情况下,本系统迭代次数可为任意值,本实施例以23次为例,是根据软件仿真得到迭代23次可实现较高的精度。选择最大正迭代的数为20,这时相对误差数量级可达10-6,足以满足良好精度的要求;同时,负迭代的最大索引为-2,可以扩展输入范围至10-8到104,满足通用数据的N次方根运算。经过23次迭代,CORDIC方程将收敛到表1所示的值。

表1 CORDIC三种坐标系,两种模式的输出收敛值

表1中,χ和λ是缩放因子,用于校正结果,对于圆形坐标系,对于双曲坐标系,由于迭代次数已知,所以这些缩放因子都是常数,可通过软件预先计算并存储在查找表中,以避免复杂的硬件计算。

根据表1,使用圆周向量计算单元、双曲线向量计算单元、第一线性向量计算单元、双曲线旋转计算单元、第二线性向量计算单元和圆周旋转计算单元计算复数z=m+j*n的N次方根,其中圆周向量计算单元的计算结果需经过多级缓冲单元后再将数据送第二线性向量计算单元,以保证和双曲线旋转计算单元同步,各CORIDC计算单元的连接方式与输入输出值如图1所示,在结果处理单元通过移位和加法运算来最终输出的实部和虚部。

z的指数形式为ρej(2dπ+θ),通过指数形式求解复数z的N次方根;则:

其中d=0,1,...,N-1;当m≥0时,当m<0,n≥0时,当m<0,n<0时,

根据N个不同的d值,有N个根;当d值确定,是常数,被提前存储在查找表中,并根据2到10之间的不同整数N灵活取出对应的常数,以节省硬件计算时间。

如图2所示,结果处理单元包括乘法器、加法器和减法器,第一乘法器和第三乘法器的输出端与加法器的输入端连接,计算输出的虚部;第二乘法器和第四乘法器的输出端与减法器的输入端连接,计算输出的实部。结果处理单元采用并行结构,在并行结果处理单元中使用三角函数二角和差公式,计算的实部和虚部

每个时钟周期输入的整数N值可在2到10之间动态变化,并行结果处理单元根据输入整数N的不同,动态激活结果处理单元中不同的result单元,以并行完成N个根的计算,如图2所示,此时N=3,在结果处理单元中激活result1至result3单元,同时计算3个根。

图3是本发明中CV-CORDIC模块的23级流水线架构图,其他CORDIC模块算子的架构与之类似。前三次反向迭代过程中,k=0、0、0,此时的迭代公式为:

xk+1=xk-sign(yk)*yk

yk+1=yk+sign(yk)*xk

zk+1=zk-sign(yk)*tan-1 (1)

后二十次正向迭代过程中,k=1,2,...,20,此时迭代公式为:

xk+1=xk-sign(yk)*yk*2-k

yk+1=yk+sign(yk)*xk*2-k

zk+1=zk-sign(yk)*tan-1(2-k)

其中tan-1(1)和tan-1(2-k)的值存储于查找表中。本实施例对每个CORDIC模块算子进行23次迭代以完成结果收敛,迭代次数与流水线级别相匹配,最终可完成2至10次方根计算的高吞吐量定点实现。通过软件仿真证实,选择正迭代的最大数为20足以满足良好精度的要求,同时,负迭代的最大索引为-2,对于三个坐标系,负扩展方法略有不同,具体的:

(a)对于圆形坐标系CORDIC算法,由k=0,0,0,1,...,20给出的序列已被检验为比k=-2,-1,0,1,...,20更好的序列;

(b)对于线性坐标系CORDIC算法,将迭代索引集扩展为k=-2,-1,0,1,...,20,如图3示;

(c)对于双曲线坐标系CORDIC算法,如线性坐标系CORDIC算法一样,将迭代索引集扩展为k=-2,-1,0,1,...,20,与线性坐标系CORDIC算法不同之处在于,双曲线坐标系CORDIC算法中,负迭代具有独立于正迭代运算的迭代公式。

本实施例通过负向迭代扩展复数输入范围,并通过MATLAB进行10000个数据的仿真计算,在本实施例中,正迭代次数决定了精度,负迭代用于扩大收敛范围,具有很大的灵活性。

假设最大负迭代次数为-2,最大正迭代次数为P,在此基础上,在实验中探索平均相对误差与整数N值以及正迭代次数P之间的关系。

整数N支持2到10的值,当P从15到20变化时,得到如图4所示平均相对误差、整数N值和正迭代次数P的仿真关系图,当P=20时,平均相对误差可以达到1.38*10-6,可支持10-8到104的输入范围。

本实施例使用Verilog HDL语言进行建模,并基于10000个测试数据进行硬件仿真,平均相对误差为2.9578*10-6。以N=10为例,通过硬件实现合成采用TSMC 28nm CMOS工艺的示例电路,表2是本实施例与现有技术的综合结果与性能对比表。

表2

工艺 架构 频率 面积(μm<sup>2</sup>) 计算延迟 精度
前期工作1 28nm 非流水线架构 1.5GHz 6561 170.9ns 9.6117*10<sup>-5</sup>
前期工作2 28nm 流水线架构 2.218GHz 67964.17 4.50ns 2.9660*10<sup>-6</sup>
本发明工作 28nm 流水线架构 2.218GHz 68070.87 0.451ns 2.9578*10<sup>-6</sup>

前期工作1为背景技术中引用专利,为申请人前期工作成果,该方法工作频率为1.5GHz,未采用流水线架构,只能根据N的值,串行计算出每一个输入复数的N次方根,且每次只计算出N个结果中的1个,以N=10为例,计算一个复数的10次方根需255个时钟周期,需170.9ns。

前期工作2为在前期工作1的基础上,添加流水线架构,工作频率为2.218GHz,以N=10为例,每次只计算出10个根中的1,则计算一个复数的10次方根需10个时钟周期,需4.5ns。

本实施例在前期工作2的基础上,设计并行结果处理单元,并利用复数N次方根N个根求解过程的相似性来降低计算复杂度,以N=i0为例,经过较早的计算,计算一个复数的10次方根仅需1个时钟周期,需0.45ns;

通过表2的综合结果,本实施例的电路复杂度只比前期工作2增加了0.157%,计算速度却提高了10倍。而相较于前期工作1,本实施例系统的计算效率最大可提升379倍,硬件实现精度也有1个数量级的提升。

综上所述,本发明提供一种动态支持复数2到10次方根运算的低硬件复杂度架构,该架构使用圆形、线性和双曲线三种CORDIC系统构建硬件高效的算法。扩大了收敛范围,软件仿真可支持10-8到104的输入范围,达到10-6的相对误差,支持范围广且精度高;采用流水线架构,可实现高速全流水计算;利用复数N次方根N个根求解过程的相似性来降低计算复杂度;可动态支持复数的2到10次方根的计算,具有高效率,高精度,低硬件复杂度的特点。

以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不背离本发明的精神或者基本特征的情况下,可对其在形式上和细节上做出各种变化,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本申请的保护范围。本申请陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于CORDIC的低复杂度硬件系统和应用方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类