CN102981797B - 基于cordic算法的反馈和流水线结构相结合的三角函数运算器 - Google Patents
基于cordic算法的反馈和流水线结构相结合的三角函数运算器 Download PDFInfo
- Publication number
- CN102981797B CN102981797B CN201210433693.4A CN201210433693A CN102981797B CN 102981797 B CN102981797 B CN 102981797B CN 201210433693 A CN201210433693 A CN 201210433693A CN 102981797 B CN102981797 B CN 102981797B
- Authority
- CN
- China
- Prior art keywords
- trigonometric function
- register
- flowing water
- pseudo
- computing
- 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
Landscapes
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,包括基于软件配置的寄存器组模块、运算控制模块及伪流水运算迭代单元组成。基于软件配置的寄存器组模块包括A、B两类寄存器;运算控制模块负责寄存器组模块和伪流水运算迭代单元的连接;伪流水运算迭代单元由实现CORDIC算法的n级流水单元组成。本发明提出的基于配置的伪流水CORDIC算法结构在不增加硬件电路开销且支持一定程度并行三角函数计算的前提下,通过将运算迭代单元的输出不断反馈回其输入的伪流水形式,实现无限制精度的三角函数运算。
Description
技术领域
本发明属于集成电路领域,涉及一种三角函数运算器,尤其涉及基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器。
背景技术
三角函数的计算在函数求解、二维建模、数值分析、图象处理、弹道计算及修正等技术领域广泛应用。三角函数运算器作为协处理器对整个系统的数字信号的处理能力有着极为重要的影响。
目前,三角函数运算器的设计主要基于CORDIC算法。CORDIC算法是一种线性收敛和顺序执行的迭代算法,即对N位精度至少需要N次迭代,第i+1次迭代只有在第i次迭代完成后才能执行。CORDIC算法可以将多种难以用硬件实现的复杂运算分解为统一的简单移位、加法运算,然后逐次逼近结果。CORDIC算法可以应用在圆周系统、线性系统和双曲系统,每一系统又有旋转模式和向量模式之分。
由于三角函数属于圆周系统,因此下面主要针对圆周系统下CORDIC的应用进行说明,CORDIC在圆周系统下迭代公式的推导过程可查阅相关文献。
具体的,圆周系统下CORDIC迭代方程1-1表示如下:
xi+1=xi-δiyi·2-i
yi+1=yi+δixi·2-i,i=0,1,2,…N-1,
zi+1=zi+1-δi·arctan(2-i)
其中,xi,yi为平面圆周系统下向量的x,y坐标,zi+1表示第i旋转之后剩余未旋转的角度,arctan(2-i)可以预先求出,存放在ROM中。通过上述迭代公式,CORDIC将一次大角度的向量旋转转化为N次小角度旋转之和。根据上式中δi的判读方式,CORDIC算法又分为旋转模式和向量模式。旋转模式下,设初始旋转角度为z0=θ,经过N次旋转后,使得zN=0,这时
这样的模式称为旋转模式,且由CORDIC算法的推导过程有:
如果取x0=1/P,y0=0,z0=θ,则有
向量模式下,设初始旋转角度为z0=θ,经过N次旋转后,使得yN=0,这时
CORDIC算法的推导过程有:
由上述可知,三角函数的结果是在校正因子P的校正下,对计算初值进行N次逼近迭代得到的。
目前,主要有反馈结构和流水线结构两种实现CORDIC算法的结构,如图1所示的反馈结构100。此结构只设计一级CORDIC算法迭代单元,然后在时钟驱动下,将本级的第i次输出作为本级的第i+1输入,通过同一级迭代完成运算。图1中,101、105为相同的多路选择器,选择第i次计算的输入;102、106、109为N位寄存器,N为进行CORDIC的X,Y,Z的位宽。移位寄存器103和107分别对Y和X进行移位,第i次迭代运算时的移动位数为i位;104、108、111为可执行加减运算的运算器,104、108、111可执行运算的类型与X,Y,Z数据类型一致,Di为第i次迭代后剩余未旋转角度的符号位,决定104、108、111进行加法或者加法运算;110为随机存储器ROM,ROM地址ADDR为迭代次数i,ROM中存放arctan2-i的值,i大于等于0小于迭代总次数N;zi+1表示第i旋转之后剩余未旋转的角度,根据剩余角度的符号位,决定下一次迭代中的修正方向。
CORDIC算法的另一种结构为流水线结构,如图2的200所示。流水线结构中,每一级CORDIC迭代运算都使用单独的一套运算单元,每一级实现的功能是根据迭代方程1-1进行一次迭代,移位的位数等于当前的迭代级数,加减法的选择由本级剩余旋转角度的符号位决定,得到下一级的x,y和z值。经过N级流水后,z的值变为0,x和y的值则为初始值z0的余弦和正弦值。
如图2所示,每一级电路结构主要包括两个移位器和三个加减法器,具体如第一级迭代运算单元包括201、202两个移位器,203、204、215三个加减法器。整体而言,初始值x0,y0,z0经过n级电路的n次迭代后得到的zn无限接近0,xn为初始值z0的正弦值,yn为初始值z0的余弦值。其中,对其中第i级电路来说,其输入值为xi,yi,zi,输出值为xi+1,yi+1,zi+1,同时xi+1,yi+1,zi+1作为下一级计算电路的输入,sign(zi)决定第i级电路进行加法或者减法运算。流水线结构框图200中,201、202、205、206、209、210、213、214为移位器,移位器对输入值的xi,yi右移i位变为下一级加减法器的输入xi+1,yi+1,其具体的移位数跟迭代级数相关。203、204、217、207、208、218、211、212、219、215、216、220为结构相同的加减法器,其可进行的加减法类型与计算的三角函数值一致,如需要计算双精度浮点三角函数值,那么203、204、217、207、208、218、211、212、219、215、216、220必须支持双精度浮点加减法。203、204、217、207、208、218、211、212、219、215、216、220具体进行加法或者减法的哪一种运算,由第i迭代之后zi的符号位决定。
反馈结构的CORDIC算法,硬件开销小,但是完成一次CORDIC运算需要多个时钟周期,运算周期较慢难以满足高速实时的数字信号处理。
流水线结构的CORDIC算法,处理速度较快,流水线填满之后每一个时钟周期就会计算出一组结果,为数据实现高速实时处理提供了前提。虽然该结构大大提高了系统运算速度,但是电路规模较大,同时运算结果的精度受流水线级数的限制,要提高运算精度必须增加流水级数,进一步增大了硬件开销。
近年,国内外提出了诸多优化的CORDIC算法实现结构,详细的可参考“基于嵌入式的CORDIC算法的改进和实现”、“并行CORDIC算法的研究”、“ANew Method to Implement CORDIC Algorithm”、“一种改进的流水CORDIC算法结构”等文献。诸多文章的优化方向主要以下几个方向:(1)简化模校正因子P的计算(2)提前预测旋转剩余角度zi的符号位(3)跳过没有必要的多于迭代运算(当角度等于arctan2-i时,不需要修正结果的多次迭代)(4)当迭代次数达到一定级数之后,合并迭代次数,从而减小流水级数,降低硬件消耗。结合国内外文献提出的优化措施可知,目前提出的种种优化措施都是针对流水线结构,虽然在一定程度上可以加快运算结果,降低硬件开销,但都是以降低结果的运算精度为代价的,从上面的分析可知:运算精度和电路规模成正相关关系。
发明内容
本发明解决的问题在于提供一种基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,在不增加硬件电路开销且支持一定程度并行三角函数计算的前提下,提高三角函数运算精度。
本发明是通过以下技术方案来实现:
基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,作为协处理器的三角函数运算器包括:运算控制模块、寄存器组模块和伪流水运算迭代单元;
寄存器组模块包括A类寄存器:启动三角函数运算的运行控制寄存器、说明三角函数运算状态的计算状态寄存器、标明运算类型的运算命令寄存器、说明运算精度的运算精度寄存器及保存三角函数运算结果的计算结果寄存器和操作数寄存器;还设有总线接口,通过该总线接口与处理器相连接;
操作数寄存器中存放的处理器发出的操作数0直接被发送至伪流水运算迭代单元,寄存器组模块将包括启动运算的控制信息通过信号s0发送至运算控制模块,运算控制模块根据运算命令寄存器指示的三角函数计算类型,将计算三角函数类型所需的常数,操作数1和操作数2,送至伪流水运算迭代单元,启动运算;
所述的伪流水运算迭代单元包含实现CORDIC算法的n级流水单元;信号s1将运算控制模块从伪流水运算迭代单元所获得的运算的状态实时更新至寄存器组模块中的运算状态寄存器;
根据运算精度寄存器、运行控制寄存器的指示,运算控制模块向伪流水运算迭代单元发出信号s2,将伪流水运算迭代单元的上一轮的输出反馈作为伪流水运算迭代单元下一轮计算的输入;经过m次反馈使CORDIC运算达到m×n次迭代;
当运算精度将要达到运算精度寄存器的要求时,信号s2给出最后一次迭代的指示信号;伪流水运算迭代单元运算完成后的结果或运算错误的信息经信号s3送至运算控制模块,再反馈给寄存器组模块的计算结果寄存器,最后发送给处理器。
所述的伪流水运算迭代单元中的每一级流水单元包含若干个加减法器,若干个移位器,加减法器的类型与操作数的类型一致,移位器最多对操作数移位m×n。
所述的寄存器组模块还包括控制三角函数运算器功耗的时钟控制寄存器。
当n个三角函数计算命令并行执行时,寄存器组模块中的A类寄存器、运算控制模块中的控制逻辑分别有n套,其中n为伪流水迭代运算单元在一次迭代中执行的流水级数;运算控制模块的每套独立的控制逻辑分别运行一个计算命令;
寄存器组模块中还设有优先级寄存器,按设定的顺序将并行的多个三角函数运算命令分别加载到伪流水运算迭代单元中。
所述的运算控制模块一直检测信号s3,当发生运算结果错误时,运算控制模块发出指令结束运算过程,并通过s1更新寄存器组模块中的运算状态寄存器。
所述的操作数0为需要计算的数,通过处理器写入操作数寄存器。
所述的伪流水运算迭代单元在n级流水单元之前还设有互连结构,互连结构包括多个多路选择器,根据来自运算控制模块的号s2确定操作数0、操作数1和操作数2与n级流水单元运算时的x,y,z的对应关系。
所述的寄存器组模块通过AHB总线与处理器相连接。
所述的寄存器组模块中的控制和状态信息由软件配置实现。
所述的软件配置为处理器执行包含用户操作信息的指令,实现对寄存器组模块(302)的读写,从而完成对三角函数运算器的控制。
与现有技术相比,本发明具有以下有益的技术效果:
本发明提供的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,在运算控制模块的控制下,可以将伪流水运算迭代单元的输出反馈作为伪流水运算迭代单元的输入,在n级流水单元的m次反馈下就能够完成m×n级伪流水的实际运算,其中伪流水指用非完全流水线结构实现完全流水结构的CORDIC算法运算,节省了硬件开销。
进一步,本发明提供的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,还能够支持一定程度并行三角函数计算,并行程度根据用户允许的硬件开销而定。
再进一步,将寄存器组模块由软件配置实现后,可以在硬件开销完全可控的情况下(硬件消耗主要由伪流水迭代运算单元组成),通过运算控制模块的控制,支持多条三角函数运算并行进行,并且以伪流水的形式完成无限制精度的三角函数运算。解决了随着运算精度的提高,所需运算器硬件电路规模不断扩大的技术问题,在电路规模下不变的前提下,可以通过软件配置无限制的提高运算的精度。
本发明提供的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,具体的以支持4条浮点三角函数运算并行处理进行验证,用户配置计算精度,其功能及性能均已经过流片验证。
附图说明
图1为传统的反馈式CORDIC算法实现结构;
图2为传统的流水线式CORDIC算法实现结构;
图3为本发明反馈和流水线结构相结合的CORDIC算法结构;
图4为伪流水64位浮点三角函数运算器的结构示意图;
图5为伪流水浮点三角函数运算器中伪流水迭代单元的实现结构;
图6为互连结构的结构示意图。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明提出的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,是一种基于反馈和流水线结构相结合的伪流水三角函数运算器,伪流水指用非完全流水线结构实现完全流水结构的的CORDIC算法运算,而寄存器组模块可以基于软件配置来实现。
参见图3,基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器300,作为协处理器的三角函数运算器包括:运算控制模块301、寄存器组模块302和伪流水运算迭代单元303;
寄存器组模块302包括A类寄存器:启动三角函数运算的运行控制寄存器、说明三角函数运算状态的计算状态寄存器、标明运算类型的运算命令寄存器、说明运算精度的运算精度寄存器及保存三角函数运算结果的计算结果寄存器和操作数寄存器;还设有总线接口,通过该总线接口与处理器相连接;
具体的所述的总线接口为标准的AHB总线接口,通过AHB总线与理器相连接;
操作数寄存器中存放的操作数0(操作数0为需要计算的数,该操作数用户可以改变,可通过处理器写入操作数寄存器)直接被发送至伪流水运算迭代单元303,寄存器组模块302将包括启动运算的控制信息通过信号s0发送至运算控制模块301,运算控制模块301根据运算命令寄存器指示的三角函数计算类型,将计算三角函数类型所需的常数,包括操作数1和操作数2,送至伪流水运算迭代单元303,启动运算;
所述的伪流水运算迭代单元303包含实现CORDIC算法的n级流水单元,一轮迭代运算完成后,在运算控制模块301控制下,将运算结果重新输入至303;信号s1将运算控制模块301从伪流水运算迭代单元303所获得的运算的状态从实时更新至寄存器组模块302中的运算状态寄存器;
根据运算精度寄存器、运行控制寄存器的指示,运算控制模块301向伪流水运算迭代单元303发出信号s2,将伪流水运算迭代单元303的上一轮的输出反馈作为伪流水运算迭代单元303下一轮计算的输入;经过m次反馈使CORDIC运算达到m×n次迭代;
当运算精度将要达到运算精度寄存器的要求时,信号s2给出最后一次迭代的指示信号;伪流水运算迭代单元303运算完成后的结果或运算错误的信息经信号s3送至运算控制模块301,再反馈给寄存器组模块302的计算结果寄存器,最后发送给处理器。
具体的,基于配置的伪流水浮点三角函数运算器作为SoC的协处理器使用,通过AHB接口集成在AHB总线上。
其中寄存器组模块302可以包含两类寄存器,记做A、B。其中A类寄存器为完成运算不可或缺的,包括运算命令寄存器、计算状态寄存器、操作数寄存器、运行控制寄存器,运算精度寄存器;B类寄存器为辅助寄存器,如为了控制三角函数运算器的功耗,可以增加时钟控制寄存器等;为了并行执行三角函数计算命令,需要增加优先级寄存器。
所述的伪流水运算迭代单元303中的每一级流水单元包含若干个加减法器,若干个移位器,加减法器的类型与操作数的类型一致,移位器最多对操作数移位m×n。n为伪流水运算迭代单元中包含的流水级数,m为运算控制模块301根据用户设置的运算计算出来的迭代次数。
具体的,每一级流水单元包含3个加减法器,2个移位器,加减法器的类型与操作数的类型一致,移位器最多对操作数移位m×n。
进一步为了支持多个计算命令的并行执行,当n个三角函数计算命令并行执行时,寄存器组模块302中的A类寄存器、运算控制模块301中的控制逻辑分别有n套,其中n为伪流水迭代运算单元303在一次迭代中执行的流水级数;运算控制模块301的每套独立的控制逻辑分别运行一个计算命令;
寄存器组模块302中还设有优先级寄存器,按设定的顺序将并行的多个三角函数运算命令分别加载到伪流水运算迭代单元303中。
为了进一步节省硬件开销,将寄存器组模块302的控制和状态信息由软件配置实现,这样就可以在硬件开销完全可控的情况下(硬件消耗主要由伪流水迭代运算单元组成),完成无限制精度的三角函数运算。
所述的软件配置为处理器执行包含用户操作信息的指令,实现对寄存器组模块302的读写,从而完成对三角函数运算器的控制。
图3中上述涉及的三个模块的信息交互如下:
操作数寄存器中存放的操作数0直接连接至伪流水迭代运算单元303。
信号s1将运算的状态从运算控制模块301实时更新至302中的运算状态寄存器,因为不同的运算器状态位不同,所以s1具体位宽不定;
信号s0将302寄存器中的控制信息送到运算控制模块301;301根据命令寄存器中指示的是三角函数计算类型(sin,cos,arctan)将计算不同的三角函数类型所需的常数操作数1、操作数2送至伪流水迭代运算单元303;
信号s2根据运算精度寄存器、运行控制寄存器的控制信息(包括用户要求的计算的精度、运算结果是否正确等。运算控制模块301会根据运算精度、运算状态等生成信号s2,信号s2包含继续迭代的信息),将伪流水迭代运算单元303的输出重新输入303进行第二轮的迭代运算,直至运算精度达到用户的要求;经过m次反馈就可以使CORDIC运算达到m×n次迭代,迭代次数m由运算控制模块301控制,但运算精度将要达到用户要求时,s2给出最后一次迭代的指示信号。
信号s3将运算完成、运算错误等信息送至运算控制模块,当发生运算结果溢出等错误时,301会结束运算过程,并通过s1更新302中的运算状态寄存器。
当需要实现并行计算时,基于软件配置的寄存器组模块302中的A类寄存器、运算控制模块301中的控制逻辑分别有n套,其中n为伪流水迭代运算单元303中在一次迭代中实际执行的流水级数。比如:如果伪流水迭代运算单元303一次迭代中可执行8级流水(即最多可并行执行8条三角函数计算命令),那么为了支持8条三角函数计算命令的并行,302中的A类寄存器组就要有8个命令寄存器、8个计算精度寄存器等,即所有的A类寄存器都有8套,运算控制模块301中就有8套独立的控制逻辑分别8条运算指令的运行,当需要多条运算指令同时并行时,需要B类优先级寄存器以确定哪条指令先进入伪流水迭代运算单元303中。
参见图5,具体的以64位浮点迭代运算器500来进行说明,包含软件可配置的寄存器组模块502、运算控制模块501及伪流水64位浮点迭代运算单元503。
其中寄存器组模块502包含的A类寄存器,具体包括启动三角函数运算的运行控制寄存器、说明三角函数运算状态的计算状态寄存器、标明运算类型的运算命令寄存器、说明运算精度的运算精度寄存器、保存三角函数运算结果的计算结果寄存器及优先级寄存器,502中背景标为深色的寄存器中的信息通过s50连接至501运算控制模块,501的输出操作数1和操作数2为计算特定的三角函数命令所需的常数,需要说明的是,因为在此具体实施中,实现的是64位浮点三角函数运算,因此操作数1和操作数2为64位浮点常数。
控制单元501根据s50的控制运算的信息,产生如启动三角函数运算等信号,并根据用户通过软件设置的计算精度不断的将伪流水64位浮点迭代运算单元503的输出xm×4,ym×4,zm×4反馈到浮点迭代运算单元503的输入,从而通过503的四级流水实现m×4级真正的流水,用较小的电路消耗实现了无限制精度的计算。
其中s53表示503进行运算的完成状态,同时s53会表征浮点迭代运算单元503中基本运算部件64位浮点运算加减法器的运算,具体如s53=tri_fh&fp_status,其中tri_fh位宽为1位,表示浮点三角函数运算是否完成计算,fp_status位宽8位,用独热码分别表示64位浮点运算加减法器状态,501运算控制模块会一直检测s53的状态,当64位浮点运算加减法器出现不正常的情况时,会停止运算,并向502中的计算状态寄存器的error位域写1。
为了支持三角函数运算的并行流水进行,可配置的寄存器组模块502、运算控制模块501分别包含四套502中所示的寄存器、四套独立的运算控制逻辑,运算控制模块501根据不同三角函数命令的优先级和运算精度,分别在适当的时刻开始运算和输出运算结果。
图4为图5中伪流水64位浮点迭代运算单元503的详细框图,其基本原理与图2所示的流水结构实现的CORDIC算法一致,而且在流水单元之前增加了一个互连结构。
如图6所示的互连结构600,互连结构的硬件结构是固定的,它会根据运算控制模块的控制信号s2确定操作数0、操作数1和操作数2与x,y,z的对应关系,即:操作数0连接x,y,z的哪一个,操作数1连接至x,y,z的哪一个,操作数2连接至x,y,z的哪一个。
详述如下:操作数0、操作数1和操作数2与x,y,z的对应关系是不固定的,互连结构会根据运算控制模块的控制信号s2确定操作数0、操作数1和操作数2与x,y,z的对应关系(其中,操作数1和操作数2是已经定义好的CORDIC算法计算所需的常数,操作数0是用户需要计算三角函数的输入。)
图6中,601、602、603是结构相同的三选一多路选择器,根据来自运算控制模块的控制信号s2决定操作数0,1.2与x,y,z的对应关系,其中操作时1,2是cordic算法需要的常数。比如:用户在标明运算类型的运算命令寄存器中设置为进行sin运算,并且向操作数寄存器写入了操作数0,那么运算控制模块会根据运算命令寄存器中的运算类型,生成控制信号s2,通过该互连结构将操作数0连接至z,将操作数1(等于CORDIC算法要求的常数1)连接至x,将操作数2(等于CORDIC算法要求的常数2)连接至y。
图4中浮点迭代运算单元400所示,404、405、408、409、412、413、415、416、418、419、420、421分别为64位浮点运算器,支持IEEE 754标准;移位单元完成操作数的移位;图中i表示第i次迭代,sign(zi×4)表示第i×4次迭代之后剩余旋转角度的符号位,决定下一级迭代中的对结果的修正方向。在图5运算控制模块501的控制下,400的输出不断反馈到400的输入,以增加迭代次数,不断提高运算结果的精度,直到满足用户设定的运算精度,输出运算结果。
基于配置的伪流水CORDIC算法结构具体实现的三角函数运算器允许最多四条三角函数命令的并行执行,以实现CORDIC算法的四级流水结构完成了i×4次伪流水的运算,本发明提出的结构虽然增加了控制模块,但是通过借鉴反馈结构的优势,通过软件配置,可在电路硬件消耗不变的情况下,无限制提高三角函数运算精度。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定专利保护范围。
Claims (10)
1.基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,作为协处理器的三角函数运算器包括:运算控制模块(301)、寄存器组模块(302)和伪流水运算迭代单元(303);
寄存器组模块(302)包括A类寄存器:启动三角函数运算的运行控制寄存器、说明三角函数运算状态的计算状态寄存器、标明运算类型的运算命令寄存器、说明运算精度的运算精度寄存器及保存三角函数运算结果的计算结果寄存器和操作数寄存器;还设有总线接口,通过该总线接口与处理器相连接;
操作数寄存器中存放的处理器发出的操作数0直接被发送至伪流水运算迭代单元(303),寄存器组模块(302)将包括启动运算的控制信息通过信号s0发送至运算控制模块(301),运算控制模块(301)根据运算命令寄存器指示的三角函数计算类型,将计算三角函数类型所需的常数,操作数1和操作数2,送至伪流水运算迭代单元(303),启动运算;
所述的伪流水运算迭代单元(303)包含实现CORDIC算法的n级流水单元;信号s1将运算控制模块(301)从伪流水运算迭代单元(303)所获得的运算的状态实时更新至寄存器组模块(302)中的运算状态寄存器;
根据运算精度寄存器、运行控制寄存器的指示,运算控制模块(301)向伪流水运算迭代单元(303)发出信号s2,将伪流水运算迭代单元(303)的上一轮的输出反馈作为伪流水运算迭代单元(303)下一轮计算的输入;经过m次反馈使CORDIC运算达到m×n次迭代;
当运算精度将要达到运算精度寄存器的要求时,信号s2给出最后一次迭代的指示信号;伪流水运算迭代单元(303)运算完成后的结果或运算错误的信息经信号s3送至运算控制模块(301),再反馈给寄存器组模块(302)的计算结果寄存器,最后发送给处理器。
2.如权利要求1所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,所述的伪流水运算迭代单元(303)中的每一级流水单元包含若干个加减法器,若干个移位器,加减法器的类型与操作数的类型一致,移位器最多对操作数移位m×n。
3.如权利要求1所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,所述的寄存器组模块(302)还包括控制三角函数运算器功耗的时钟控制寄存器。
4.如权利要求1所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,当n个三角函数计算命令并行执行时,寄存器组模块(302)中的A类寄存器、运算控制模块(301)中的控制逻辑分别有n套,其中n为伪流水迭代运算单元(303)在一次迭代中执行的流水级数;运算控制模块(301)的每套独立的控制逻辑分别运行一个计算命令;
寄存器组模块(302)中还设有优先级寄存器,按设定的顺序将并行的多个三角函数运算命令分别加载到伪流水运算迭代单元(303)中。
5.如权利要求1所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,所述的运算控制模块(301)一直检测信号s3,当发生运算结果错误时,运算控制模块(301)发出指令结束运算过程,并通过s1更新寄存器组模块(302)中的运算状态寄存器。
6.如权利要求1所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,所述的操作数0为需要计算的数,通过处理器写入操作数寄存器。
7.如权利要求1所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,所述的伪流水运算迭代单元(303)在n级流水单元之前还设有互连结构,互连结构包括多个多路选择器,根据来自运算控制模块(301)的号s2确定操作数0、操作数1和操作数2与n级流水单元运算时的x,y,z的对应关系。
8.如权利要求1所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,所述的寄存器组模块(302)通过AHB总线与处理器相连接。
9.如权利要求1所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,所述的寄存器组模块(302)中的控制和状态信息由软件配置实现。
10.如权利要求9所述的基于CORDIC算法的反馈和流水线结构相结合的三角函数运算器,其特征在于,所述的软件配置为处理器执行包含用户操作信息的指令,实现对寄存器组模块(302)的读写,从而完成对三角函数运算器的控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210433693.4A CN102981797B (zh) | 2012-11-02 | 2012-11-02 | 基于cordic算法的反馈和流水线结构相结合的三角函数运算器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210433693.4A CN102981797B (zh) | 2012-11-02 | 2012-11-02 | 基于cordic算法的反馈和流水线结构相结合的三角函数运算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102981797A CN102981797A (zh) | 2013-03-20 |
CN102981797B true CN102981797B (zh) | 2015-06-17 |
Family
ID=47855869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210433693.4A Active CN102981797B (zh) | 2012-11-02 | 2012-11-02 | 基于cordic算法的反馈和流水线结构相结合的三角函数运算器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102981797B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714773B (zh) * | 2015-03-04 | 2018-04-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法 |
CN106484980B (zh) * | 2016-09-29 | 2019-08-13 | 中国人民解放军军械工程学院 | 一种固定舵二维弹道修正弹气动参数计算方法 |
CN112463115A (zh) * | 2017-12-15 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN108733349B (zh) * | 2018-07-27 | 2023-05-05 | 珠海一微半导体股份有限公司 | 一种基于定点数的三角函数运算电路 |
US11928465B2 (en) * | 2019-02-20 | 2024-03-12 | Optimum Semiconductor Technologies Inc. | Device and method for calculating elementary functions using successive cumulative rotation circuit |
CN110096672A (zh) * | 2019-04-25 | 2019-08-06 | 天津大学 | 基于fpga的低成本流水线型fft处理器实现方法 |
CN112650973B (zh) * | 2019-10-11 | 2022-05-20 | 珠海格力电器股份有限公司 | 三角函数计算装置及电子设备 |
CN111061455A (zh) * | 2019-12-04 | 2020-04-24 | 广东省新一代通信与网络创新研究院 | 一种三角函数cordic迭代运算协处理器 |
CN111612622B (zh) | 2020-05-20 | 2021-03-23 | 深圳比特微电子科技有限公司 | 用于执行散列算法的电路和方法 |
CN112306454B (zh) * | 2020-11-13 | 2024-06-11 | 深圳市国芯物联科技有限公司 | 一种实现cordic旋转模式下近似计算的装置和方法 |
CN112286581B (zh) * | 2020-12-25 | 2021-05-28 | 广东省新一代通信与网络创新研究院 | 一种流水线式计算加速协处理方法及系统 |
CN114707110B (zh) * | 2022-06-07 | 2022-08-30 | 中科亿海微电子科技(苏州)有限公司 | 一种三角函数和双曲函数扩展指令计算装置及处理器核 |
CN115543258B (zh) * | 2022-11-30 | 2023-06-16 | 无锡奇芯科技有限公司 | 基于cordic算法的存储方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5019968A (en) * | 1988-03-29 | 1991-05-28 | Yulan Wang | Three-dimensional vector processor |
CN102624653A (zh) * | 2012-01-13 | 2012-08-01 | 清华大学 | 基于流水线工作方式的可扩展qr分解方法 |
-
2012
- 2012-11-02 CN CN201210433693.4A patent/CN102981797B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5019968A (en) * | 1988-03-29 | 1991-05-28 | Yulan Wang | Three-dimensional vector processor |
CN102624653A (zh) * | 2012-01-13 | 2012-08-01 | 清华大学 | 基于流水线工作方式的可扩展qr分解方法 |
Non-Patent Citations (3)
Title |
---|
High-level Algorithm and Architecture Transformations for DSP Synthesis;Parhi.K.K;《Journal of VLSI Signal Processing》;19950131;第9卷(第1期);121-143页 * |
杨宇,毛志刚,来逢昌.一种改进的流水线CORDIC算法结构.《微处理机》.2006,(第4期),10-13页. * |
牛晨晓,赵忠,聂聪.一种CORDIC算法的FPGA实现.《计算机技术与发展》.2011,第21卷(第6期),16-19页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102981797A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102981797B (zh) | 基于cordic算法的反馈和流水线结构相结合的三角函数运算器 | |
US10402168B2 (en) | Low energy consumption mantissa multiplication for floating point multiply-add operations | |
CN103793203B (zh) | 响应于输入数据值降低fma单元中的功率消耗 | |
CN109062540A (zh) | 一种基于cordic算法的可重构浮点运算装置 | |
EP3109766A2 (en) | Hardware processors and methods for tightly-coupled heterogeneous computing | |
CN102750133B (zh) | 支持simd的32位三发射的数字信号处理器 | |
CN105468335A (zh) | 流水级运算装置、数据处理方法及片上网络芯片 | |
CN103019647A (zh) | 具有浮点精度保持功能的浮点累加/累减运算方法 | |
CN112579159A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
WO2013095614A1 (en) | Super multiply add (super madd) instruction | |
EP3547116B1 (en) | Branch prediction based on coherence operations in processors | |
EP3716047A1 (en) | Apparatus and method for controlling complex multiply-accumulate circuitry | |
CN108733349B (zh) | 一种基于定点数的三角函数运算电路 | |
CN101211256A (zh) | 一种专用双流水线risc指令系统及其操作方法 | |
Jafri et al. | Silago-cog: Coarse-grained grid-based design for near tape-out power estimation accuracy at high level | |
CN111381664A (zh) | 控制处理器中的功率状态降级 | |
CN102043609B (zh) | 一种浮点协处理器及相应的配置、控制方法 | |
CN102012802B (zh) | 面向向量处理器数据交换的方法及装置 | |
CN111752533A (zh) | 用于矩阵运算的加速器系统和方法 | |
CN218068835U (zh) | 除法器 | |
CN111752745A (zh) | 对码字中相邻两位错误的检测 | |
CN204990269U (zh) | 一种基于fpga的反三角函数实现装置 | |
CN203746056U (zh) | 多操作数四则混合定点算术运算控制器 | |
CN103645887B (zh) | 双指令多浮点操作数加/减、乘、除运算控制器 | |
CN114661349A (zh) | 用于代码预取的指令和逻辑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |