CN110147218B - 基于Cordic算法的运算电路与方法 - Google Patents
基于Cordic算法的运算电路与方法 Download PDFInfo
- Publication number
- CN110147218B CN110147218B CN201910278618.7A CN201910278618A CN110147218B CN 110147218 B CN110147218 B CN 110147218B CN 201910278618 A CN201910278618 A CN 201910278618A CN 110147218 B CN110147218 B CN 110147218B
- Authority
- CN
- China
- Prior art keywords
- circuit
- output end
- input end
- output
- adder
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5446—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation using crossaddition algorithms, e.g. CORDIC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及一种基于Cordic算法的运算电路和方法。所述电路包括:指数运算电路、滑动位移电路、迭代运算电路和输出补偿电路;指数运算电路的输出端与滑动位移电路的输入端、输出补偿电路的输入端连接;滑动移位电路的输出端与迭代运算电路的输入端连接;迭代运算电路的输出端与输出补偿电路的输入端连接;指数运算电路用于对接收到的运算参数进行指数运算,得到运算参数对应的指数;滑动移动电路用于根据输入的指数,对输入的与指数对应的运算参数进行动态放大,得到运算参数对应的修正值;迭代运算电路对输入的修正值进行迭代计算获取迭代值;输出补偿电路根据输入的指数,对迭代值进行补偿获得运算结果。采用本电路能够扩大运算范围。
Description
技术领域
本申请涉及电路技术领域,特别是涉及一种基于Cordic算法的运算电路与方法。
背景技术
Cordic算法是一种基于数字坐标轴计算方法,其基本思想是通过循环迭代实现二维平面坐标轴向量的旋转,具体过程是通过一系列与运算基数相关的角度不断偏摆从而逼近所需旋转的目标角度。广义上讲,Cordic是一种数值计算逼近方法,只需要通过移位和加减操作就能实现多种计算,其中包括三角函数、极坐标与平面坐标相互转换、平方根、向量旋转、乘除法、指数函数、对数函数以及双曲函数等。并且,Cordic算法在线性系统下的向量旋转,可实现除法运算。假设线性系统中初始向量v=[x0,y0]T,逆时针旋转θ角度后得到新向量v'=[x0,y']T,其中初始向量v与目标向量v'的x坐标相同。在线性系统中,Cordic算法将旋转过程划分成一系列循环迭代。其迭代方程为:
xi+1=xi+0·δi·2-i·yi
yi+1=yi+δi·2-i·xi
zi+1=zi-δi·2-i
其中,δi=-sign(yi),而输出值yN=0,zN=z0+y0/x0,若令z0=0,则输出值即为y0/x0。从而用简单的移位、加法电路便可实现y0/x0除法运算,该方法能够节省面积且便于硬件实现。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高运算范围的基于Cordic算法的运算电路与方法。
一种基于Cordic算法的运算电路,所述电路包括:指数运算电路、滑动移位电路、迭代运算电路和输出补偿电路;
所述指数运算电路的输出端与所述滑动移位电路的输入端、所述输出补偿电路的输入端连接;所述滑动移位电路的输出端与所述迭代运算电路的输入端连接;所述迭代运算电路的输出端与所述输出补偿电路的输入端连接;
所述指数运算电路用于对接收到的运算参数进行指数运算,得到所述运算参数对应的指数;所述滑动移位电路用于根据输入的所述指数,对输入的与所述指数对应的所述运算参数进行动态放大,得到所述运算参数对应的修正值;所述迭代运算电路对输入的所述修正值进行迭代计算获取迭代值;所述输出补偿电路根据输入的所述指数,对所述迭代值进行补偿获得运算结果。
在其中一个实施例,所述指数运算电路包括两个选择器阵列,各所述选择器阵列包括多个串联的第一数据选择器。
在其中一个实施例,所述滑动移位电路包括第一加法器、第二加法器、第一移位器和第二移位器;
所述第一加法器的第一输入端连接所述指数运算电路的输出端,第二输入端接入预设值;所述第一加法器的输出端连接所述第一移位器的第一输入端;所述第二加法器的第一输入端连接所述指数运算电路的输出端,第二输入端接入预设值;所述第二加法器的输出端连接所述第二移位器的第一输入端。
在其中一个实施例,所述迭代运算电路包括运算电路和迭代计数器;所述运算电路包括第一加法移位电路、第二加法移位电路、判断电路、第二数据选择器和第三数据选择器;
所述第二数据选择器的输入端连接所述滑动移位电路的输出端和所述迭代计数器的输出端;所述判断电路的输入端连接所述滑动移位电路的输出端和所述第二数据选择器的输出端;所述第一加法移位电路的输入端连接所述滑动移位电路的输出端、所述第二数据选择器的输出端以及所述判断电路的输出端;所述第二加法移位电路的输入端连接所述第三数据选择器的输出端和所述判断电路的输出端;所述第三数据选择器的输入端连接所述迭代计数器的输出端;所述第一加法移位电路的输出端和第二加法移位电路的输出端连接所述迭代计数器的输入端。
在其中一个实施例,所述第一加法移位电路包括第三加法器和第三移位器;
所述第三移位器的第一输入端连接所述滑动移位电路的输出端、第二输入端连接所述迭代计数器的输出端;所述第三加法器的第一输入端连接所述第三移位器的输出端,第二输入端连接所述第一数据选择器的输出段,第三输入端连接所述判断电路的输出端;所述第三加法器的输出端连接所述迭代计数器的输入端。
在其中一个实施例,所述第二加法移位电路包括第四加法器和第四移位器;
所述第四移位器的第一输入端连接所述迭代计数器的输出端,第二输入端连接所述判断电路的输出端,输出端连接所述第四加法器的第一输入端;所述第四加法器的第二输入端连接所述第三数据选择器的输出端;所述第四加法器的输出端连接所述迭代计数器。
在其中一个实施例,所述判断电路包括异或运算器和第四数据选择器;
所述异或运算器的第一输入端连接所述滑动移位电路的输出端,第二输入端连接所述第二数据选择器的输出端;所述异或运算器的输出端连接所述第四数据选择器的输入端,所述第四数据选择器的输出端连接所述第一加法移位电路的输入端和第二加法移位电路的输入端。
在其中一个实施例,所述迭代运算电路包括多个运算电路;各所述运算电路串联。
在其中一个实施例,所述输出补偿电路包括第五加法器和第五移位器;
所述第五加法器的第一输入端和第二输入端连接所述指数运算电路的输出端;所述第五移位器的第一输入端连接所述第五加法器的输出端和所述迭代运算电路的输出端。
一种基于Cordic算法的运算方法,所述方法包括:
接收运算参数;
根据所述运算参数进行指数运算,得到所述运算参数对应的指数;
根据所述运算参数对应的指数将所述运算参数进行动态放大,得到所述运算参数对应的修正值;
根据所述修正值进行迭代计算,获取迭代值;
根据所述运算参数对应的指数对所述迭代值进行补偿得到运算结果。
上述基于Cordic算法的运算电路,通过指数运算电路计算得到的运算参数对应的指数,供滑动移位电路根据该指数将运算参数进行左移得到运算参数对应的修正值,从而实现运算参数的动态放大,使得运算参数的修正值始终是位宽所能允许的最大值。然后将修正值进行迭代计算,在保证运算的精度前提下还能扩大运算的范围,同时输出之前对运算结果进行输出补偿进一步保证运算的准确性。
附图说明
图1为一个实施例中基于Cordic算法的运算电路的电路结构图;
图2为一个实施例中指数运算电路的电路结构图;
图3为一个实施例中滑动移位电路的电路结构图;
图4为一个实施例中迭代运算电路的电路结构图;
图5为一个实施例中运算电路中第一加法移位电路的电路结构图;
图6为一个实施例中运算电路中第二加法移位电路的电路结构图;
图7为一个实施例中运算电路中判断电路的电路结构图;
图8为另一个实施例中迭代运算电路的电路结构图;
图9为一个实施例中输出补偿电路的电路结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,图1为一个实施例中基于Cordic算法的运算电路的电路图,如图1所示,基于Cordic算法的运算电路图包括指数运算电路10、滑动移位电路20、迭代运算电路30和输出补偿电路40。
指数运算电路10的输出端与滑动移位电路20的输入端、以及输出补偿电路40的输入端连接。滑动移位电路20的输出端与迭代运算电路30的输入端连接。迭代运算电路30的输出端与输出补偿电路40的输入端连接。
其中,指数运算电路10用于对接收到的运算参数进行指数运算,得到运算参数对应的指数。滑动移位电路20用于根据输入的指数,对输入的与所述指数对应的运算参数进行动态放大,得到运算参数对应的修正值。迭代运算电路30对输入的修正值进行迭代计算获取迭代值。补偿输出电路40根据输入的指数,对迭代值进行补偿获得运算结果。
具体地,指数运算电路10和滑动移位电路20的输入端通过连接外部电路或者CPU(Central Processing Unit,中央处理器)接收需要进行除法运算的运算参数。指数运算电路10对该运算参数进行指数运算,得到运算参数对应的指数后并将该运算参数对应的指数传输至滑动移位电路20和输出补偿电路40。滑动移位电路20根据指数运算电路10传输的指数将从外部电路或者CPU接收到的运算参数进行动态放大,从而得到运算参数对应的修正值。并且,滑动移位电路20将该修正值传输至迭代运算单元30。迭代运算单元30接收到修正值之后,对修正值进行迭代计算获取迭代值并传输至输出补偿电路40。输出补偿电路40用从指数运算电路10接收到的指数对迭代值进行补偿后输出运算结果。
上述基于Cordic算法的运算电路,通过指数运算电路计算得到的运算参数对应的指数,供滑动移位电路根据该指数将运算参数进行左移得到运算参数对应的修正值,从而实现运算参数的动态放大,使得运算参数的修正值始终是位宽所能允许的最大值。然后将修正值进行迭代计算,在保证运算的精度前提下还能扩大运算的范围,同时输出之前对运算结果进行输出补偿进一步保证运算的准确性。
在一个实施例中,图2为指数运算电路10的电路结构图,如图2所示,指数运算电路10包括两个选择器阵列110,各选择器阵列中包括多个串联的第一数据选择器MUX。
其中,由于进行除法运算所输入的运算参数为两个,因此指数运算电路10中包括两个选择器阵列110,用于接收不同的运算参数。第一数据选择器MUX的数量为M-1个,M为指数运算电路10所接收到的运算参数的位宽。数据选择器MUX内部由与、或、非组成。
具体地,如图2所示,若指数运算电路10接收运算参数是X0和Y0,X0是除数,Y0是被除数。若除数X0输入至其中一个选择器阵列110中,被除数Y0则输入至另一个选择器阵列110中。选择器阵列110中的第一数据选择器MUX的数量则取决于X0和Y0的位宽,即X0和Y0位宽M是多少,第一数据选择器MUX的数量即和是多少。运算参数X0和Y0分别经过M-1个第一数据选择器MUX的运算,得到对应的指数和即指数运算电路可通过判断运算参数最高有效位所在的Bit来实现和的求解。
在一个实施例中,图3为滑动移位电路20的电路结构图,如图3所示,滑动移位电路20包括第一加法器210、第二加法器220、第一移位器230和第二移位240。
第一加法器210的第一输入端连接指数运算电路10的输出端,第二输入端接入预设值。第一加法器的输出端连接第一移位器的第一输入端。第二加法器的第一输入端连接指数运算电路10的输出端,第二输入端接入预设值。第二加法器的输出端连接第二移位器的第一输入端。而第一移位器230和第二移位器240的第二输入端分别连接外部电路或者CPU,同样用于接收运算参数。
其中,预设值为M-1,即根据运算参数的位宽M即可计算得出预设值M-1。以及,由于指数运算电路10为两路输出,即第一加法器210和第一移位器230接收指数运算电路10中一路输出,第二加法器220和第四移位器240则接收指数运算电路10中的另一路输出。
具体地,如图3所示,第一移位器230和第二移位器240的第二输入端接收运算参数X0和Y0。第一加法器210的第一输入端接收指数运算电路10中的一个选择器阵列输出的第二输入端连接预设值M-1。第二加法器220的第一输入端则接收指数运算电路10中另一个选择器阵列输出的第二输入端同样连接预设值M-1。通过第一加法器210和第二加法器220分别做减法运算得出结果和然后,第一加法器210将输出至第一移位器230,第二加法器220将输出至第二移位器240。第一移位器230和第二移位器240分别对运算参数X0和Y0向左移和位得到运算参数X0和Y0对应的修正值X'和Y'。然后第一移位器230和第二移位器240分别将修正值X'和Y'输出至迭代运算单元。滑动移位电路20通过减法和移位运算实现运算参数的动态放大,使得动态放大后得到的修正值始终为位宽所能允许的最大值,从而保证迭代运算具有较高的精度。
在一个实施例中,图4为迭代运算电路30的电路结构图,如图4所示,迭代运算电路包括运算电路和迭代计数器410。所述运算电路包括第一加法移位电路420、第二加法移位电路430、判断电路440、第二数据选择器450和第三数据选择器460。
第二数据选择器450的输入端连接滑动移位电路20的输出端和迭代计数器410的输出端。判断电路440的输入端连接滑动移位电路20的输出端和第二数据选择器45的输出端。第一加法移位电路420的输入端连接滑动移位电路20的输出端、第二数据选择器450的输出端以及判断电路440的输出端。第二加法移位电路430的输入端连接第三数据选择器460的输出端和判断电路440的输出端。第三数据选择器460的输入端连接迭代计数器410的输出端;第一加法移位电路420的输出端和第二加法移位电路430的输出端连接迭代计数器410的输入端。其中,第二数据选择器450的初始值输入为从滑动移位电路20接收的被除数对应的修正值Y'。第三数据选择器460的初始值输入为固定值Z0=0。
具体地,如图4所示,第二数据选择器450的两个输入端中的一个输入端接入被除数对应的修正值,另一个输入端和迭代计数器410的输出端连接,接入被除数对应的修正值即为连接滑动移位电路20的输出端,从而接收滑动移位电路20所输出的修正值Y'。判断电路440的两个输入端分别连接第二数据选择器450的输出端,滑动移位电路20的输出端,连接滑动移位电路20的输出端即接入除数对应的修正值X'。第一加法移位电路420的四个输入端则分别连接第二数据选择器450的输出端、判断电路440的输出端、滑动移位电路20的输出端,以及迭代计数器410的输出端,其中,连接滑动移位电路20的输出端则是指接入除数对应的修正值X'。第二加法位移电路430的三个输入端则分别连接判断电路440的输出端、第三数据选择器460输出端以及迭代计数器410的输出端。第三数据选择器460的输入端连接迭代计数器410的输出端。
在本实施例中,迭代运算电路30的输入是修正值X'和Y',输出值为ZN,N为迭代运算电路的迭代次数。首先利用判断电路440实现δi的取值,从原本的δi=-sign(yi)更改为δi=-sign(yi)·sign(x')。即判断电路440将两个输入数据进行正负判断,当两个输入数据同为正或同为负时输出-1,否则输出1,即实现δi=-sign(yi)·sign(x')。然后,在分别利用第一加法移位电路420和第二加法移位电路430实现Yi和Zi的计算,yi+1=yi+δi·2-i·x',zi+1=zi-δi·2K-i,即yi=yi-1+δi-1·2-i-1·x',zi=zi-1-δi-1·2K-i-1,其中,i用于记录当前的迭代次数,K为整形常数,只需要满足K大于等于N即可,否则运算精度会有所损失。而迭代计数器410是一个N进制的计数器,具体N取值多少可以根据实际情况进行取值,需要快速运算则N可以取小一点,需要足够的运算精度,则N可以取大一点。通过迭代计数器410控制第一加法移位电路420、第二加法移位电路430、判断电路440、第二数据选择器450和第三数据选择器460进行迭代运算,直至i=N为止,即直到当前已经完成N次的迭代运算,则可以输出最后一次迭代计算的结果,即ZN。
在一个实施例中,图5为第一加法移位电路420的电路结构示意图,如图5所示,第一加法移位电路420包括第三加法器4201和第三移位器4202。
第三移位器4202的第一输入端连接滑动移位电路20的输出端、第二输入端连接迭代计数器410的输出端。第三加法器4201的第一输入端连接第三移位器4202的输出端、第二输入端连接第二数据选择器450的输出端以及第三输入端连接判断电路440的输出端。第三加法器4201的输出端连接迭代计数器410的输入端。
具体地,如图5所示,第三移位器4202的第一输入端连接滑动移位电路20的输出端接收修正值X',第二输入端连接迭代计数器410的输出端,接收当前迭代次数i。第三加法器4201的第一输入端连接第三移位器4202的输出、第二输入端连接第二数据选择器450的输出端,接收参数为Yi,i=0、1……i,其中,Y0=Y',以及第三输入端连接判断电路440的输出端接收δi。第三加法器4201的输出端连接迭代计数器410的输入端,输出Yi。也就是说,例如第一加法移位器420接收Y0,则输出Y1、接收Y1,则输出Y2。
在一个实施例中,图6为第二加法移位电路430的电路结构示意图,如图6所示,第二加法移位电路430包括第四加法器4301和第四移位器4302;
第四移位器4302的第一输入端连接迭代计数器的输出端,接收当前迭代次数i、第二输入端连接判断电路440的输出端接收δi。第四加法器4301的第一输入端接收第四移位器4302输出,第四加法器4301的第二输入端连接第三数据选择器460的输出端,接收参数Zi,i=0、1……i,其中,Z0=0。第四加法器4301的输出端连接迭代计数器410的输入端,输出Zi,若迭代计算器确定当前迭代计算完成时,输出迭代值Zn。同理,第二加法移位器420接收Z0,则输出Z1、接收Z1,则输出Z2……。则当i=N时,表示迭代运算完成,迭代计数器输出Zn。其中,Z0=0。
在一个实施例中,图7为判断电路440的电路结构图,如图7所示,判断电路440包括异或运算器4401和第四数据选择器4402。
异或运算器4401的第一输入端连接滑动移位电路20的输出端、第二输入端连接第二数据选择器450的输出端。异或运算器4401的输出端连接第四数据选择器4402的输入端,第四数据选择器4402的输出端连接第一加法移位电路420的输入端和第二加法移位电路430的输入端。
具体地,如图7所示,异或运算器4401的第一输入端连接滑动移位电路20的输出端,接收修正值X',第二输入端连接第二数据选择器450的输出端,接收参数为Yi,i=0、1……i,其中,Y0=Y'。异或运算器4401的输出端连接第四数据选择器4402的输入端,将异或运算结果输出值第四数据选择器4402,由第四数据选择器4402选择输出δi=-sign(yi)·sign(x0)的结果是1还是-1。在本实施例中,通过判断电路440将从原本的δi=-sign(yi)更改为δi=-sign(yi)·sign(x'),从而将输入运算的除数X0的输入范围从大于0扩展至任意非零实数。
在一个实施例中,图8为另一个迭代运算电路的电路结构图。如图8所示,该迭代运算电路包括多个运算电路,即若迭代N次,则有N+1个运算电路,无需迭代计数器控制迭代,采用多个运算电路串联实现迭代计算。
该运算电路呈流水线结构进行串联,运算电路与图7相同包括第一加法移位电路420、第二加法移位电路430、判断电路440、第二数据选择器450和第三数据选择器460。即,各运算电路中的第一加法移位电路420依次串联,第二加法移位电路430依次串联。依次串联是指当前第一加法移位电路420的输出、第二加法移位电路430的输出分别作为下一个第一加法移位电路420和第二加法移位电路430的输入。其中,判断电路440的第一输入端为修正值X',第二输入端的输入值为上一运算电路中第一加法移位电路420的输出值。
在一个实施例中,图9为输出补偿电路40的电路结构图,如图9所示,输出补偿电路40包括第五加法器501和第五移位器502。
第五加法器501的第一输入端和第二输入端连接指数运算电路的输出端。第五移位器502的第一输入端连接第五加法器的输出端和迭代运算电路30的输出端。具体地,第五加法器501的第一输入端和第二输入端连接指数运算电路的输出端,分别接收指数和通过第五加法器501进行计算得到输出补偿值第五移位器502的第一输入端连接第五加法器的输出端得到补偿值连接迭代运算电路30的输出端得到ZN。然后,再用第五移位器502实现zN·2-λ即得到最终除法运算结果y0/x0。输出补偿电路40中的第五移位器502通过连接外部电路或者CPU,将运算得到的结果输出返回至外部电路或者CPU。在本实施例中,通过计算补偿值对运算结果进行补偿后再输出,保证了计算结果的精确性。
在一个实施例中,提供一种基于Cordic算法的运算方法,首先接收运算参数。根据运算参数进行指数运算,得到运算参数对应的指数。即对运算参数进行指数运算,在本实施例中,若进行除法运算,则运算参数包括被除数和除数,进行指数运算时对被除数和除数分别进行指数运算得到两个指数。根据运算参数对应的指数将运算参数进行动态放大,得到运算参数对应的修正值。根据修正值进行迭代计算,获取迭代值。根据运算参数对应的指数对所述迭代值进行补偿得到运算结果。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于Cordic算法的运算电路,所述电路包括:指数运算电路、滑动移位电路、迭代运算电路和输出补偿电路;
所述指数运算电路的输出端与所述滑动移位电路的输入端、所述输出补偿电路的输入端连接;所述滑动移位电路的输出端与所述迭代运算电路的输入端连接;所述迭代运算电路的输出端与所述输出补偿电路的输入端连接;
所述指数运算电路用于对接收到的运算参数进行指数运算,得到所述运算参数对应的指数;所述滑动移位电路用于根据输入的所述指数,对输入的与所述指数对应的所述运算参数进行动态放大,得到所述运算参数对应的修正值;所述迭代运算电路对输入的所述修正值进行迭代计算获取迭代值;所述输出补偿电路根据输入的所述指数,对所述迭代值进行补偿获得运算结果。
2.根据权利要求1所述的电路,其特征在于,所述指数运算电路包括两个选择器阵列,各所述选择器阵列包括多个串联的第一数据选择器。
3.根据权利要求1所述的电路,其特征在于,所述滑动移位电路包括第一加法器、第二加法器、第一移位器和第二移位器;
所述第一加法器的第一输入端连接所述指数运算电路的输出端,第二输入端接入预设值;所述第一加法器的输出端连接所述第一移位器的第一输入端;所述第二加法器的第一输入端连接所述指数运算电路的输出端,第二输入端接入所述预设值;所述第二加法器的输出端连接所述第二移位器的第一输入端。
4.根据权利要求1所述的电路,其特征在于,所述迭代运算电路包括运算电路和迭代计数器;所述运算电路包括第一加法移位电路、第二加法移位电路、判断电路、第二数据选择器和第三数据选择器;
所述第二数据选择器的输入端连接所述滑动移位电路的输出端和所述迭代计数器的输出端;所述判断电路的输入端连接所述滑动移位电路的输出端和所述第二数据选择器的输出端;所述第一加法移位电路的输入端连接所述滑动移位电路的输出端、所述第二数据选择器的输出端以及所述判断电路的输出端;所述第二加法移位电路的输入端连接所述第三数据选择器的输出端和所述判断电路的输出端;所述第三数据选择器的输入端连接所述迭代计数器的输出端;所述第一加法移位电路的输出端和第二加法移位电路的输出端连接所述迭代计数器的输入端。
5.根据权利要求4所述的电路,其特征在于,所述第一加法移位电路包括第三加法器和第三移位器;
所述第三移位器的第一输入端连接所述滑动移位电路的输出端、第二输入端连接所述迭代计数器的输出端;所述第三加法器的第一输入端连接所述第三移位器的输出端,第二输入端连接所述第二数据选择器的输出端,第三输入端连接所述判断电路的输出端;所述第三加法器的输出端连接所述迭代计数器的输入端。
6.根据权利要求4所述的电路,其特征在于,所述第二加法移位电路包括第四加法器和第四移位器;
所述第四移位器的第一输入端连接所述迭代计数器的输出端,第二输入端连接所述判断电路的输出端,输出端连接所述第四加法器的第一输入端;所述第四加法器的第二输入端连接所述第三数据选择器的输出端;所述第四加法器的输出端连接所述迭代计数器。
7.根据权利要求4所述的电路,其特征在于,所述判断电路包括异或运算器和第四数据选择器;
所述异或运算器的第一输入端连接所述滑动移位电路的输出端,第二输入端连接所述第二数据选择器的输出端;所述异或运算器的输出端连接所述第四数据选择器的输入端,所述第四数据选择器的输出端连接所述第一加法移位电路的输入端和第二加法移位电路的输入端。
8.根据权利要求1所述的电路,其特征在于,所述迭代运算电路包括多个运算电路;各所述运算电路串联。
9.根据权利要求1所述的电路,其特征在于,所述输出补偿电路包括第五加法器和第五移位器;
所述第五加法器的第一输入端和第二输入端连接所述指数运算电路的输出端;所述第五移位器的第一输入端连接所述第五加法器的输出端和所述迭代运算电路的输出端。
10.一种基于Cordic算法的运算方法,其特征在于,应用于权利要求1-9任一项所述的运算电路中,所述方法包括:
指数运算电路接收运算参数;
指数运算电路根据所述运算参数进行指数运算,得到所述运算参数对应的指数;
滑动移位电路根据所述运算参数对应的指数将所述运算参数进行动态放大,得到所述运算参数对应的修正值;
迭代运算电路根据所述修正值进行迭代计算,获取迭代值;
输出补偿电路根据所述运算参数对应的指数对所述迭代值进行补偿得到运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910278618.7A CN110147218B (zh) | 2019-04-09 | 2019-04-09 | 基于Cordic算法的运算电路与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910278618.7A CN110147218B (zh) | 2019-04-09 | 2019-04-09 | 基于Cordic算法的运算电路与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110147218A CN110147218A (zh) | 2019-08-20 |
CN110147218B true CN110147218B (zh) | 2021-05-11 |
Family
ID=67588257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910278618.7A Active CN110147218B (zh) | 2019-04-09 | 2019-04-09 | 基于Cordic算法的运算电路与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110147218B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113721886A (zh) * | 2020-05-25 | 2021-11-30 | 瑞昱半导体股份有限公司 | 对数计算方法及对数计算电路 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1377533A (zh) * | 1999-09-30 | 2002-10-30 | 因芬尼昂技术股份公司 | 用于产生扩展编码信号的方法和装置 |
CN102073471A (zh) * | 2010-12-08 | 2011-05-25 | 东莞市泰斗微电子科技有限公司 | 一种处理器Cordic迭代运算方法及电路 |
CN102073472A (zh) * | 2011-01-05 | 2011-05-25 | 东莞市泰斗微电子科技有限公司 | 一种三角函数cordic迭代运算协处理器及运算处理方法 |
CN102323878A (zh) * | 2011-05-31 | 2012-01-18 | 电子科技大学 | 一种用于cordic算法模校正的电路装置及方法 |
CN102542336A (zh) * | 2011-12-23 | 2012-07-04 | 西安奇维科技股份有限公司 | 一种基于fpga 的三角函数实现方法 |
US8572150B1 (en) * | 2007-10-05 | 2013-10-29 | Xilinx, Inc. | Parameterization of a CORDIC algorithm for providing a CORDIC engine |
CN105302519A (zh) * | 2014-07-24 | 2016-02-03 | Arm有限公司 | 用于执行浮点平方根运算的装置和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101257319B (zh) * | 2008-04-09 | 2011-07-20 | 浙江大学 | 一种全数字对数自动增益控制装置及方法 |
-
2019
- 2019-04-09 CN CN201910278618.7A patent/CN110147218B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1377533A (zh) * | 1999-09-30 | 2002-10-30 | 因芬尼昂技术股份公司 | 用于产生扩展编码信号的方法和装置 |
US8572150B1 (en) * | 2007-10-05 | 2013-10-29 | Xilinx, Inc. | Parameterization of a CORDIC algorithm for providing a CORDIC engine |
CN102073471A (zh) * | 2010-12-08 | 2011-05-25 | 东莞市泰斗微电子科技有限公司 | 一种处理器Cordic迭代运算方法及电路 |
CN102073472A (zh) * | 2011-01-05 | 2011-05-25 | 东莞市泰斗微电子科技有限公司 | 一种三角函数cordic迭代运算协处理器及运算处理方法 |
CN102323878A (zh) * | 2011-05-31 | 2012-01-18 | 电子科技大学 | 一种用于cordic算法模校正的电路装置及方法 |
CN102542336A (zh) * | 2011-12-23 | 2012-07-04 | 西安奇维科技股份有限公司 | 一种基于fpga 的三角函数实现方法 |
CN105302519A (zh) * | 2014-07-24 | 2016-02-03 | Arm有限公司 | 用于执行浮点平方根运算的装置和方法 |
Non-Patent Citations (1)
Title |
---|
基于浮点数的CORDIC算法的研究与设计;常艳蕊;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120215;I138-53 * |
Also Published As
Publication number | Publication date |
---|---|
CN110147218A (zh) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050273483A1 (en) | Complex logarithmic ALU | |
KR102358013B1 (ko) | 3-경로 단일 곱셈-누산기 설계에서 고속 근경로 증분합 | |
CN111984227B (zh) | 一种针对复数平方根的近似计算装置及方法 | |
CN109634558A (zh) | 可编程的混合精度运算单元 | |
US9851947B2 (en) | Arithmetic processing method and arithmetic processor having improved fixed-point error | |
US20170017467A1 (en) | Integer/floating point divider and square root logic unit and associates methods | |
CN110147218B (zh) | 基于Cordic算法的运算电路与方法 | |
GB2543511A (en) | Rounding reciprocal square root results | |
CN111666064B (zh) | 基于cordic的三角函数循环迭代求解方法和装置 | |
CN108228135B (zh) | 一种运算多种超越函数的装置 | |
CN111666065B (zh) | 基于cordic的三角函数流水线迭代求解方法和装置 | |
CN111984226B (zh) | 一种基于双曲cordic的立方根求解装置及求解方法 | |
CN108021477B (zh) | 执行递归操作的方法、计算机设备、制造和测试方法 | |
JP5733379B2 (ja) | プロセッサおよび演算方法 | |
US20190171419A1 (en) | Arithmetic processing device and control method of arithmetic processing device | |
Wei et al. | Divide and conquer: floating-point exponential calculation based on Taylor-series expansion | |
JP2004032432A (ja) | 受信装置 | |
CN115037340A (zh) | 信号检测方法、装置、电子设备及存储介质 | |
EP3491535A2 (en) | System and method for piecewise linear approximation | |
US9032009B2 (en) | Multiplier circuit | |
CN110275693B (zh) | 用于随机计算的多加数加法电路 | |
KR20070018981A (ko) | 복소수 로그 alu | |
KR100943580B1 (ko) | 제곱근 계산 장치 및 방법 | |
Lakshmi et al. | Low latency VLSI architecture for the radix-4 CORDIC algorithm | |
US20240134609A1 (en) | Efficient computation of a shared exponent |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province Patentee after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province Patentee before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |