Fast multiplier circuit incorporating parallel arrays of two-bit and three-bit adders
BACKGROUND OF THE INVENTION 
     This invention relates to circuits for multiplying two multibit binary numbers together. 
     Basically, two multibit binary numbers can be expressed mathematically as X n  +. . .+X 1  +X 0  and Y n  +. . .+Y 1  +Y 0 . In this expression, X 0  is the bit of power 0 in the number X; Y 0  is the bit of power 0 in the number Y; X 1  is the bit of power 1 in the number X; etc. And, to form the product of the two numbers X and Y, each bit in the number X must be multiplied by all of the bits in the number Y to thereby form a plurality of single power product terms. Then, all of the single power product terms must be added together. 
     One prior art multiplier circuit which forms and adds the single power product terms in a serial fashion, one term at a time, is described at page 340 of the textbook Principles of CMOS VLSI Design by N. West and K. Eshraghian, 1985, from Addison-Wesley. That reference, at page 345, also describes a faster prior art multiplier circuit which forms and adds the single power product terms by means of one large array of two-bit and three-bit adders. However, both of these multiplier circuits are still too slow for many applications-such as high speed real time signal processing. 
     Accordingly, a primary object of the invention is to provide a multiplier circuit which has a novel architecture whereby products are formed very quickly. 
     BRIEF SUMMARY OF THE INVENTION 
     In accordance with one preferred embodiment of the invention, a circuit for multiplying two multibit binary numbers X and Y together, comprises a first array of a plurality of logic cells and a second array of a plurality of logic cells. Each of these arrays has inputs for receiving the bits of the two numbers X and Y. Also, every logic cell includes a two-input AND gate which produces a single power product term by multiplying one bit of the number X with one bit of the number Y. These AND gates are arranged such that the total quantity of product terms of any particular power in the first array is within one of the total quantity of product terms of the same power in the second array. 
     Further, one subset of the cells in both arrays includes a respective two-bit adder, and another subset of the cells in both arrays includes a respective three-bit adder. These adders and the AND gates are interconnected within each array such that each array produces an intermediate result which is a partial sum of all the product terms in an array together with no more than one carry-in for each bit of that partial sum. 
     Three parallel input adders then combine the intermediate results from both arrays to produce the product of the numbers X and Y. Specifically, one parallel input adder produces a complete sum of the intermediate result from the first array; another parallel input adder produces a complete sum of the intermediate result from the second array; and another parallel input adder adds those two sums together. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Various features and advantages of the invention are described herein in conjunction with the accompanying drawings wherein: 
     FIG. 1 illustrates one preferred embodiment of the invention; 
     FIG. 2 is a schematic which helps explain the operation of the FIG. 1 embodiment; and 
     FIG. 3 illustrates another embodiment of the invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring now to FIG. 1, a preferred embodiment of the invention will be described. This embodiment includes an array 10 of a plurality of logic cells each of which is labeled 1, 2, or 3; and it includes another array 10&#39; of a plurality of logic cells each of which is also labeled 1, 2, or 3. Each logic cell 1 is a two-bit multiplier; each logic cell 2 is a two-bit multiplier and a two-bit adder; and each logic cell 3 is a two-bit multiplier and a three-bit adder. 
     All of the cells of the arrays 10 and 10&#39; are arranged on a single semiconductor chip in rows and columns that form two triangular shaped patterns which are spaced apart from one another. In array 10, signals X 0  thru X 8  run through respective columns of the cells while signals Y 0  thru Y 8  run through respective rows of the cells. Similarly, in array 10&#39;, signals X 0  thru X 7  run through respective columns of the cells while signals Y 1  thru Y 8  run through respective rows of the cells. 
     Signals X 0  thru X 8  and signals Y 0  thru Y 8  represent the bits of two multibit binary numbers X and Y that are to be multiplied together. Specifically, signal X 0  represents the bit of power 0 in number X; signal Y 0  represents the bit of power 0 in number Y; signal X 1  represents the bit of power 1 in number X; etc. 
     Each two-bit multiplier in the arrays forms a product term of a single power by multiplying the X bit and Y bit which pass through the cell. Thus, for example, the cell in array 10 which receives signals X 0  and Y 0  produces the product term X 0  Y 0  which is of power 0; the cell in array 10 which receives signals X 1  and Y 0  produces the product term X 1  Y 0  which is of power 1; etc. Suitably, the two-bit multiplier in each cell which forms a product is a simple AND gate. 
     With the above described arrays, all of the single power product terms are formed that are needed to produce the complete product of the two numbers X and Y. Further, the cells are arranged such that the total quantity of product terms of any particular power in array 10 is within one of the total quantity of product terms of the same power in array 10&#39;. 
     For example, array 10 forms a total of five product terms of power 8 (namely-X 8  Y 0 , X 7  Y 1 , X 6  Y 2 , X 5  Y 3  and X 4  Y 4 ) whereas array 10&#39; forms a total of four product terms of power 8 (namely-X 0  Y 8 , X 1  Y 7 , X 2  Y 6 , and X 3  Y 5 ). This can be seen by simply following the X and Y signals through the rows and columns. As another example, array 10 forms three product terms of power 11 (namely-X 8  Y 3 , X 7  Y 4 , and X 6  Y 5 ); whereas array 10&#39; forms three product terms of power 11 (namely-X 3  Y 8 , X 4  Y 7 , and X 5  Y 6 ). 
     Within each array, the product terms are combined with the two-bit adders in the cells 2 and three-bit adders in the cells 3 to produce an intermediate result. That intermediate result from array 10 is labeled IR, and from array 10&#39; it is labeled IR&#39;. In either case, the intermediate result consists of the partial sum of all of the product terms in an array such that no more than one carry remains to be added to each bit of the partial sum. 
     How the product circuits, two-bit adders, and three-bit adders are interconnected to produce this intermediate result is indicated in FIG. 1 by the arrows which are labeled P, C, and S. Each arrow labeled P indicates the coupling of a product term from one cell to another cell for addition; each arrow labeled C indicates the coupling of a carry term from one cell to another for addition; and each arrow labeled S indicates the coupling of a sum bit from one cell to another for addition. 
     For example, in array 10, the cell which forms product term X 5  Y 0  (hereinafter cell X 5  Y 0 ) has an arrow labeled P which goes to the cell that forms product term X 4  Y 1  (hereinafter cell X 4  Y 1 ). This indicates that the adder in cell X 4  Y 1  adds the terms X 4  Y 1  and X 5  Y 0 . 
     That results in a sum bit and carry bit from cell X4Y1, and they are transferred to two other cells as indicated by the arrow labeled S and the arrow labeled C. Specifically, the arrows show the sum bit gets transferred to the cell which forms the product term X 3  Y 2  (hereinafter cell X 3  Y 2 ) and the carry bit gets transferred to the cell which forms the product term X 4  Y 2  (hereinafter cell X 4  Y 2 ). 
     Cell X 3  Y 2  is a type 3 cell which means it includes a three-bit adder. That adder adds the product term X 3  Y 2  to the carry bit from cell X 3  Y 1  and the sum bit from cell X 4  Y 1 . Similarly, cell X 4  Y 2  is a type 3 cell which means it includes a three-bit adder. That adder adds the product term X 4  Y 2  to carry bit from cell X 4  Y 1  and sum bit from cell X 5  Y 1 . 
     After the intermediate results IR and IR&#39; are formed by arrays 10 and 10&#39; respectively, they are operated on by three parallel input adders 11, 12, and 13. More specifically, adder 11 receives in parallel all of the partial sum bits from array 10 together with all of the carry bits from array 10 and it adds them to produce a complete sum of the product terms in that array. Similarly, adder 12 adds the partial sum bits and carry bits from array 10&#39; to produce a complete sum of the product terms from that array; and adder 13 adds together the respective complete sums from adders 11 and 12 to produce a final result R which is the product of the two numbers X and Y. 
     Now to further understand the operation of the above described multiplier, reference should be made to FIG. 2. There, line 20 indicates the bits of number X; line 21 indicates the bits of number Y; and lines 22 thru 30 indicate the single power product terms which are obtained when all of the bits in number X are multiplied with all of the bits in number Y. Those terms which are below a dashed line 31 are formed by the cells in array 10; whereas the remaining terms are formed by the cells in array 10&#39;. 
     Also in FIG. 2, the single power product terms are grouped in several columns which are labeled A thru Q; and in this grouping, all of the terms of any one column are the same power. Thus, for example, the terms in column A are of power 0; the terms in column B are of power 1; the terms in column C are of power 2; etc. 
     To form the product of the two numbers X and Y, all of the single power product terms in the columns A thru Q must be added together along with the carries which are generated by those additions. And in the FIG. 1 embodiment, the intermediate result IR from array 10 is the partial sum of all the terms in FIG. 2 which are below the dashed line 31; whereas the intermediate result IR&#39; from array 10&#39; is the partial sum of all the remaining product terms. 
     Also, arrays 10 and 10&#39; form their intermediate results at essentially the same time since they operate in parallel. Consequently, the final result R (that is-the final product of the two numbers X and Y) is formed in about half the time which it would take to add all of the single power product terms and their carries with a single array of two-bit and three-bit adders. 
     To amplify this point, consider the longest timing path which will occur if all of the product terms in FIG. 2 are added together with a single array of two-bit and three-bit adders. That longest timing path will include the addition of all of the terms in column I plus the propagation of any resulting carry through the remaining columns J, K, . . . Q. Thus, the longest timing path will involve a total of eight adds plus a total of nine carries from column I through column Q. 
     By comparison, when the product terms of FIG. 2 are added via the arrays 10 and 10&#39; as described above, the longest timing path is essentially cut in half. In array 10, the longest timing path involves just four additions (the additions of terms X 8  Y 0 , X 7  Y 1 , X 6  Y 2 , X 5  Y 3  and X 4  Y 4 ). And in array 10&#39;, the longest timing path involves just three additions (the additions of terms X 0  Y 8 , X 1  Y 7 , X 2  Y 6 , and X 3  Y 5 . 
     Note that since the number of additions in the longest timing path are so small, adder 11 in FIG. 1 preferably should include a carry look-ahead circuit. That would ensure that the carry through adder 11, to the partial sum of the column I terms which array 10 produces, occurs faster than the partial sum. Adder 11 should also include a carry look-ahead circuit to quickly propagate the carry, which array 10 generates by adding the last term in column I (term X 4  Y 4 ), through the remaining higher order terms of the intermediate result. For similar reasons, adders 12 and 13 should also use carry look-ahead circuits. 
     Throughout the above description, the two numbers X and Y which were multiplied together each contained nine bits. However, by simply expanding the number of rows and columns in the arrays 10 and 10&#39;, any number of bits in the numbers X and Y can be accommodated. If the numbers X and Y each contain n bits of power zero thru n-1, then the longest timing path through each of the arrays 10 and 10&#39;will involve the addition of the single power product terms of power n-1. And in each array, no more than (n-2)/2 such adds will occur when n is even; while no more than (n-1)/2 such adds will occur when n is odd. 
     Turning now to FIG. 3, the details of another embodiment of the invention will be described. This embodiment is similar to the embodiment of FIG. 1 in that it also includes the previously described arrays 10 and 10&#39;. However, in the embodiment of FIG. 3, the intermediate results IR and IR&#39; which the arrays 10 and 10&#39; form are added together by a serial string of a two-bit adder 40 and several dual four-bit adders 41 thru 48. 
     Each dual four-bit adder has two sets of input terminals A and B. There are four A input terminals which receive respective bits of the same power &#34;i&#34;, and there are four B input terminals which receive four bits of the next power &#34;i+i&#34;. Each dual four-bit adder produces two sum bits of powers i and i+1 by adding the bits which it receives on its A terminals and its B terminals; and it also produces two carry bits of powers i+2 and i+3. For simplicity, the sum bits are not shown; and the carry bits are shown as arrowed lines which leave the side of one module and go into an A terminal or B terminal of the next module. 
     With this embodiment of FIG. 3, the speed improvement which is obtained is essentially the same as that which was previously described in conjunction with FIGS. 1 and 2. This is because the arrays 10 and 10&#39; again operate in parallel to produce the intermediate results IR and IR&#39;. In producing those intermediate results, the longest timing path will again involve the addition of the no more than (n-2)/2 single power product terms of power n-1 when n is even, and no more than (n-1)/2 single power product terms of power n-1 when n is odd. 
     A wide variety of circuits can be used to implement the above described components which make up the embodiments of FIGS. 1 and 3; and the exact structure of those circuits is unimportant so long as they perform their required logic function. For example, the two-bit adder in the cells 2 of the arrays 10 and 10&#39; need only perform the logic functions which are given by equations 1 and 2 below. There, A 1  and A 2  represent two binary bits of power i; S i  represents the sum of power i; C i+1  represents the carry of power i+1; and % represents an exclusive OR operation. 
     
         S.sub.i =A.sub.1 %A.sub.2                                  Eq.1 
    
     
         C.sub.i+1 =A.sub.1 A.sub.2                                 Eq.2 
    
     Similarly, the three-bit adder in the cells 3 of arrays 10 and 10&#39; need only perform the logic functions which are given by equations 3 and 4 below. There, A 1 , A 2 , and A 3  represent three bits of power i; S i  represents the sum of power i; C i+1  represents the carry of power i+1; and % represents an exclusive OR operation. 2A indicates that any two of the bits A 1 , A 2 , and A 3  are a binary &#34;1&#34;; and 3A indicates that all three of those bits are a binary &#34;1&#34;. 
     
         S.sub.i =A.sub.1 %A.sub.2 %A.sub.3                         Eq.3 
    
     
         C.sub.i+1 +2A+3A                                           Eq.4 
    
     Likewise, each of the dual four-bit adders 41 thru 48 need only perform the logic functions which are defined below by equations 5, 6, 7, and 8. There, the terms A 1 , A 2 , A 3 , and A 4  represent four binary bits of power i on the A terminals of the module; B 1 , B 2 , B 3 , and B 4  represent four binary bits of power i+1 on the B terminals of the module; S i  represents the sum of power i; S i+1  represents the sum of power i+1; C i+2  represents the carry of power i+2; and C i+3  represents the carry of power i+3. OA indicates that none of the bits A 1  thru A 4  are a binary &#34;1&#34;; 1A indicates that just one of the bits A 1  thru A 4  is a binary &#34;1&#34;; 2A represents that two of the A 1  thru A 4  bits are a binary &#34;1&#34;, etc. 
     
         S.sub.i =A.sub.1 %A.sub.2 %A.sub.3 %A.sub.4                Eq. 5 
    
     
         S.sub.i+1 =B.sub.1 %B.sub.2 %B.sub.3 %B.sub.4 %(2A+3A)     Eq.6 
    
     
         C.sub.i+2 =0B4A+1B(2A+3A)+2B4A+3B(A+1A)+4B4A               Eq.7 
    
     
         C.sub.i+3 =2B4A+3B(2A+3A+4A)+4B                            Eq.8 
    
     Two preferred embodiments of the invention have now been described in detail. In addition, however, many changes and modifications can be made to the details of these embodiments without departing from the nature and spirit of the invention. 
     For example, the arrays 10 and 10&#39; in the above embodiments form the single power product terms such that the total quantity of terms of any particular power in array 10 is within one of the total quantity of product terms of the same power in array 10&#39;. However, significant parallelism can be obtained so long as the total quantity of product terms of any particular power in the respective arrays 10 and 10&#39; are within 30% of each other. 
     Suppose, for example, array 10 has twenty terms of power n-1, and array 10&#39; has twenty-five terms of that same power. Then the arrays would still operate in parallel for twenty of their adds. 
     Also, as another modification to the above described embodiments, the logic cells 1, 2, and 3 can be arranged in more than two arrays which will operate in parallel. Here again, the total quantity of single power product terms of any particular power in the respective arrays should be within 30% of each other. Each array would have its logic cells 1, 2, and 3 interconnected within the array to form an intermediate result which consists of a partial sum of the product terms in the array with no more than one remaining carry-in for each bit of that partial sum. These intermediate results would then be added together by parallel input adders. 
     For example, the multiplication of two binary numbers of forty bits each requires the generation of forty product terms of power 39. Those forty terms could be generated and summed via the cells 1, 2, and 3 in three arrays in groups of thirteen, thirteen, and fourteen; or they could be generated and summed via the cells 1, 2, and 3 in four arrays in groups of ten, ten, ten, and ten. 
     Such a multiplier circuit produces a product even quicker than a multiplier which generates and sums the terms via the cells 1, 2, and 3 in two arrays. However, they also take more chip space than a two array multiplier since they require more parallel input adders for the intermediate results as well as more room to route those results through the adders. 
     Accordingly, since many such modifications to the illustrated preferred embodiment can be made, it is to be understood that the invention is not limited to the details of those embodiments but is defined by the appended claims.