CN1671090A - 一种计算平方根的装置 - Google Patents

一种计算平方根的装置 Download PDF

Info

Publication number
CN1671090A
CN1671090A CN 200410030353 CN200410030353A CN1671090A CN 1671090 A CN1671090 A CN 1671090A CN 200410030353 CN200410030353 CN 200410030353 CN 200410030353 A CN200410030353 A CN 200410030353A CN 1671090 A CN1671090 A CN 1671090A
Authority
CN
China
Prior art keywords
counting circuit
median
corresponding levels
radicand
result
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.)
Granted
Application number
CN 200410030353
Other languages
English (en)
Other versions
CN100520708C (zh
Inventor
童朝伍
王小璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HiSilicon Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2004100303532A priority Critical patent/CN100520708C/zh
Publication of CN1671090A publication Critical patent/CN1671090A/zh
Application granted granted Critical
Publication of CN100520708C publication Critical patent/CN100520708C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Manipulation Of Pulses (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种计算平方根的装置,该装置包括串联连接的多级计算电路,各级计算电路依次计算出平方根的一个比特位,其中首级计算电路计算出平方根的最高比特位,末级计算电路计算出平方根的最低比特位。该装置根据输入的被开方数,从首级开始每级加入输入的被开方数的低2位进行判断,逐位计算平方根的各位。该装置具有运算简单、所用资源少和处理延时小等特点。

Description

一种计算平方根的装置
技术领域
本发明涉及运算装置,尤其涉及一种计算平方根的装置。
背景技术
在WCDMA某基带处理芯片设计中,在一定的应用环境下需要实时对天线上的数据流进行削波处理后送到中频处理。这种处理首先需要对从发射信号的功率值中实时计算其信号等效幅度。即类似复数取模的运算,因此需要逻辑实现开方运算。
目前采用查表法实现开方运算,其结构图1所示。将被开方数作为地址,其平方根作为对应地址的内容存储在ROM内。这样,当被开方数作为地址进行查询时,对应地址的数据就是该被开方数的平方根,采用该方法需要事先获得平方根表并存储在ROM内。这种方法虽然不需要计算,但存在以下缺点:
1、存储容量巨大。为实现32bit平方根运算,查找表ROM的容量为232×17bit,即68Gbit。
2、处理延时较大。对于232×17bit的ROM,其查询延时较长,直接导致数字系统的时钟频率降低。
3、对于大容量查找表,其维护困难。对于232×17bit的ROM配置文件的维护比较困难,当需要改变平方根舍入方法时,必须修改ROM的内容,需要的工作量较大。
4、重用性不高。当需要32bit无符号整数的平方根精确到小数时,上述ROM容量和查找表内容都需要修改。
发明内容
本发明提供一种计算平方根的装置,以解决现有技术中通过查表计算平方根存在需要的存储容量大、处理延时较大和维护困难的问题。
实现本发明的技术方案如下:
一种计算平方根的装置,其特征在于该装置至少包括计算平方根整数部分的多级计算电路,该多级计算电路串联连接,各级计算电路依次计算出平方根整数部分的一个比特位,其中计算整数部分的首级计算电路计算出平方根的最高比特位,计算整数部分的末级计算电路计算出平方根整数部分的最低比特位;
所述计算整数部分的首级计算电路取输入的被开方数的二进制的高2位构成比较值,将该比较值与中间值的初始值1进行比较,如果该比较值大于或等于中间值则输出1作为平方根的最高位,否则输出0作为平方根的最高位;将“比较值-中间值*平方根的最高位”代替被开方数的高2位后作为被开方数输出到下一级计算电路,将“平方根的最高位*4+1”的计算结果作为中间值输出到下一级计算电路;
所述计算整数部分的首级计算电路之后和计算整数部分的末级计算电路之前的每级计算电路,从本级输入的被开方数的二进制的最高位向低位取比前一级计算电路所取位数多2位的数构成本级计算电路的比较值,将该比较值与本级输入的中间值进行比较,如果该比较值大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果;将“本级的比较值-本级的中间值*本级的计算结果”代替被开方数中构成本级比较值的相应位后作为被开方数输出到下一级计算电路,将“已计算出的平方根的各位按顺序构成的数*4+1”的计算结果作为中间值输出到下一级计算电路;
所述计算整数部分的末级计算电路从本级输入的被开方数的二进制的最高位向低位取比前一级计算电路所取位数多2位的数构成本级计算电路的比较值,将该比较值与本级输入的中间值进行比较,如果该比较值大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果。
其中:
所述装置还包括一级计算平方根小数部分的计算电路,该级计算电路与所述计算整数部分的末级计算电路连接,用于计算出平方根小数的一个比特位;所述计算整数部分的末级计算电路还将“(本级的比较值-本级的中间值*本级的计算结果)*4”的计算结果作为被开方数输出给下一级计算电路,将“由已计算出的平方根的各位按顺序构成的数*4+1”的计算结果作为中间值输出给下一级计算电路;所述计算小数部分的计算电路将本级输入的被开方数与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果。
所述装置还包括计算平方根小数部分的多级计算电路,该多级计算电路串联连接,各级计算电路依次计算出平方根小数部分的一个比特位;其中计算小数部分的首级计算电路计算出平方根小数部分的最高比特位,计算小数部分的末级计算电路计算出平方根小数部分的最低比特位;所述计算小数部分的首级计算电路与所述计算整数部分的末级计算电路连接;所述计算整数部分的末级计算电路还将“(本级的比较值-本级的中间值*本级的计算结果)*4”作为下一级的被开方数,将“已计算出的平方根的各位按顺序构成的数*4+1”作为下一级计算电路的中间值;所述计算整数部分的末级计算电路之后和计算小数部分的末级计算电路之前的每级计算小数部分的计算电路,将本级输入的被开方数作为比较值与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果;将“(本级的比较值-本级的中间值*本级的计算结果)*4”作为下一级的被开方数,将“由已计算出的平方根的各位按顺序构成的数*4+1”作为下一级计算电路的中间值;所述计算小数部分的末级计算电路将本级输入的被开方数作为比较值与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果。
本发明具有以下有益效果:
1、运算简单,所用资源较少。
2、处理延时小。每一级的运算只有减法和比较(移位和拼接不占用运算单元和运算时间),处理延时很小,整个数字系统的处理时钟可以很高。
3、结构灵活。只要延长流水级数,就可以实现任意输入输出的开方运算;对结果做相应处理,就可以实现所需的舍入处理。
附图说明
图1为现有技术计算平方根的示意图;
图2为本发明的装置结构示意图;
图2A为平方根精确到整数部分的计算平方根装置结构图;
图2B为平方根精确到小数部分的计算平方根装置结构图;
图3A为计算32位数的平方根整数部分的装置结构图;
图3B为计算32位数的平方根的整数部分和小数部分的装置结构图;
图4A为计算整数的首级计算电路的结构示意图;
图4B为图4A所示首级计算电路内部结构及信号传递示意图;
图5A为计算整数的首级和计算小数的首级计算电路之间的各级计算电路的结构示意图;
图5B为图5A所示计算电路内部结构及信号传递示意图;
图6为计算小数部分的计算电路的结构示意图;
图7为精确到整数部分时计算整数的末级计算电路的结构示意图。
具体实施方式
本发明采用迭代运算来求平方根,其理论依据如下:
1、当被开方的无符号整数的位宽为偶数时(2n+2)
假设被开方数为B,
B=B[(2n+1):0]=∑(2n+1)=∑bi*2i,i=(2n+1),(2n),…,1,0,-1,…,-∞,
当i>=0时,bi∈(0,1);当i<0时,bi=0。
对于B,其平方根为A,则A的整数部分有(n+1)位,且可能有小数部分,可表示为:
A=A[n:-∞]=∑(n)=∑aj*2j,j=n,(n-1),…,1,0,-1,-2,…,-∞,aj∈(0,1).
下面的迭代过程就是要从B=B[(2n+1):0]通过迭代,求出A=A[n:-∞]。
为了方便叙述,用∑m表示∑ai*2i,i=m,m-1,…,-∞,
同时设置迭代运算过程中的缓存变量remain和tmp。
初始化:
设remain=B=A2
tmp=0*4+1=1.
(1)求an
如果an=0,则 A<2n,B=A2<2(2n);如果an=1,则A>=2n,B=A2>=2(2n)
所以,
如果remain=B>=tmp*2(2n),则an=1;
如果remain=B<tmp*2(2n),则an=0;
remain=remain-tmp*an*2(2n)
=(∑n)2-an*2(2n)
=(an*2(2n)+an*∑(n-1)*2(n+1)+(∑(n-1))2)-an*2(2n)
=an*∑(n-1)*2(n+1)+(∑(n-1))2
tmp=an*4+1。
(2)求a(n-1)
remain=an*∑(n-1)*2(n+1)+[∑(n-1)]2
=an*2(n+1)*[an-1*2n-1+∑(n-2)]+[an-1*2(n-1)+∑(n-2)]2
=[an*an-1*2(2n)+an*2(n+1)*∑(n-2)]+{an-1*2(2n-2)+an-1*2n *∑(n-2)+[∑(n-2)]2}
=(an*4+1)*an-1*2(2n-2)+an-1*2n*∑(n-2)+an*2(n+1)*∑(n-2)+[∑(n-2)]2
因为∑(n-2)<2(n-1)
如果an-1=0,则remain=an*2(n+1)*∑(n-2)+[∑(n-2)]2<an*2(2n)+22n-2=tmp*2(2n-2)
如果an-1=1,则remain=(an*4+1)*2(2n-2)+…>=tmp*2(2n-2)
所以,
如果remain>=tmp*2(2n-2),则an-1=1;
如果remain<tmp*2(2n-2),则an-1=0;
remain=remain-tmp*an-1*2(2n-2)
=an*∑(n-1)*2(n+1)+[∑(n-1)]2-(an*4+1)*an-1*2(2n-2)
=an*2(n+1)*∑(n-2)+an-1*2n*∑(n-2)+[∑(n-2)]2
=(an*2(n+1)+an-1*2n)*∑(n-2)+[∑(n-2)]2
tmp=(an*21+an-1*20)*4+1
(3)求a(n-2)
remain=(an*2(n+1)+an-1*2n)*∑(n-2)+[∑(n-2)]2
=(an*2(n+1)+an-1*2n)*[an-2*2(n-2)+∑(n-3)]+[an-2*2(n-2)+∑(n-3)]2
=[(an*2(n+1)+an-1*2n)*an-2*2(n-2)+(an*2(n+1)+an-1*2n)*∑(n-3)]
+{an-2*2(2n-4)+an-2*2(n-1)*∑(n-3)+[∑(n-3)]2}
=[(an*21+an-1*20)*4+1]*an-2*2(2n-4)+an-2*2(n-1)*∑(n-3)
+(an*2(n+1)+an-1*2n)*∑(n-3)+[∑(n-3)]2
因为∑(n-3)<2(n-2)
如果an-2=0,则remain=(an*2(n+1)+an-1*2n)*∑(n-3)+[∑(n-3)]2<(an*21+an-1*20)*2(2n-2)+22n-4=tmp*2(2n-4)
如果an-2=1,则remain=[(an*21+an-1*20)*4+1]*2(2n-4)+…>=tmp*2(2n-4)
所以,
如果remain>=tmp*2(2n-4),则an-2=1;
如果remain<tmp*2(2n-4),则an-2=0;
remain=remain-tmp*an-2*2(2n-4)
=(an*2(n+1)+an-1*2n+an-2*2(n-1))*∑(n-3)+[∑(n-3)]2
tmp=(an*22+an-1*21+an-2*20)*4+1。
……
remain=remain-tmp*an-2*2(2n-4)
=(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2))*∑(m)+[∑(m)]2
tmp=(an*2(n-m-1)+an-1*2(n-m-2)+an-2*2(n-m-3)+…+a(m+1)*20)*4+1。
(4)求a(m)
remain=(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2))*∑(m)+[∑(m)]2
=(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2))*[am*2(m)+
∑(m-1)]+[am*2(m)+∑(m-1)]2
=(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2))*am*2(m)
+(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2))*∑(m-1)
+am*2(2m)+am*2(m+1)*∑(m-1)+[∑(m-1)]2
=[(an*2(n-m-1)+an-1*2(n-m-2)+an-2*2(n-m-3)+…+a(m+1)*20)*4+1]*am*
2(2m)+am*2(m+1)*∑(m-1)+(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2))
*∑(m-1)+[∑(m-1)]2
因为∑(m-1)<2(m)
如果am=0,则remain=(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2))*∑(m-1)+[∑(m-1)]2<(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2))*2(m)+2(2m)=tmp*2(2m)
如果am=1,则remain=[(an*2(n-m-1)+an-1*2(n-m-2)+an-2*2(n-m-3)+…+a(m+1)*20)*4+1]*2(2m)+…>=tmp*2(2m)
所以,
如果remain>=tmp*2(2m),则am=1;
如果remain<tmp*2(2m),则am=0;
remain=remain-tmp*am*2(2m)
=(an*2(n+1)+an-1*2n+an-2*2(n-1)+…+am+1*2(m+2)+am*2(m+1))*∑(m-1)
+[∑(m-1)]2
tmp=(an*2(n-m)+an-1*2(n-m-1)+an-2*2(n-m-2)+…+a(m+1)*21+a(m)*20)*4+1。
(5)求a(m-1)
……
上述推导过程从高位开始,每次加入被开方的无符号数的低2位进行判断,逐位计算其平方根的各位。对于一个位宽为偶数的无符号整数,其平方根可能为小数,上述运算过程同样可以向下推导出小数部分的值。上述迭代运算过程中的每一步,只进行比较、移位和减运算,计算简单可行。
忽略推导中的证明过程,求32bit无符号数的平方根的运算过程可以用下列过程表示:
设被开方数为b[31:0](“0”为最低位,“31”为最高位,表示从0位到31位,共32位,以下同理),求其平方根a[15:-∞],-∞表示开方的结果可以精确到小数点后的任意位。
remain[31:0]=b[31:0]
tmp[1:0]=0*4+1;
(A)计算a[15](即平方根的最高位)
如果remain[31:30]>=tmp[1:0],则a[15]=1,否则a[15]=0。
remain[31:30]=remain[31:30]-tmp[1:0]*a[15].
tmp[3:0]=a[15]*4+1;
(B)计算a[14]
如果remain[31:28]>=tmp[3:0],则a[14]=1,否则a[14]=0。
remain[31:28]=remain[31:28]-tmp[3:0]*a[14]。
tmp[5:0]=a[15:14]*4+1。
(C)计算a[13]
如果remain[31:26]>=tmp[5:0],则a[13]=1,否则a[13]=0。
remain[31:26]=remain[31:26]-tmp[5:0]*a[13]。
tmp[7:0]=a[15:13]*4+1。
(D)计算a[12]
如果remain[31:24]>=tmp[7:0],则a[12]=1,否则a[12]=0。
remain[31:24]=remain[31:24]-tmp[7:0]*a[12]。
tmp[9:0]=a[15:12]*4+1。
……
tmp[29:0]=a[15:2]*4+1;
(E)计算a[1]
如果remain[31:2]>=tmp[29:0],则a[1]=1,否则a[1]=0。
remain[31:2]=remain[31:2]-tmp[29:0]*a[1]。
tmp[31:0]=a[15:1]*4+1。
(F)计算a[0]
如果remain[31:0]>=tmp[31:0],则a[0]=1,否则a[0]=0。
remain[33:0]=(remain[31:0]-tmp[31:0]*a[0]*20)*4。(这步的处理相当于前面的处理中取被开方数的2bit,乘4的含义是将被开方数的位宽增加2位,即低2位移入0。,以下计算平方根的小数位同理)
tmp[33:0]=a[15:0]*4+1。
(G)计算a[-1]
如果remain[33:0]>=tmp[33:0],则a[-1]=1,否则a[-1]=0。
remain[35:0]=(remain[33:0]-tmp[33:0]*a[-1]*20)*4。tmp[35:0]=a[15:-1]*4+1。
……
一个实例如下:
b[31:0]=32′b_01_10_11_01_00_00_01_00_10_01_00_10_1110_00_01,
a[15:0]=16′b1010_0111_0000_1111。
remain[31:0]=32′b_01_10_11_01_00_00_01_00_10_01_00_10_11_10_00_01
tmp[1:0]=0*4+1=1;
1、计算a[15]
(remain[31:30]=2′b01)>=tmp[1:0],则a[15]=1。
remain[31:0]=remain[31:0]-tmp[1:0]*a[15]*230=remain[31:0]-1*230
remain[31:0]=32′b_00_10_11_01_00_00_01_00_10_01_00_10_11_10_00_01
tmp[3:0]=a[15]*4+1=4′b_01_01。
2、计算a[14]
(remain[31:28]=4′b0010)<tmp[3:0],则a[14]=0。
remain[31:0]=remain[31:0]-tmp[3:0]*a[14]*228=remain[31:0]-0。
remain[31:0]=32′b_00_10_11_01_00_00_01_00_10_01_00_10_11_10_00_01
tmp[5:0]=a[15:14]*4+1=6′b_10_01;
3、计算b[13]
(remain[31:26]=6′b_00_10_11)>=tmp[5:0],则a[13]=1。
remain[31:0]=remain[31:0]-tmp[5:0]*a[13]*226=remain[31:0]-(6′b001001)*226
remain[31:0]=32′b_00_00_10_01 00_00_01_00_10_01_00_10_11_10_00_01
tmp[7:0]=a[15:13]*4+1=8′b_01_01_01;
4、计算a[12]
(remain[31:24]==8′b_00_00_10_01)<tmp[7:0],则a[12]=0。
remain[31:0]=remain[31:0]-tmp[7:0]*a[12]*224=remain[31:0]-0。
remain[31:0]=32′b_00_00_10_01_00_00_01_00_10_01_00_10_11_10_00_01。
……
在上述过程中,如果被开方的无符号数是奇数,可以在高位补“0”,使其位宽变成相应的偶数,进行计算。
如果被开方的无符号数具有小数部分,则先判断整数部分是偶数还是奇数,并进行迭代处理。当然也可以先通过移位,把浮点数转换成整数(注意,应该进行偶数位移位),进行开方运算后,再通过移位求得实际的平方根。
在上述的迭代运算过程中,如果仅仅需要整数结果,只要在求a[-1]后做相应的舍入处理即可,实现简单。
根据上述的迭代运算过程,求平方根的装置如图2所示,该装置包括多级计算电路,每一级计算电路计算出平方根的一个比特位。多级计算电路按流水方式串联连接。
如果平方根保留整数,则多级计算电路全部为计算整数部分的计算电路,其中计算整数部分的首级计算电路计算出平方根的最高比特位,计算整数部分的末级计算电路计算出平方根整数部分的最低比特位。
如果要精确到小数位,则多级计算电路除了包括前述的计算整数部分的计算电路外,还包括计算小数部分的计算电路;其中计算小数部分的首级计算电路计算出平方根的小数部分的最高比特位,计算小数部分的末级计算电路计算出平方根小数部分的最低比特位。
参阅图2A所示计算平方根装置,多级串联的计算电路用于只计算平方根的整数部分。
参阅图2B所示计算平方根装置,多级串联的计算电路用于计算平方根整数部分和小数部分。在该结构的装置中,除了计算整数的末级电路外其他计算整数部分的计算电路与图2A中的相同。其电路工作原理如下:
(1)计算整数的首级计算电路取输入的被开方数的二进制的高2位构成比较值,将该比较值与中间值的初始值1进行比较,如果该比较值大于或等于中间值则得到平方根的最高位a[最高位]=1,否则最高位a[最高位]=0;将“比较值-中间值*平方根的最高位”代替被开方数的高2位作为被开方数输出到下一级(或称后一级)计算电路,将“平方根的最高位*4+1”作为中间值输出到下一级计算电路。
(2)计算整数的首级计算电路之后和计算整数的末级计算电路之前中的每级计算电路,从本级输入的被开方数的二进制的最高位向低位取比前一级计算电路所取位数多2位的数构成比较值,并与该级输入的中间值进行比较,如果该比较值大于或等于中间值则得到该级的计算结果为1,否则得到该级的计算结果为0;将“本级的比较值-本级的中间值*计算结果”代替被开方数中构成该级比较值的相应位作为被开方数输出到下一级计算电路,将“平方根中已计算出的各位顺序构成的数*4+1”作为中间值输出到下一级计算电路。
(3)如果只精确到整数部分,则计算整数的末级计算电路从输入的被开方数的二进制的最高位向低位取比前一级计算电路所取位数多2位的数(实际上取全部位宽的被开方数)构成本级计算电路的比较值,将该比较值与该级输入的中间值进行比较,如果该比较值大于或等于中间值则输出1作为该级的计算结果,否则输出0作为该级的计算结果。
如果精确到小数部分,则计算整数的末级计算电路与前级电路一样,还要将“(本级的比较值-本级的中间值*计算结果)*4”代替被开方数中构成该级比较值的相应位作为被开方数输出到下一级计算电路,将“平方根中已计算出的各位顺序构成的数*4+1”作为中间值输出到下一级计算电路。
(4)如果计算小数部分的只有一级计算电路,则该级计算电路将本级输入的被开方数与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果。
如果计算小数部分的为多级计算电路,则:
计算整数部分的末级计算电路之后和计算小数部分的末级计算电路之前的每级计算小数部分的计算电路,将本级输入的被开方数作为比较值与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果;将“(本级的比较值-本级的中间值*本级的计算结果)*4”作为下一级的被开方数,将“由已计算出的平方根的各位按顺序构成的数*4+1”作为下一级计算电路的中间值;
计算小数部分的末级计算电路将本级输入的被开方数作为比较值与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果。
下面以求32bit无符号数b[31:0]的平方根a[15:-∞]为例,如图3A、图3B所示。其中a[15:0]表示开方数的整数部分,a[-1:-∞]表示开方数的小数部分,-∞表示可以精确到小数点之后的任意位。n=15
为了叙述方便,每一级的输入信号remain[31:0]称为被开方数,而从中取的多位数则称为比较值,如,比较值remain[31:30],remain[31:28]等。
参阅图3B所示,各级计算电路依次计算出平方根的一个比特位,计算整数的首级计算电路计算出平方根的最高位a[15],平方根的小数部分可以精确到任意位。
参阅图4A、图4B所示,计算整数的首级计算电路包括初始化单元、第一运算单元、第二运算单元和第三运算单元。
初始化单元,把输入的无符号数b[31:0]的值赋给32个寄存器实现第一级的被开方数remain[31:0],把逻辑信号“0,1”赋给2个寄存器实现中间值tmp_16[1:0],其中初始值取1。
第一运算单元,从该单元输入的被开方数remain[31:0]中取高2位构成比较值remain[31:30],并与信号tmp_16[1:0]的值进行比较,通过一个2选1的多路选择器实现:当比较值remain[31:30]大于等于中间值tmp_16[1:0]时多路选择器的输出信号a_nxt[15]为逻辑信号1(高电平),否则为逻辑0(低电平),并把信号a_nxt[15]的值赋给一个寄存器得到平方根的最高位a[15]。
第二运算单元,将该单元比较值remain[31:30]、中间值tmp_16[1:0]以及最高位a_nxt[15]的值进行“remain[31:30]-tmp_16[1:0]*a_nxt[15]”运算,把运算结果重新赋给32个寄存器中表示高2位的寄存器,得到下一级计算电路(即第二级计算电路)的被开方数remain[31:0]。该第二运算单元采用现有的乘法电路和减法电路实现。
第三运算单元,将该单元的输入信号a_nxt[15](注a[15]是a_nxt[15]用寄存器锁一拍之后的值,两者时序不同)的值通过乘法电路和加法电路进行a_nxt[15]*4+1的运算,把运算结果赋给4个寄存器得到下一级计算电路的中间值tmp_15[3:0]。
计算整数的首级计算电路之后和计算小数的首级计算电路之前的所有计算整数的计算电路中,各级计算电路结构相同,只是每一级输入的被开方数remain[31:0]的值和中间值tmp的值不同。如图5A、图5B所示,每级计算电路包括第一运算单元、第二运算单元和第三运算单元。对于平方根的某一位用m表示,即m取值为整数14~0。
第一运算单元,从该单元输入的被开方数remain[31:0]中从高位开始取2m位数构成比较值remain[31:2m],即每一级比前一级多取2位,并将该比较值remain[31:2m]与该级的中间值tmp_(m+1)[(2*(n-m)+1):0]进行比较,通过一个2选1的多路选择器实现:当remain[31:2m]大于等于tmp_(m+1)[(2*(n-m)+1):0]时多路选择器的输出信号a_nxt[m]为逻辑信号1(高电平),否则为逻辑0(低电平),并把a_nxt[m]的值付给一个寄存器,得到平方根的当前位a[m]。
第二运算单元,将该单元的比较值remain[31:2m]的值、中间值tmp_(m+1)[(2*(n-m)+1):0]以及信号a_nxt[m]的值通过乘法电路和减法电路进行remain[31:2m]-tmp_(m+1)[(2*(n-m)+1):0]*a_nxt[m]运算,把运算结果重新赋给32个寄存器中表示高2*(n-m+1)位的寄存器,即将运算结果替换该级被开方数remain[31:0]中的高2*(n-m+1)位,得到下一级计算电路(即第二级计算电路)的被开方数remain[31:0]。
第三运算单元,把该单元的输入信号a_nxt[15:m](即a[15:m])的值通过乘法电路和加法电路进行a_nxt[15:m]*4+1的运算,把运算结果赋给2*(n-m+2)个寄存器得到下一级计算电路的中间值tmp_m[(2*(n-m)+3):0]。
其中a_nxt[15:m](或a[15:m])表示已经计算出平方根的各位按顺序构成的数,如m为13,则a[15:m]表示已经计算出的平方根的a[15]、a[14]、a[13]三个比特位按高位到低位的顺序构成的数。
参阅图6所示,平方根小数的位数用q表示,其中0>=q>-∞;n=15。
对于小数部分的计算实际上(31+2*|q|)=(2*(n-q)+1)(注:31=32-1,32为被开放数的位宽);这样表达为了整数部分和小数部分计算的连贯性。
(1)计算小数的末级计算电路之前的所有计算小数的计算电路中,各级计算电路结构相同,只是每一级输入的被开方数remain[(31+2*|q|):0]的值和中间值tmp的值不同。如图5所示,每级计算电路包括第四运算单元、第五运算单元和第三运算单元。
对于第四运算单元,是把该单元输入信号中remain[(31+2*|q|):0]的值与信号tmp_(q+1)[(2*(n-q)+1):0]的值进行比较,通过一个2选1的多路选择器实现当[(31+2*|q|):0]大于等于tmp_(q+1)[(2*(n-q)+1):0]时多路选择器的输出信号a_nxt[q]为逻辑信号1(高电平)否则为逻辑0(低电平),并把a_nxt[q]的值付给一个寄存器实现的信号a[q]。2选1的多路选择器的控制与前述的第一运算单元同理。
对于第五运算单元,是把该单元输入信号remain[(31+2*|q|:0]的值、信号tmp_(q+1)[(2*(n-q)+1):0]以及信号a_nxt[q]的值通过乘法电路和减法电路进行remain[(31+2*|q|):0]-tmp_(q+1)[(2*(n-q)+1):0]*a_nxt[q]的运算,把运算结果通过乘法电路乘以4之后,重新赋给(31+2*(|q|+1))个寄存器实现的信号remain[(31+2*(|q|+1)):0]。
对于第三运算单元,是把该单元的输入信号a_nxt[15:q]的值通过乘法电路和加法电路进行a_nxt[15:q]*4+1的运算,把运算结果赋给(2*(n-q)+3)个寄存器实现的信号tmp_q[(2*(n-q)+3):0]。
(2)计算小数的末级计算电路包括第四运算单元,该单元输入信号中remain[(31+2*|q|):0]的值与信号tmp_(q+1)[(2*(n-q)+1):0]的值进行比较,通过一个2选1的多路选择器实现当[(31+2*|q|):0]大于等于tmp_(q+1)[(2*(n-q)+1):0]时多路选择器的输出信号a_nxt[q]为逻辑信号1(高电平)否则为逻辑0(低电平),并把a_nxt[q]的值付给一个寄存器实现的信号a[q]。
如图7所示,对于图2A中的计算整数的末级计算电路可只包括第一运算单元。该运算单元从输入的被开方数中取全部位数构成比较值remain[31:0],将与中间值tmp_1[31:0]的值进行比较,通过一个2选1的多路选择器实现:当比较值remain[31:0]大于或等于tmp_1[31:0]时多路选择器的输出信号a_nxt[0]为逻辑信号1(高电平),否则为逻辑0(低电平),并把a_nxt[0]的值付给一个寄存器,得到平方根的整数部分的最后一位a[0]。
上述各运算单元,本领域的普通技术人员可通过现有的比较、加法、减法和移位电路来实现。
从上述可知,对于本发明的装置,只要延长流水级数,就可以对输入的任一数进行开方运算;对结果做相应处理(舍入处理),就可精确到任意一位。

Claims (12)

1、一种计算平方根的装置,其特征在于该装置至少包括计算平方根整数部分的多级计算电路,该多级计算电路串联连接,各级计算电路依次计算出平方根整数部分的一个比特位,其中计算整数部分的首级计算电路计算出平方根的最高比特位,计算整数部分的末级计算电路计算出平方根整数部分的最低比特位;
所述计算整数部分的首级计算电路取输入的被开方数的二进制的高2位构成比较值,将该比较值与中间值的初始值1进行比较,如果该比较值大于或等于中间值则输出1作为平方根的最高位,否则输出0作为平方根的最高位;将“比较值-中间值*平方根的最高位”代替被开方数的高2位后作为被开方数输出到下一级计算电路,将“平方根的最高位*4+1”的计算结果作为中间值输出到下一级计算电路;
所述计算整数部分的首级计算电路之后和计算整数部分的末级计算电路之前的每级计算电路,从本级输入的被开方数的二进制的最高位向低位取比前一级计算电路所取位数多2位的数构成本级计算电路的比较值,将该比较值与本级输入的中间值进行比较,如果该比较值大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果;将“本级的比较值-本级的中间值*本级的计算结果”代替被开方数中构成本级比较值的相应位后作为被开方数输出到下一级计算电路,将“已计算出的平方根的各位按顺序构成的数*4+1”的计算结果作为中间值输出到下一级计算电路;
所述计算整数部分的末级计算电路从本级输入的被开方数的二进制的最高位向低位取比前一级计算电路所取位数多2位的数构成本级计算电路的比较值,将该比较值与本级输入的中间值进行比较,如果该比较值大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果。
2、如权利要求1所述的装置,其特征在于,计算整数部分的所有计算电路包括第一运算单元,该第一运算单元从输入的被开方数中取值构成比较值,并将该比较值与输入的中间值比较来输出计算结果。
3、如权利要求2所述的装置,其特征在于,所述第一运算单元包括2选1的多路选择器,该多路选择器两输入端分别输入1和0,其控制端由比较值与中间值的比较结果控制。
4、如权利要求1或2所述的装置,其特征在于,计算整数部分的末级计算电路之前的所有计算电路还包括:
第二运算单元,接受第一运算单元的计算结果,并将“比较值-中间值*第一单元的计算结果”代替被开方数中构成比较值的相应位后得到新的被开方数;
第三运算单元,接受第一运算单元的计算结果,并计算“由已计算出的平方根的各位按顺序构成的数*4+1”的值。
5、如权利要求4所述的装置,其特征在于,所述计算整数部分的首级计算电路还包括初始化单元,分别与第一单元和第二单元连接,用于产生中间值的初始值和将输入的待开方数赋给相应位宽的寄存器。
6、如权利要求5所述的装置,其特征在于,所述初始化单元产生的中间值的初始值为1。
7、如权利要求5或6所述的装置,其特征在于,当计算整数部分的首级计算电路输入的被开方数为的位宽为奇数是,由初始化单元在该被开方数前补0,使其位宽为偶数。
8、如权利要求1所述的装置,其特征在于该装置还包括一级计算平方根小数部分的计算电路,该级计算电路与所述计算整数部分的末级计算电路连接,用于计算出平方根小数的一个比特位;
所述计算整数部分的末级计算电路还将“(本级的比较值-本级的中间值*本级的计算结果)*4”的计算结果作为被开方数输出给下一级计算电路,将“由已计算出的平方根的各位按顺序构成的数*4+1”的计算结果作为中间值输出给下一级计算电路;
所述计算小数部分的计算电路将本级输入的被开方数与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果。
9、如权利要求1所述的装置,其特征在于该装置还包括计算平方根小数部分的多级计算电路,该多级计算电路串联连接,各级计算电路依次计算出平方根小数部分的一个比特位;其中计算小数部分的首级计算电路计算出平方根小数部分的最高比特位,计算小数部分的末级计算电路计算出平方根小数部分的最低比特位;所述计算小数部分的首级计算电路与所述计算整数部分的末级计算电路连接;
所述计算整数部分的末级计算电路还将“(本级的比较值-本级的中间值*本级的计算结果)*4”作为下一级的被开方数,将“已计算出的平方根的各位按顺序构成的数*4+1”作为下一级计算电路的中间值;
所述计算整数部分的末级计算电路之后和计算小数部分的末级计算电路之前的每级计算小数部分的计算电路,将本级输入的被开方数作为比较值与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果;将“(本级的比较值-本级的中间值*本级的计算结果)*4”作为下一级的被开方数,将“由已计算出的平方根的各位按顺序构成的数*4+1”作为下一级计算电路的中间值;
所述计算小数部分的末级计算电路将本级输入的被开方数作为比较值与本级输入的中间值进行比较,如果该被开方数大于或等于中间值则输出1作为本级的计算结果,否则输出0作为本级的计算结果。
10、如权利要求8或9所述的装置,其特征在于,计算小数部分的所有计算电路包括第四运算单元,该第四运算单元将输入的被开方数与输入的中间值比较来输出计算结果。
11、如权利要求10所述的装置,其特征在于,所述第四运算单元包括2选1的多路选择器,该多路选择器两输入端分别输入1和0,其控制端由被开方数与中间值的比较结果控制。
12、如权利要求9所述的装置,其特征在于,计算小数部分的末级计算电路之前的所有计算小数部分的计算电路还包括:
第五运算单元,接收第四运算单元输出的计算结果,并将“比较值-中间值*第四单元的计算结果”得到新的被开方数;
第三运算单元,接收第四运算单元的计算结果,并计算“由已计算出的平方根的各位按顺序构成的数*4+1”的值。
CNB2004100303532A 2004-03-19 2004-03-19 一种计算平方根的装置 Expired - Fee Related CN100520708C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100303532A CN100520708C (zh) 2004-03-19 2004-03-19 一种计算平方根的装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100303532A CN100520708C (zh) 2004-03-19 2004-03-19 一种计算平方根的装置

Publications (2)

Publication Number Publication Date
CN1671090A true CN1671090A (zh) 2005-09-21
CN100520708C CN100520708C (zh) 2009-07-29

Family

ID=35042174

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100303532A Expired - Fee Related CN100520708C (zh) 2004-03-19 2004-03-19 一种计算平方根的装置

Country Status (1)

Country Link
CN (1) CN100520708C (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100465878C (zh) * 2006-12-21 2009-03-04 浙江大学 一种开方运算的方法及其装置
CN105094745A (zh) * 2015-08-19 2015-11-25 国网重庆市电力公司电力科学研究院 基于Microblaze系统的数字化电能表校验仪浮点开方算法的实现方法
CN105892988A (zh) * 2016-04-26 2016-08-24 广州致远电子股份有限公司 一种基于fpga的运算电路、示波器和测量仪器
CN108319447A (zh) * 2018-01-22 2018-07-24 成都锐成芯微科技股份有限公司 便于硬件实现的开平方算法
CN111353118A (zh) * 2018-12-20 2020-06-30 无锡华润矽科微电子有限公司 开平方的方法及相应的用于开平方的电路
CN113761451A (zh) * 2020-06-05 2021-12-07 扬智科技股份有限公司 求平方根的方法和装置
CN117746838A (zh) * 2024-02-19 2024-03-22 深圳市友杰智新科技有限公司 语音特征提取加速方法、装置、设备和存储介质

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100465878C (zh) * 2006-12-21 2009-03-04 浙江大学 一种开方运算的方法及其装置
CN105094745A (zh) * 2015-08-19 2015-11-25 国网重庆市电力公司电力科学研究院 基于Microblaze系统的数字化电能表校验仪浮点开方算法的实现方法
CN105892988A (zh) * 2016-04-26 2016-08-24 广州致远电子股份有限公司 一种基于fpga的运算电路、示波器和测量仪器
CN105892988B (zh) * 2016-04-26 2019-03-01 广州致远电子股份有限公司 一种基于fpga的运算电路、示波器和测量仪器
CN108319447A (zh) * 2018-01-22 2018-07-24 成都锐成芯微科技股份有限公司 便于硬件实现的开平方算法
CN111353118A (zh) * 2018-12-20 2020-06-30 无锡华润矽科微电子有限公司 开平方的方法及相应的用于开平方的电路
CN111353118B (zh) * 2018-12-20 2023-09-19 华润微集成电路(无锡)有限公司 开平方的方法及相应的用于开平方的电路
CN113761451A (zh) * 2020-06-05 2021-12-07 扬智科技股份有限公司 求平方根的方法和装置
CN113761451B (zh) * 2020-06-05 2024-04-16 扬智科技股份有限公司 求平方根的方法和装置
CN117746838A (zh) * 2024-02-19 2024-03-22 深圳市友杰智新科技有限公司 语音特征提取加速方法、装置、设备和存储介质
CN117746838B (zh) * 2024-02-19 2024-05-24 深圳市友杰智新科技有限公司 语音特征提取加速方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN100520708C (zh) 2009-07-29

Similar Documents

Publication Publication Date Title
CN1296813C (zh) 浮点存储方法及浮点运算装置
CN1296817C (zh) 模乘方法及装置及模乘计算单元
CN1630204A (zh) 具有矩阵转换技术的循环冗余码计算方法及系统
CN1975662A (zh) 算术运算单元、信息处理设备和算术运算方法
CN1164039C (zh) 里德-所罗门编码装置
CN1845213A (zh) 一种实现sms4密码算法中加解密处理的方法
CN1671090A (zh) 一种计算平方根的装置
CN1577250A (zh) 用于实现2的幂的浮点估计的系统与方法
CN1848097A (zh) 存储器地址生成装置以及具有它的处理器、存储器地址生成方法
CN1738238A (zh) 高速可配置rsa加密算法及协处理器
CN1196261C (zh) 滤波器及获得滤波器系数的方法
CN1031613A (zh) 二—十进制加法器电路
CN1035372A (zh) 在剩余数系统中用于编码和译码数据的方法和装置
CN1649274A (zh) 可变长度解码装置和可变长度解码方法以及再现系统
CN1539103A (zh) 模数增值方法及装置
CN1627742A (zh) 解调装置和方法、解调装置的集成电路
CN1723690A (zh) 像素插值电路、像素插值方法及图像读取装置
CN1585278A (zh) 流水线型a/d转换器
CN1967469A (zh) 高效模乘方法及装置
CN1700203A (zh) 基2单路深度延时反馈的流水线构成fft处理器的实现方法
CN1841982A (zh) 一种高速译码芯片
CN1313918C (zh) 在有限域中用于基转换的方法和设备
CN1315107C (zh) 音频信号处理设备和音频信号处理方法
CN1945488A (zh) 一种求定点数字信号常用函数值的方法及装置
CN101038673A (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
ASS Succession or assignment of patent right

Owner name: HAISI SEMICONDUCTOR CO., LTD., SHENZHEN

Free format text: FORMER OWNER: HUAWEI TECHNOLOGY CO LTD

Effective date: 20120217

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120217

Address after: 518129 Bantian HUAWEI Longgang HUAWEI electric production center, Shenzhen District, Guangdong, China

Patentee after: Haisi Semiconductor Co., Ltd., Shenzhen

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090729

Termination date: 20150319

EXPY Termination of patent right or utility model