一种基于cordic的低复杂度硬件系统和应用方法

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

阅读说明:本技术 一种基于cordic的低复杂度硬件系统和应用方法 (CORDIC-based low-complexity hardware system and application method ) 是由 李丽 徐瑾 傅玉祥 陈辉 蒋林 武瑞琪 何书专 陈健 于 2021-09-27 设计创作,主要内容包括:本发明公开一种基于CORDIC的低复杂度硬件系统和应用方法,针对现有技术中软件实现复数N次方根运算的耗时长效率低,硬件实现复数N次方根过程复杂且结果数量不确定的问题,本发明使用圆形、线性和双曲线三种CORDIC模块算子构建,使用高效的并行结果处理单元,并扩大计算收敛范围,软件仿真可支持10~(-8)到10~(4)范围内的输入,相对误差数量级可达10~(-6),支持范围广且精度高;本发明采用流水线架构,可实现高速全流水计算;利用复数N次方根N个根求解过程的相似性来降低计算复杂度;可动态支持复数的2到10次方根的计算;具有高效率,高精度,低硬件复杂度的特点。(The invention discloses a low-complexity hardware system and an application method based on CORDIC (coordinated rotation digital computer), aiming at the problems that in the prior art, the time-consuming long-term efficiency of realizing complex N-th square root operation by software is low, the process of realizing the complex N-th square root by hardware is complex, and the result number is uncertain, the invention uses three CORDIC module operators of circle, linear and hyperbolic curve to construct, uses a high-efficiency parallel result processing unit, enlarges the calculation convergence range, and software simulation can support 10 ‑8 To 10 4 Input in the range, the relative error can reach 10 orders of magnitude ‑6 The support range is wide and the precision is high; the invention adopts a pipeline architecture, and can realize high-speed full-flow calculation; reducing the computational complexity by utilizing the similarity of a complex number N times of square root N root solving processes; the calculation of a complex number of square roots of 2 to 10 times can be dynamically supported; the method has the characteristics of high efficiency, high precision and low hardware complexity.)

一种基于CORDIC的低复杂度硬件系统和应用方法

技术领域

本发明涉及复数N次方根运算技术领域,更具体地说,涉及一种基于CORDIC的低复杂度硬件系统和应用方法。

背景技术

复数运算是电路计算的核心部分,广泛应用于通信系统和信号处理领域,用于实时数据表示和系统建模;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次方根过程复杂且结果数量不确定的问题,本发明提供一种基于CORDIC的低复杂度硬件系统和应用方法,采用流水线架构,利用复数N次方根N个根求解过程的相似性来降低计算成本,具有支持范围广、高效率、高精度和低硬件复杂度的特点。

2.技术方案

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

一种基于CORDIC的低复杂度硬件系统,包括圆周向量模式CV-CORIDC模块,圆周旋转模式CR-CORDIC模块,第一线性向量模式LV1-CORDIC模块,第二线性向量模式LV2-CORDIC模块,双曲线向量模式HV-CORDIC模块、双曲线旋转模式HR-CORDIC模块和结果处理单元;

系统的输入数据输入CV-CORIDC模块的输入端,CV-CORIDC模块的输出端与HV-CORDIC模块的输入端和LV2-CORDIC模块的输入端均连接,HV-CORDIC模块的输出端连接LV1-CORDIC模块的输入端,LV1-CORDIC模块的输出端连接HR-CORDIC模块的输入端,HR-CORDIC模块的输出端和LV2-CORDIC模块的输出端均连接CR-CORDIC模块的输入端,CR-CORDIC模块的输出端连接结果处理单元的输入端,结果处理单元输出计算结果。

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

进一步的,所述系统使用流水线架构。

进一步的,所述结果处理单元包括若干个并行的result单元。

本发明使用圆形、线性和双曲线三种CORDIC模块以及并行结果处理单元来构建高效率的硬件实现方式;本发明采用流水线架构,可实现高速全流水计算。

一种复数2到10次方根运算方法,使用所述的一种基于CORDIC的低复杂度硬件系统;复数z的表达式为:z=m+j*n,通过复数的指数形式计算复数z的N次方根。N为大于等于2小于等于10的整数。

具体的:其中d=0,1,…,N-1;当m≥0时,当m<0,n≥0时,当m<0,n<0时,

进一步的,结果处理单元通过移位和加法运算,通过三角函数的二角和差公式,得到的实部和虚部。系统输入复数z的实部m和虚部n,经过结算计算单元计算得到的实部和虚部

进一步的,根据N个不同的d值,有N个根,d=0,1,…,N-1;当d值确定,是常数,被提前计算并存储于查找表中。

进一步的,每个时钟周期输入的整数N值在2到10之间动态变化,结果处理单元根据输入整数N的不同,动态激活不同的result单元,并行完成N个根的计算。本发明可动态支持复数的2到10次方根的计算,最高可达10路并行计算。

进一步的,本发明创新性地使用高效的并行结果处理单元,利用N个根求解过程中的相似性来共享计算资源CORDIC模块,降低高阶N次方根的硬件实现复杂度。CORDIC模块的计算结果输出至并行的结果处理单元,实现硬件复杂度的降低。克服了N次方根计算复杂度高,计算时间长的问题。

进一步的,通过X级流水线架构对每个CORDIC模块进行X次迭代以完成结果收敛,迭代次数包括用于决定计算精度的正迭代次数,和用于扩大计算收敛范围的负迭代次数,X为大于零的整数。本发明根据仿真结果,选择精度较高的23次迭代,通过23级流水线架构对每个CORDIC模块进行23次迭代以完成结果收敛,最大负迭代次数为-2,最大正迭代次数为20,其中正迭代次数决定了精度,负迭代用于扩大计算收敛范围,对于三个坐标系,负扩展方法略有不同:

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

(b)对于线性CORDIC算法,我们将迭代索引集扩展为k=-2,-1,0,1,...,20;

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

本发明采用流水线架构,可同时计算多个迭代过程,提高吞吐率,以复数10次方根运算为例,经过较早的计算,它可以在一个时钟周期内计算出10个根。

进一步的,计算与N相关的常数值存储在查找表中,根据2到10之间的不同整数N获取对应的计算值。在计算过程中通过提前计算如等与N相关的常数值存储在查找表中,这些常数会在每次迭代中被相应读取,以节省硬件计算时间,降低硬件开销,实现灵活计算。

3.有益效果

相比于现有技术,本发明一种基于CORDIC的低复杂度硬件系统,公开一种动态支持复数2到10次方根运算的架构,可以有效地提高输入范围、吞吐率和灵活性,降低硬件实现复杂度和资源消耗,具体表现在:

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

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

(3)本发明每个时钟周期输入的整数N值可在2到10之间动态变化,根据输入整数N的不同,动态激活不同的结果处理单元,并行计算N个结果,保证灵活性的同时,提高了计算效率;

(4)本发明利用复数N次方根N个根求解过程的相似性来共享计算资源,降低高阶N次方根的硬件实现复杂度;利用CORDIC特性,通过简单的移位和加法运算来求解。以复数10次方根计算为例,经过较早的计算,本设计可在一个时钟周期内计算出10个根,与仅计算复数2次方根的其中1个根相比,电路复杂度仅增加了0.157%;与现有技术相比,本发明计算速度可提升379倍。

附图说明

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

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

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

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

具体实施方式

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

实施例

本实施例低复杂度硬件系统架构如图1所示,系统输入复数z的实部m和虚部n,经过圆形、线性和双曲线性三种CORDIC算法,如图所示,系统包括圆周向量模式CV-CORIDC模块,圆周旋转模式CR-CORDIC模块,第一线性向量模式LV1-CORDIC模块,第二线性向量模式LV2-CORDIC模块,双曲线向量模式HV-CORDIC模块和双曲线旋转模式HR-CORDIC模块;计算数据先输入CV-CORIDC模块,CV-CORDIC模块的输出数据输入HV-CORDIC模块和LV2-CORDIC模块,HV-CORDIC模块的输出数据依次通过LV1-CORDIC模块和HR-CORDIC模块,流转至CR-CORDIC模块,LV2-CORDIC模块的输出数据也流转至CR-CORDIC模块,CR-CORDIC模块输出数据发送至结果处理单元通过移位和加法运算求得如图所示,系统采用全流水线架构,可实现高速全流水计算。

本实施例使用三种坐标系共五种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,使用CV-CORDIC模块、HV-CORDIC模块、LV1-CORDIC模块、HR-CORDIC模块、LV2-CORDIC模块和CR-CORDIC模块计算复数z=m+j*n的N次方根,其中CV-CORDIC模块的计算结果需经过多级缓冲单元后再将数据送入LV2-CORDIC模块计算,以保证和HR-CORDIC模块同步,各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次方根有N个根,随着N的增加,电路的复杂度会迅速增加。以N=10为例,若用10路计算资源并行计算10个结果,硬件开销是原来的10倍;若串行计算10个根,会消耗大量计算时间。为了降低高阶第N个根的复杂度,本实施例利用N个根求解过程中的相似性来共享计算资源,最终连接并行结果处理单元并行处理,降低高阶N次方根的硬件实现复杂度。

每个时钟周期输入的整数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=10为例,经过较早的计算,计算一个复数的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页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种不重复随机自然数的快速生成方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类