Abstract:
A fast square root method which separates the sign detection operation of the remainder from the remainder subtraction operation. By taking the absolute values of the remainders, the method can successively subtract the remainder without knowing the signs of remainders, while signs of the remainder can be detected in parallel fashion and independently. The method also uses a smaller square root digit set of {-1, 1} than {-1, 0, 1} that is used by many known fast algorithms. This digit set facilitates fast conversion of the results to binary representations. Together with some hardware design techniques, the square root method can be realized and pipelined in simple circuits.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates to an apparatus for finding the square root of a number, and especially to an apparatus for finding a square root in a digital system. 
     Inherently, square root operation is a sequential operation. The a square root digits are produced only after the sign of the remainders have been detected. As a result, square root operation is much slower than multiplication operation. Efforts have been made to up the square root operation. It is noted that the Analogous algorithm eliminates the restoring operations of the partial remainders. Another algorithm confines the square root digits either to be 1 or -1, depending on the signs of remainders. However, the bottleneck of those algorithms lies in sign detection of the remainder. Fast addition algorithms such as CLA (carry-lookahead addition) shorten the operation time, but result in complex hardware structures. 
     Recently, a square root algorithm based on SD (signed-digit) number representation was proposed which is much faster than the previous algorithms. This algorithm considerably shortens the time for remainder subtraction by using carry-propagation-free SD addition. However, it is much more complex because in each iteration the SD algorithm must check three most significant digit (MSD) bits of the remainder to decide the quotient digit in the set of {-1, 0, 1}, and then perform the SD addition. Moreover, the final SD result must be converted to binary representation. Also note that the signed-digit addition is more complicated than the conventional CSA, and it needs a complex square root decision circuit. 
     Another type of algorithm entirely avoids the slow subtract-detect-shift type of operation previously mentioned. It transforms the square root operation to a series of multiplication operations that converge to the original square root. Thus type of algorithm is often found in multiplier-based processors. It still uses a sequential type of operation to a certain degree, and obviously requires many more shift-and-add operations. 
     There is an on-line square root algorithm that facilitates serial/serial square root operation. This algorithm has advantages such as that: (a) it is pipelined at digit level; (b) all operands and results are input and output in a digit-serial fashion, and (c) result digits are on-line obtained after a few initial delays. On the other hand, among some of its disadvantages are: (a) it requires more complex three-input signed-digit addition operation; (b) it needs more complicated square root decision circuitry for range detection of the remainder; and (c) output results have to be converted to binary representations. 
     SUMMARY OF THE INVENTION 
     In this work, a fast radix-2 square root algorithm and its architecture is proposed. The algorithm adheres to the subtract-and-add type of square root operation because it uses fewer iteration steps than those utilizing multiplicative approaches. The key idea behind this algorithm is to separate the sign detection operation of the remainder from the remainder subtraction operation. By taking the absolute values of the remainders, the remainders can be successively subtracted without the need of knowing the signs of remainders, while signs of the remainders can be decided in parallel fashion and independently at the same time. To enhance the algorithms performance, several design techniques were incorporated into its architecture realization. 
     The new algorithm and its architecture retains as many advantages of the aforementioned algorithms as possible, and simultaneously gets rid of their disadvantages. The algorithm adopts non-restoring square root operation and CSA type of operation for fast subtraction. Square root digit set of {1, -1} is assumed for fast square root conversion to binary representation. The algorithm is also an on-line algorithm that facilitates highly pipelined operation while it is much simpler than the existing on-line algorithms. 
     The objects of the present invention are fulfilled by providing a digital device for finding a square root from a original number and a subtracter. This device comprises: a plurality of full-adders, each coupled in sequence, each of the full-adders receiving one digit of the original number and one digit of the subtracter and performing signed-digit subtraction, then outputting the result of the partial remainder of the subtraction, a plurality of negating circuits (hereinafter referred to as a negating circuit) for taking the absolute value of the partial remainder, each coupled in the same sequence with the full-adders and coupled with the corresponding full-adder, each of the negating circuits receiving one digit of the result of the partial remainder of the subtraction from the corresponding full-adder and a flag from the preceding negating circuit, if any, and inverting the sign of the digit received from the corresponding full-adder when the flag received from the preceding negating circuit is negative and when the flag received from the preceding negating circuit is zero and the digit received from the corresponding full-adder is negative, and keeping the sign of the digit received from the corresponding full-adder when the flag received from the preceding negating circuit is positive or zero and the digit received from the corresponding full-adder is positive or zero, then outputting the digit to the preceding full-adder of the corresponding full-adder for the next iteration, and outputting a positive flag when the flag received from the preceding negating circuit is positive or when the flag received from the preceding negating circuit is zero and the digit received from the corresponding full-adder is positive, or outputting a negative flag when the flag received from the preceding negating circuit is negative or when the flag received from the preceding negating circuit is zero and the digit received from the corresponding full-adder is negative, and outputting a zero flag when the flag received from the preceding negating circuit is zero and the digit received from the corresponding full-adder is zero, and stopping the iteration when all digits of the partial remainder are zero: and a plurality of square root decision circuits, each coupled in sequence, each of the square root decision circuits being coupled with the corresponding negating circuit and full-adder, for outputting &#34;1&#34; to the preceding full-adder and &#34;0&#34; to the next full-adder when the partial remainder and the last partial remainder are both positive, or the partial remainder and the last partial remainder are both negative, or outputting &#34;0&#34; to the preceding full-adder and &#34;1&#34; to the next full-adder when the partial remainder is positive and the last partial remainder is negative, or the partial remainder is negative and the last partial remainder is positive, or outputting &#34;1&#34; to the preceding full-adder when all digits of the partial remainder are zero. 
     Further scope of applicability of the present invention will become apparent from the detailed description given hereinafter. However, it should be understood that the detailed description and specific examples, while indicating preferred embodiments of the invention, are given by way of illustration only, since various changes and modifications within the spirit and scope of the invention will become apparent to those skilled in the art from this detailed description. 
    
    
     BRIEF DESCRIPTION OF THE FIGURES 
     The present invention will become more fully understood from the detailed description given hereinafter and the accompanying drawings which are given by way of illustration only, and thus are not limitative of the present invention and wherein: 
     FIG. 1 is a schematic block diagram showing a square root finder according to the present invention; 
     FIG. 2a is a schematic block diagram showing a full-adder; 
     FIG. 2b is a schematic circuit diagram showing an embodiment of a half-adder HA1 shown in FIG. 2a; 
     FIG. 2c is a schematic circuit diagram showing an embodiment of a half-adder HA2 shown in FIG. 2a; 
     FIG. 3a is a schematic block diagram showing a negating circuit; and 
     FIG. 3b is a schematic circuit diagram showing an embodiment of the negating circuit shown in FIG. 3a. 
    
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS 
     For achieving fast square root, a new square root algorithm is discussed hereinafter. 
     NEW SQUARE ROOT ALGORITHM 
     The conventional nonrestoring square-root operation algorithm is: 
     
         X.sub.i =X.sub.i-1 -(2Y.sub.i-1 +y.sub.i 2.sup.-i)y.sub.i 2.sup.-i =X.sub.0 -Y.sub.i.sup.2                                            (1) 
    
     or 
     
         X*.sub.i =2X*.sub.i-1 -(2Y.sub.i-1 +y.sub.i 2.sup.-i)y.sub.i =(X.sub.0 -Y.sub.i.sup.2)2.sup.i                                    (2) 
    
     wherein 
     
         Y.sub.i =Y.sub.i-1 +y.sub.i 2.sup.-1, and X*.sub.i =X.sub.i 2.sup.+i(3) 
    
     i is recursive control, 
     X i  is the i-th partial remainder, 
     X* i  is the i-th shift partial remainder, 
     X or X 0  or X* 0  are the input operand, 
     Y i  is the i-th partial square root, and Y 0  =0, 
     Y or Yn is the square root, 
     y i  is the i-th digit of Y, and y i  ε {-1, 1}. 
     The proposed method of taking square root is by taking the absolute value of Eq. (1) or (2), which yields 
     
         X.sub.i =|X.sub.i-1 -(2Y.sub.i-1 +y.sub.i 2.sup.-i)y.sub.i &#39;2.sup.-i |=|X.sub.0 -Y.sub.i.sup.2 |(4) 
    
     or 
     
         X*.sub.i =|2X*.sub.i-1 -(2Y.sub.i-1 +y.sub.i 2.sup.-i)y.sub.i &#39;|=|(X.sub.0 -Y.sub.i.sup.2)2.sup.i |(5) 
    
     wherein y i   &#39;  is the i-th digit of the pseudo square root. 
     It can be observed from Eq. (5) that shift partial remainders are all positive. Since X* i-1  is positive and y i  &#39;=1, and that 2X* i-1  is subtracted by (2Y i-1  +y i  2 -i )y i  &#39;, we can simplify Eqs. (4) and (5) as 
     
         X.sub.i =|X.sub.i-1 -(2Y.sub.i-1 +y.sub.i 2.sup.-i)2.sup.-1 |=|X.sub.0 -Y.sub.i.sup.2 |    (6) 
    
     or 
     
         X*.sub.i =|2X*.sub.i-1 -(2Y.sub.i-1 +y.sub.i 2.sup.-i)|=|(X.sub.0 -Y.sub.i.sup.2)2.sup.i |(7) 
    
     wherein 
     Y i  =Y i-1  +Y i  2 2-i , ##EQU1##  where S ri  =The sign of remainder before taking absolute value, 
     S i  =True sign of remainder=S i-1  ⊕S ri , 
     Z i  =Zero flag, 
     S 0  =S r0  =Z 0  =0, since X 0  &gt;0, so y 0  =1. 
     Defining the subtracter K i  =(2Y i-1  +y i  2 -i ), K i  can be expressed in binary form as ##EQU2## wherein a i  is the i-th digit of the square root, and ##EQU3## which converts the sign-binary representation to binary representation. 
     Eq. (7) and Eq. (8) give ##EQU4## The output square-root result in binary represention is 0·a 1  a 2  . . . a n . 
     Subtracter K i  varies with the iteration steps as shown in table 1. 
     
                       TABLE 1______________________________________iteration           subtracter K.sub.i______________________________________1                   012                   0a.sub.1 S.sub.1 13                   00a.sub.1 a.sub.2 S.sub.2 14                   000a.sub.1 a.sub.2 a.sub.3 S.sub.3 1.                   . . . . . ..                   . . . . . . . ..                   . . . . . . . . . .______________________________________ 
    
     wherein S i  =0 when a i  =1, S i  =1 when a i  =0. 
     Because the absolute value of the partial remainder is taken into iteration in stead of the true value of the partial remainder, this algorithm can generate the digits of the partial remainder and the square root at the same time. 
     For further speeding up the computation, the signed-digit subtraction is modified by defining the CSA-like operation as follows. 
     When subtracting the subtracter K i  =k 1  k 2  . . . k n  from X=x 1  x 2  . . . x n , it is defined 
     
         x.sub.i -k.sub.i =2c.sub.i+1 +t.sub.i                      (10.a) 
    
     
         t.sub.i +c.sub.i =z.sub.i                                  (10.b) 
    
     wherein 
     X i , z i  ←{-1, 0, 1}, 
     k i , t i  ←{0, 1}, and 
     c i  ←{-1, 0}. 
     Here, a signed-digit x i  subtracts a binary digit k i , then generates carry c i+1  and intermediate result t i . The final result z i  is obtained by adding t i  and the carry-in bit c i . Since Z i  ←{-1, 0, 1}, there will be no carry generated from t i  +c i . As a result, the modified signed-digit subtraction efficiently eliminates carry propagation. In addition, the complexity of this operation is similar to that of conventional CSA. 
     STRUCTURE OF THE SQUARE ROOT FINDER 
     FIG. 1, shows the schematic block diagram of the square root finder 1 according to the present invention. The present invention is applicable to the square root calculation from an original number X and a subtracter K i  both in binary forms. 
     The square root finder 1 according to the present invention includes a plurality of full-adders (FA) 10, a plurality of negating circuits 20, and a plurality of square root decision circuits 30. A plurality of shift registers D is disposed between each circuit, for adjusting the timing of all circuits. 
     As shown in FIG. 2, the full-adders 10 are coupled in sequence, each having a first input 12 for inputting one digit x i  of the original number X, from the most significant bit to the least significant bit, and a second input 14 for inputting one digit k i  of the subtracter K, from the most significant bit to the least significant bit. Each full-adder 10 subtracts k i  from x i , then outputs the remainder z i . Note that x i  and z i  are all signed-digit numbers in the set of {-1, 0, 1}, which can be represented by two bits, such as {11, 00, 01}, that used in the present embodiment. In the later description, x i  and z i  are denoted by x i   1 , x i   2 , z i   1 , and z i   2  respectively. 
     Reference is now made to FIGS. 2a, 2b, and 2c. FIG. 2a shows the circuit block diagram of the full-adder 10. The full-adder 10 comprises two half-adders, HA1 and HA2. A shift register D is interposed between HA1 and HA2 for timing adjustment. Half-adder HA1 receives the original number x i  and the subtracter k i , then performs the subtraction defined in Eq. (10.a), and outputs the carry-in bit c i+1  and the intermediate result t i  (FIG. 2b. Half-adder HA2 the intermediate result t i  and the carry-in bit ci, then performs the addition defined in Eq. (10.b), and outputs the final result z i  (FIG. 2c. The preferred embodiment of the circuits of half-adders HA1 and HA2 are as shown in FIG. 2b and FIG. 2c. The truth table of the half-adder HA1 is listed in table 2. The truth table of the half-adder HA2 is listed in table 3 for reference. 
     
                       TABLE 2______________________________________TRUTH TABLE OF HALF-ADDER HA1K.sub.1   X.sub.1.sup.1            X.sub.1.sup.2                         C.sub.i+1                              t.sub.1______________________________________0         0      0            0    00         0      1            0    10         1      1            1    11         0      0            1    11         0      1            0    01         1      1            1    0______________________________________ 
    
     
                       TABLE 3______________________________________TRUTH TABLE OF HALF-ADDER HA2c.sub.i  t.sub.i        z.sub.i.sup.1                         z.sub.i.sup.2______________________________________0        0              0     00        1              0     11        0              1     11        1              0     0______________________________________ 
    
     The negating circuits 20 are coupled in the same sequence with the full-adders 10, and all coupled with corresponding full-adders 10, for receiving the result of the partial remainders z i . Each of the negating circuit 20 takes the absolute value of the partial remainder, then outputs it to the first input end 12, for next iteration as shown in FIG. 1. 
     FIG. 3a shows the block diagram of the negating circuit 20. FIG. 3b shows one of the preferred embodiment of the negating circuit 20. The truth table of the negating circuit 20 is listed in table 4. 
     
                       TABLE 4______________________________________TRUTH TABLE OF NEGATING CIRCUIT 20f.sub.i.sub.2 (k) f.sub.i.sup.1 (k)     s.sub.i.sup.2 s.sub.i.sup.1                f.sub.i.sup.2 (k + 1) f.sub.i.sup.1 (k                              r.sub.i.sup.2 r.sub.i.sup.1______________________________________0 0       0 0        0 0           0 00 0       0 1        0 1           0 10 0       1 1        1 1           0 10 1       0 0        0 1           0 00 1       0 1        0 1           0 10 1       1 1        0 1           1 11 1       0 0        1 1           0 01 1       0 1        1 1           1 11 1       1 1        1 1           0 1______________________________________ 
    
     The square root decision circuits 30, which may be composed of an exclusive-OR gate and a NOT gate as shown in FIG. 1, are coupled in sequence. The first square root decision circuit 30 in the sequence is coupled to the negating circuit 20 which is coupled to the third full-adder 10. Each square root decision circuit 30 has a first output 32, i. e. the output of the exclusive-OR gate, and a second output 34, i. e. the output of the NOT gate. The first output 32 of the square root decision circuit 30 is coupled to the second input 14 of the preceding full-adder 10. The second output 34 of the square root decision circuit 30 is coupled to the second input 14 of the full-adder 10 which the square root decision circuit 30 is coupled to. At first, digit &#34;1&#34; is inputted to all full-adders 10 as the subtracter K, except the first and second full-adders 10. 
     When the partial remainder z 1  outputted from the first full-adder 10 which receives the most significant bit x MSB  is &#34;1&#34; (i.e. &#34;01&#34; in two bits), the first negating circuit 20, which coupled to the first full-adder 10, will output a positive flag f 1  (i.e. &#34;01&#34; in two bits). The positive flag will be transmitted to all downstream negating circuits 20 one by one. Since the partial remainder is positive, its absolute value is itself. Each negating circuit 20 will send one digit z of the partial remainder to the first input 12 of the preceding full-adder 10 for next iteration, where the subtracter K is inputted to the second input 14 of the preceding full-adder 10. 
     When the partial remainder z 1  outputted from the first full-adder 10 which receives the most significant bit x MSB  is &#34;-1&#34; (i.e. &#34;11&#34; in two bits), the first negating circuit 20, which coupled to the first full-adder 10, will output a negative flag f 1  (i.e. &#34;11&#34; in two bits). The negative flag will be transmitted to all downstream negating circuits 20 one by one. Since the partial remainder is negative, each digit of the partial remainder will be inverted to get its absolute value. Each negating circuit 20 will invert the sign of one digit z i  of the partial remainder, then output the result r i  (i.e., -z i ) to the first input 12 of the preceding full-adder 10 for next iteration, where the subtracter K is inputted to the second input 14 of the preceding full-adder 10. 
     If the partial remainder z 1  outputted from the first full-adder 10 which receives the most significant bit x MSB  is &#34;0&#34; (i.e. &#34;00&#34; in two bits), the first negating circuit 20, which coupled to the first full-adder 10, will output a zero flag f 1  (i.e. &#34;00&#34; in two bits). In such a condition, the sign of the partial remainder is still not known, the zero flag will be transmitted from the first negating circuit 20 to other nagating circuits 20, until a non-zero flag f i , then the sign of the partial remainder can thus determined, and the absolute value of the partial remainder will be taken. There will be an exact square root if all of the partial remainder digits z i  are zero. 
     The square root decision circuit 30 determines the square root by the flag f i  and its antecedent f i-1 . If f i  and f i-1  are both positive (i.e. &#34;01&#34;), or f i  and f i-1  are both negative (i.e. &#34;11&#34;), then the first output 32 of the square root decision circuit 30 outputs &#34;1&#34; as one digit a i   of the square root, and the second output 34 of the square root decision circuit 30 outputs &#34;0&#34;. If f i  is positive and f i-1  is negative, or f i  is negative and f i-1  is positive, then the first output 32 of the square root decision circuit 30 outputs &#34;0&#34; as one digit ai of the square root, and the second output 34 of the square root decision circuit 30 outputs &#34;1&#34;. When all digits z i  of the partial remainder are zero, square root decision circuit 30 will output &#34;1&#34; as one digit a i  of the square root. 
     The procedure of finding square root will be illustrated by example 1 as follow. 
     EXAMPLE 1 
     Let the original number X=01010001 2  =81 
     
         ______________________________________      01010001          S.sub.0 = S.sub.r0 = 0, y.sub.0 = 1      -01         k.sub.0      0010001     c.sub.i      0000000     t.sub.i      0010001   &gt; 0     S.sub.r1 = 0,                        S.sub.1 = S.sub.r1 ⊕ S.sub.0 = 0,SHIFT LEFT ONE BIT      0010001      -101        K.sub.1      1000001      1000000      11000001  &lt; 0     S.sub.r2 = 1,                        S.sub.2 = S.sub.r2 ⊕ S.sub.1 = 1,TAKE ABSOLUTE VALUE  y.sub.2 = -1, a.sub.3 = 0      11000001SHIFT LEFT ONE BIT      110000010      -1011       K.sub.2      111011010      11011010      001101110 &gt; 0     S.sub.r3 = 0,                        S.sub.3 = S.sub.r3 ⊕ S.sub.2 = 1,                        y.sub.3 = -1, a.sub.3 = 0SHIFT LEFT ONE BIT      1101110      -10011      1001000      0100100      0                 Z.sub.4 = 1, y.sub.4 = 1, a.sub.4______________________________________                        = 1 
    
     Result: The square root=1001 2  =9, and remainder=0 
     In summary, the algorithm for finding square root proposed by the present invention has the advantages as follows: 
     a) It uses a smaller square root digit set of {1, -1} than {-1, 0, 1}, that simplifies that square root decision circuits like some known algorithms do, but achieves the exact division and trivial conversion of the results from signed-binary representation to binary representation. 
     b) It needs no square root estimator. 
     c) In each iteration, the algorithm computes partial remainders without knowing the signs of previous remainders and decides the signs of remainders independently and in parallel. In addition, these two operations are done in pipelined fashion and in digit level with maximum throughput rate. 
     d) Its architecture basically consists of the simple signed-digit subtractor cells with the same complexity as CSA. 
     From above discussion, the proposed algorithm for finding square root is very efficient. The new algorithm&#39;s realization is composed of a highly regular cellular array, which is suitable for VLSI implementation and can be easily extended to bit-parallel implementation. 
     While the invention has been described by way of an example and in terms of several preferred embodiments, it is to be understood that the invention need not be limited to the disclosed embodiment. On the contrary, it is intended to cover various modifications and similar arrangements included within the spirit and scope of the appended claims, the scope of which should be accorded the broadest interpretation so as to encompass all such modifications and similar structures.