用于执行平方根操作的电路的制作方法

文档序号:88463阅读:425来源:国知局
专利名称:用于执行平方根操作的电路的制作方法
本发明一般涉及一种用于执行数学计算的电路,特别是涉及用于执行平方根操作的电路。
在一个可获得定焦图像的超声相位阵列扇形扫描装置中处理电子信号时,需要计算在一特定的聚焦深度和射束角度下接收反射的超声波时振子元素间的时间延迟差。描述总时间延迟的通用方程式需要获得一个射束角度,聚焦深度和阵列中的振子的函数的平方根。
许多已知的用来执行平方根操作的技术在本应用中并不适宜,这是由于执行计算的时间要求的原故。例如,需要许多次乘法和加法运算步骤的高级语言的计算是太慢了。另一个可选择的方法是利用一个软件表来计算,但这个表需要占有很多字节,并由于每个频率,深度,和振子结构需要大约56,000个字节,因此这种方法不能成为通用的。这样,对于具有11个聚焦深度,3个频率的仅仅二个振子阵列来说就需要大约3.7兆字节(Megabytes)的存储量。另外,软件表的使用不能容易地许允任意聚焦深度,不如用测距选通脉冲响应多普勒系统理想。
用来直接执行平方根计算的硬件集成电路是非常有限的,并且速度最快的产品(Intel 8087)大约需要36毫秒的时间来调整浮点。而且,需浮点数的使用会使其它需要的计算减慢。
另一种方法包括使用一个软件算法,其中第一个猜测是通过表查找法实现的。可是,这种技术需要除法,加法,乘法操作来计数平方根,并且该过程比要求的耗时要多,另外,可以用一个基于泰勒序列展开的公用多项式来近似算出平方根。近似法的精度取决于所用的项的数目,并且它比扇形扫描应用所要求的时耗要多。
在1984年8月23日的EDN第167页至174上的杨氏的一篇题为“用于平方根的门阵列满足军队系统的需要”文章中,通过将输入数作为一系列部分余项(每一个作用于前一个余项)来导出平方根。该门阵列电路脉动计算而得到最终结果。当电路快速执行平方根操作时,该电路会变得很复杂并且需要相当大的能量。
提供一个根据本发明的电路,该电路在和超声波扇形扫描应用相适应的时间内执行平方根操作,并且不需要相当大的大能量。例如,一个波长要求的1/32在7.5兆赫兹频率下意味着1/156毫米的分辨率。它需要8位精度(1/256)。对于从1毫米到小于250毫米之间的聚焦深度,也可以用8位(小于1/256)得到其整数部分。根据本发明设计的具有16位精度的求平方根的电路,在位8和位9之间假设有一小数点,意味着输入数具有32位精度。
本发明的电路是基于一个用来计算一个普通写法的数的平方根的简单算法。首先,输入数按小数点左边和右边被划分成许多数字对。在小数点后面为每个要求一定精度的数字加上零数字对。其次,跳过最高有效的零数字对到第一个不为零的数字对。因此,第一个答案位是一个1。通过从该数字对中减去一个1,乘上4,并再加上下一个最高有效数字对来得到一个余量。对一系列位对用定义试除数和确定余量值来重复执行该过程。更有利地,可将由该电路执行的算法规定成在一个回路内安排许多操作。
通过下列详细描述和附上的权利要求
以及附图本发明及其目的和特征会变得更明显,其中。
图1,是一个普通写法的十进制的平方根的计算。
图2,是一个普通写法的二进制的平方根的计算。
图3,是用于执行平方根操作的本发明电路的功能方块图。
图4,是一个图3中电路的一个实施例的电路原理图。
现在参照附图,图1示出了使用一个本发明使用的简单算法来求一个数例如128的十进制的平方根的步骤,这些执行算法的步骤描述如下a.将输入数在小数点的左边和右边划分成许多数字对,将0对加到小数部分直到十进制的小数是右边的数字对的总数等于所要的精度为止。
b.找出最高有效数字对中的最大平方根。这个数就是答案的第一个(最高有效的)数字。
c.通过从这个数字对中减去该数字的平方,将其结果乘上100,再加上下一个最高有效数字对(第3行)产生一个余量。
d.构成一试除数=(答案×20)+数字,其中该数字是这样的使得试除数×该数字小于或等于余量(第3行)e.从余量上减去试除数×数字(第4行),将结果乘上100,再加上下一个数字对(第5行)来形成一新的余量。这样,余量=(余量-试除去×数字)×100+数字对。
f.答案的下一个数字是在步骤d中所取的数字。这样,答案=(答案×10)+数字g.重复步骤d到步骤f,直到获得足够的数字。(第5行至第13行)同样的算法适用于二进制,其步骤似乎更为容易实现。参照图2,下面描述了一个整数的二进制的平方根。
a.将输入数字在小数点的左边和右边分成许多数字对。对每一个要求一定精度的数字在其小数点后面加上一些零数字对。
b.第一个数字对不是零(这里跳过最高有效的零数字对),则第一个答案是1。(在二进制数字对中最大的平方根只能是0或1)。
c.通过从该数字对中减去1(答案),乘上4(100)再加上下一个最高有效的数字对(第3行)来形成一个余量。
d.通过将答案乘4加1来构成一个试除数(第3行)e.如果余量小于试除数,则下一个答案位是0,否则答案位是1。如果答案位是0,则取一个新的余量=余量×4+下一个数字对,否则该余量=(余量-试除数)×4+下一个数字对。新答案=答案×2+答案位。(第4行和第6行)f.重复步骤d和e,直到获得所有想要的答案数字。(第6行至14)上述结合附图2描述的算法可以被重新陈述如下使其能在一个循环内作更多的操作。
让 R=余量,A=答案的最高有效位,A0=答案的最低有效位,T=试除数,RI=送给减数的余量count=循环计数Q=输入数赋值 A=0,R=0,count=0并且选择Q的最高有效的两位Loop(循环)RI=R×4+Q的2位T=A×4+1if(如果)RI>=T then(则)R=RI-TA0=1else(否则)R=RIA0=0end ifif count=15 then stop 答案=A×2+A0count=count+1选择下一个Q的最高有效的2位A=A×2+A0go to loop1重复操作直至所有对都作完。
图3示出了根据本发明用来实现上述算法的电路。数据被写入32位数据寄存器20中。在写入时,一个清除电路被清除来产生Rseet信号使得平方根电路的每一个部分都初始化。4位状态计数器22被置“0”,答案移位寄存器24被清除,和通过使18位减法器28的输出为零,并允许余量锁存器获得零值来使得余量锁存器26清零,当减法器被清零时,Sign信号也是0,用来选择减法器的内容输入到余量锁存器。
该电路的数据寄存器部分选择出将被加到余量上的输入数据(上述算法中的Q)的2位。根据状态计数器,自最高有效位对(位32和位31)开始,从16对位中选择出一对。状态计数器设置一个用来门控一电路时钟Clock的终点计数值。该时钟GCLK选通答案移位寄存器和余量锁存器直到达到最终状态。
18位减法器的A输入包括Q的两个数据位和最新的余量16位,后者是从余量锁存器输出的。注意用余量的16位作为18位输入的高位,实际上就是将余量剩以4再加上Q的2位,结果得到上述算法中的RI的值。
减法器的B输入包括最新的答案(即在答案寄存器中的答案被向上移动2位,以达到剩4的效果),被加上一个低两位的等于1的常数。这样B输入就是上述算法的T的值。
RI-T的减的结果可能是正的也可能是负的。如果结果是正,则判定RI>=T为真(因为RI-T=0),符号Sign位为0,选择减法器输出作为余量锁存器的输入,并且将A0位置1。如果结果为负,则符号Sign为1,A0将被置0。该余量锁存器将选择输入RI的最低有效16位。
在下一个GCLK时,余量锁存器将被更新为新余量,答案移位寄存器使旧答案向高位移动一位,并移入A0位。答案移位寄存器的输出变成下一个答案的最高有效位,其新答案等于A0加上答案移位寄存器内容的2倍。
当状态计数器到达了终点计数值时,在30的Ready(准备好)信号在一个时钟后为真。此延迟使得电路在输出缓冲器32的输出提供一有效的平方根之前,来决定答案的最终位。
图4是用来实现图3的功能方块图的一电路的原理图。输入数据寄存器在U165中,它是一个多路输入/多路输出的4个8位寄存器。有两条选择线来选择四个寄存器中的一个。U166用另外两条线来从U165中选择四个偶数位中的一位和四个中奇数位中的一位来形成上述Q的选择的位对。计数器U167作为状态计数器,该计数器计数始于0,并计数到15结束。U138的一个门用来选通时钟(CK)来形成GCLK(GATED-CK)时钟,该GCLK时钟在U167的终点计数为低时有效,在终点计数为高时关闭。
U142的触发器形成清除(Reset)控制。在任何一个向U165的写入操作期间,这些触发器都被清0,使得Reset输出为0。在第4个写入U165之后,第二个时钟到来时,Reset将变成1。这就确保了清除周期至少要一时钟周期,因此确保减法器被清零的时间足够长,使得在第二时钟时刻余量锁存器的输入是有效的。
计数器U46通过用一些小的整数来对40MHz频率分频提供时钟CK。通常的除数是5,提供一个125毫微秒时钟周期。计数器被装入一计数12,并计数到13,14,15,0。该0的计数导致重新装入一个计数12,这样就提供了5个状态。Qb输出用来提供一个具有两个高和三个低的时钟周期来确保最小时钟周期宽度大于在平方根电路中的各种元件的需要时间。
减法器包括5个元件U141,U168,U197,U196和U226,这些算术逻辑单元(ALU)构成具有脉动进/借位的减法器。这种方法比使用先行进位的方法要稍慢一些,但是要节省1至2个附加的集成电路。虽然可以使用两个74LS182s或一个72LS882集成电路,它们可减操作时间,使得电路能在10MHz的频率下操作(100毫微秒同期),但是在本应用中上述很小的节省好象并不使得其它的附加装置成为必要。该算术逻辑单元ALU具有16个操作模式,我们使用其中两个。一个模式是将输出清零,一模式是置输出为A和B输入的差。U226只提供减法结果的符号。
余量锁存器包括U170,U169,U199和U198。这些元件都是4位的2-1多路输入锁存器。当选择输入为低电平时算术逻辑单元ALU输出给该锁存器。
答案移位寄存器是U195和U194。符号Sign的反相被串行输入给U195,该元件第8个输出位串行输入给U194,U195和U194这两个元件一起提供一个16位的具有并行输出功能的串行移位寄存器。
U193和U192提供给输出缓冲器答案。它们在数据读出期间被激励。准备好Ready输出信号从U140发生。该触发器将U167的终点计数延迟一个时钟周期。输出没有准备好(RDY*)用来延迟数据读出结束直至平方根电路确实完成了最后一位的确定。
完成平方根的确定需要大约18时钟周期。一个到两个周期用于清除,和16个周期用来求解答案的每一位的值。在8MHz的频率下,在不计读写数据时间的情况下,求解一个平方根所需要的时间大约是2.3毫秒。在一个扇形扫描应用中,写和读的时间最少是4.4毫秒。算法的值可以写入来交叉运算,使得在计算平方根所需的时间期间,处理器可忙于完成以前的计算。利用这种技术,由于完成了其它足够的计算而占据了一定时间,所以很明显造成了用于平方根的时间延迟。这样,对于用汇编码编写的程序而言,完整的等式求值每个值需要平均大约26毫秒。
上面已经描述了一个基于具体数字元件的电路,它为用于例如相位阵列扇形扫描器及时地计算出一些数的平方根。本发明通过参照特定的电路得以描述,但这些描述是用作说明本发明,不是构成对本发明限制。例如RI和T的差可以通过下列方法来计算RI-T=RI+(T/+1),其中T/=T的二进制反码但 T=4×A+1 所以RI-T=RI-4×A-1=RI+(4×A)/+1-1=RI+(4×A)/其中(4×A)/是答案的高位的二进制的反码,这样如果答案移位寄存器的输出被反相,则可用加法器代替加法器来实现上述差值计算。因此,对于那些本领域的普通技术人员来说在不超出如所附上的权利要求
中所限制的本发明范围的情况下本发明可以有许多修改和应用。
权利要求
1.用于执行平方根操作的电路包括用于存入一输入数的数据寄存器;一状态计数器;一具有一输入端和一输出端的答案移位寄存器;一回路包括一个具有两个输入端和一个输出端的减法器,一个和上述减法器的输出端及其一个输入端相连的锁存器,将上述减法器输出和上述答案移位寄存器的输入连接的装置,将上述答案移位寄存器的输出和上述减法器的另一输入端连接的装置;将上述数据寄存器中存储的数据位对和上述一个减法器输入端相连的装置,上述数据位对被选择来响应上述状态计数器,并和上述锁存器来的数据并置一起作为减法器的一个输入,减法器从该输入中减去答案移位寄存器中来的数据;当并置的数据等于或大于从答案移位寄存器中来的数据时上述锁存器接收上述减法器的输出和答案移位寄存器接收一个“1”位,当上述并置的数据小于从答案移位寄存器中来的数据时上述锁存器接收并置的数据和上述答案移位寄存器接收一个“0”,上述回路对数据进行操作直到上述状态计数器到达终点计数值为止。
2.根据权利要求
1的电路,其中从答案移位寄存器来的数据在用作减法器的输入之前被停止移动两位。
3.根据权利要求
1的电路,其中从数据寄存器中来的数据对被并置作为最低有效位。
4.根据权利要求
1的电路进一步包括一连接的输出缓冲器来在上述状态计数器到达终点计数值时接收从答案移位器来的数据作一平方根。
专利摘要
用于计算一个数的平方根的电路,其中输入数按小数点的左边和右边被分成数字对。为每个想要一定精度的数在其小数的后面加入一些零数字对。跳过最高有效的零数字对,直到第一个不为零的数字对,因此第一个答案位是1。通过从该数字对中减去1,剩上4,再加上下一个最高有效数字对来形成一个余量。通过定义试除数和确定余量值对一系列数字对重复执行上述过程。
文档编号G06F7/493GK86107497SQ86107497
公开日1987年5月27日 申请日期1986年10月27日
发明者帕特里克·李·萨克利夫 申请人:通用电气公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1