High speed dynamic binary incrementer

Abstract: A high speed dynamic binary incrementer is provided that requires only two stages regardless of the bit width of the incrementer. The binary incrementer utilizes the inverse of logical carry expressions to provide for a first stage. A sum stage receives the inverted carry and the input signals to provide the incremented value. Dynamic wired OR Logic is utilized advantageously to provide the dynamic binary incrementer.

Description: FIELD OF THE INVENTION The present invention relates to a binary incrementer and more particularly to a dynamic binary incrementer that is utilized in high speed applications. BACKGROUND OF THE INVENTION An incrementer can be thought of as an adder with only one input (A input) and a carry in signal. Accordingly, the incrementer adds by one to the A input through the carry in signal. Typically, dynamic binary incrementers are implemented utilizing a carry lookahead structure. A N-bit binary incrementer traditionally requires 2+Log 2 N stages to implement using a binary carry lookahead structure. This approach can be illustrated by the design of a 4 bit incrementer, although the technique is most useful for large bit width incrementers. A 4 bit binary incrementer has 4 data inputs A3, A2, A1, A0 and a carry input (Cin). A 4 bit binary incrementer has 4 data outputs S3, S2, S1, S0, and a carry output (Cout). In this example, S3 represents the most significant bit, S0 represents the least significant bit. The boolean equations describing the incrementer function are shown below: Cout=GP30 & Cin Group propagate (GP) S3=A3 XOR C2 S2=A2 XOR C1 S1=A1 XOR C0 S0=A0 XOR Cin where: C2=GP20 & Cin C1=GP10 & Cin C0=GP0 & Cin GP30=A3 & A2 & A1 & A0 GP20=A2 & A1 & A0 GP10=A1 & A0 GP0=A0 Thus, if a 4 bit incrementer were implemented with a binary carry lookahead structure it could be constructed as shown below: Stage 1: GP32=A3&A2 GP21=A2&A1 GP10= A1&A0 C0=A0&Cin Stage 2: GP30=GP32&GP10 GP20=GP21&A0 Cl=GP10&Cin Stage 3: Cout=GP30&Cin C2=GP20&Cin Stage 4: S3=A3 XOR C2 S2=A2 XOR C1 S1=A1 XOR C0 S0=A0 XOR Cin Thus for a 4 bit incrementer, 2+Log 2 4=4 stages of logic are required for its operation. As can be seen from the above equations, the number of stages and the number of logic gates required to implement incrementers will increase as the number of bits in the incrementer increase. Accordingly what is needed is an incrementer which is easy to implement, and in which the number of stages required are substantially less than known dynamic incrementers. In addition, the incrementer should be easily implemented using standard logic devices. The present invention addresses such a need. EP-A-0 180 005 teaches a binary incrementer for generating multiple addresses from a single current address. The current address is split into several groups of eight bits, each group being output to a separate two stage incrementer. Each incrementer includes a first stage to provide a carry term and a second stage to provide a sum term. Also, each incrementer receives as an input an additional bit, which is forced at 1 and serves as incrementing bit. The incremented eight bits from an incrementer are fed to multiplexors together with the unincremented version of the same eight bits. A test is performed in each multiplexor to check whether the carry function which was implemented in the incrementer was correct or incorrect. If it was correct, the multiplexor accepts the incremented version; if it was incorrect, the multiplexor retains the unincremented version. The type of incrementer disclosed requires additional logic circuitry for keeping both the incremented version and the unincremented one and for making a later determination as to whether each carry function was a valid one and thus should have been carried out. SUMMARY OF THE INVENTION A novel logic/circuit approach to this problem has achieved an N-bit binary incrementer in 2 logic stages which is independent of the bit width of the incrementer (N). A dynamic binary incrementer in accordance with the present invention is provided that utilizes the logical inverse of the carry expressions to provide a first stage. These carry expressions are then provided to a sum stage which sequentially receives these carry expressions and the input signals to provide the incremented value. The dynamic binary incrementer in accordance with the present invention as defined in independent claim 1 comprises; a first stage, for providing a logical inverse of a carry expression, the first stage including a plurality of carry cells, each of the carry cells for receiving an input signals and providing a carry signal, an input signal of a particular carry cell being the logical OR of complement of each input signal to the binary incrementer starting with a current bit to the least significant bit (LSB), inclusive; and the logical OR of the complement of C in , where C in is the carry in to the binary incrementer. The plurality of carry cells are coupled in parallel. The binary incrementer includes a second stage, the second stage including a plurality of sum (S) cells, each of the sum cells for receiving the carry signal and an associated input signal from a corresponding one of the plurality of input cells and providing a sum output. Further embodiments of the invention are specified in the appended dependent claims. Through the use of an logical inverse of the carry expressions which allows for the use of dynamic OR logic elements an incrementer is provided that utilizes less stages than an equivalent carry lookahead binary incrementer. This incrementer has significant utility particularly as the binary incrementer increases in size. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 is a block diagram of a conventional 32 bit binary incrementer. Figure 2 is a 32 bit binary incrementer in accordance with the present invention. Figure 3 is a circuit schematic of a Carry circuit in the incrementer of Figure 2. Figure 4 is a circuit schematic of a Sum circuit in the incrementer of Figure 2. DESCRIPTION OF THE INVENTION The present invention relates to an improvement in a binary incrementer. The following description is presented to enable one of ordinary skill in the art to make and use the invention and is provided in the context of a patent application and its requirements. Various modifications to the preferred embodiment will be readily apparent to those skilled in the art and the generic principles herein may be applied to other embodiments. Thus, the present invention is not intended to be limited to the embodiment shown but is to be accorded the widest scope consistent with the principles and features described herein. To more particularly describe the operation of a conventional carry lookahead incrementer refer now to Figure 1 and the following discussion. Figure 1 is a block diagram of a 32 bit incrementer. The incrementer includes a plurality of cells 12 which provide for a first group of cells 14 generates a first level of carry generate signals (CG). Cells 16, 18 and 20 provide for a next level of CG signals. Cell 28 provides for a next level CG signals. Cells 22, 24 and 26 provide for an additional level of GP signals. Cell 30 provide for the sum signals. Cell 32 inverts the carry and provides an out buffer for the invention. Please find below an example of the logical functions that are in the various cells 12-32 of Figure 1. GROUP PROPAGATE (GP) CELL 12 Has inputs D, C, B, A where the MSB is A and forms the following outputs: XGP DLBA =XA D +XA C +XA B +XA A XGP LBA = XA C +XA B +XA A XGP BA = XA B +XA A XGP A = XA A CARRY GENERATE (CG) CELL 14 Has inputs XA 3 -XA 0 and forms the following outputs: XC 3 =XA 3 +XA 2 +XA 1 +XA 0 +XCin XC 2 = XA 2 +XA 1 +XA 0 +Xcin XC 1 = XA 1 +XA 0 +Xcin XC 0 = XA 0 +Xcin CG CELL 16 Has inputs XGP 74 , XGP 64 , XGP 54 , XGP 4 , XC3 Outputs: XC 7 =XGP 74 +XC3 XC 6 =XGP 64 +XC3 XC 5 =XGP 54 +XC3 XC 4 =XGP 4 +XC3 CG CELL 18 Has inputs XGP 118 , XGP 108 , XGP 98 , XGP 8 , XGP 74 , XC3 Outputs: XC 11 =XGP 118 +XGP 74 +XC3 XC 10 =XG 108 +XGP 74 +XC3 XC 9 =XGP 98 +XGP 74 +XC3 XC 8 =XGP 8 +XGP 74 +XC3 CG CELL 20 Has inputs XGP 1512 , XGP 1412 , XGP 1312 , XGP 1112 , XGP 12 , XGP 118 , XGP 74 , XC3 Outputs: XC 15 =XGP 1512 +XGP 118 +XGP 74 +XC3 XC 14 =XGP 1412 +XGP 118 +XGP 74 +XC3 XC 13 =XGP 1312 +XGP 118 +XGP 74 +XC3 XC 12 =XGP 12 +XGP 118 +XGP 74 +XC3 GP CELL 22 Inputs: XGP 2320 , XGP 2220 , XGP 2120 , XGP 20 , XGP 1916 Outputs: XGP 2316 =XGP 2320 +XGP 1916 XGP 2216 =XGP 2220 +XGP 1916 XGP 2116 =XGP 2120 +XGP 1916 XGP 2016 =XGP 20 +XGP 1916 GP CELL 24 Inputs: XGP 2724 , XGP 2624 , XGP 2524 , XGP 24 , XGP 2320 , XGP 1916 Outputs: XGP 2716 =XGP 2724 +XGP 2320 +XGP 1916 XGP 2616 =XGP 2624 +XGP 2320 +XGP 1916 XGP 2516 =XGP 2524 +XGP 2320 +XGP 1916 XGP 2416 =XGP 24 +XGP 2320 +XGP 1916 GP CELL 26 Inputs: XGP 3128 , XGP 3028 , XGP 2928 , XGP 28 , XGP 2724 , XGP 2320 , XPG 1916 Outputs: XGP 3116 =XGP 3128 +XGP 2724 +XGP 2320 +XPG 1916 XGP 3016 =XGP 3028 +XGP 2724 +XGP 2320 +XPG 1916 XGP 2918 =XGP 2928 +XGP 2724 +XGP 2320 +XPG 1916 XGP 2816 =XGP 28 +XGP 2724 +XGP 2320 +XPG 1916 CG CELL 28 Inputs: XD, XC, XB, XA, XC i , where XD is the MSB Outputs: XC D =XD+XC i XC C =XC+XC i XC B =XB+XC i XC A =XA+XC i SUM CELL 30 Sum i =XA i XOR XC i-1 (Sum i is MSB) Sum i-1 =XA i-1 XOR XC i-2 Sum i-2 =XA i-2 XOR XC i-3 Sum i-3 =XA i-3 XOR XC i-4 (Sum i-3 is LSB) CARRY CELL 32 C 31 = XC 31 As is seen from the above example, the implementation for a 32 bit dynamic incrementer is relatively complex, requiring several different stages of GP and CG cells. In addition, it is also seen that the different cells located therein having varying functionality. Accordingly, the many different logic devices required for this varying functionality further adds to the complexity of the incrementer. The present invention is directed toward a dynamic binary incrementer in which the number of stages is reduced and the implementation of the functionality of each stage is substantially simplified. To more particularly describe a dynamic binary incrementer in accordance with the present invention refer now to the following discussion. To provide for ease in understanding of the principles of the present invention, the concepts thereof will be described in the context of a 4 bit dynamic binary incrementer. ( In this description X will denote the logical inverse of a boolean variable.) Accordingly, in a 4 bit dynamic incrementer in accordance with the present invention, the Carry expressions for each bit can be realized directly using a single stage as follows: Stage 1: X cout =XA 3 +XA 3 +XA 1 +XA 0 +X cin XC 2 =XA 2 +XA 1 +XA 0 +X cin XC 1 =XA 1 +XA 0 +X cin XC 0 =XA 0 +X cin Thereafter, the sum will be implemented by the following stage: Stage 2: S 3 =XA 3 XOR XC 2 S 2 =XA 2 XOR XC 1 S 1 =XA 1 XOR XC 0 S 0 =XA 0 XOR X cin The logic function of the new incrementer can be shown by using the following example: The Sum and Carry output after incrementation will be: In order to perform the increment function in accordance with the present invention, the logical inverse of A3, A2, A1, A0 and Cin will be created as shown below: X C2 = 0 + 0 + 0 + 0 =0 X C1 = 0 + 0 + 0 =0 X C0 = 0 + 0 = 0 S 3 = 1 XOR 0 = 1 S 2 = 0 XOR 0 = 0 S 1 = 0 XOR 0 = 0 S 0 = 0 XOR 0 = 0 Thus, the new incrementer provides the same result as the original equations (Note: the sum output is positive logic, while the carry output is the logical inverse of the original carry output). To more particularly show the advantage of an incrementer in accordance with the present invention refer now to Figure 2. What is shown in Figure 2 is a block diagram of a 32 bit dynamic incrementer 100 in accordance with the present invention. As is seen each of the carry bits (XC i ) in a first carry stage 102 are implemented directly, therefore the lookahead structure associated with traditional dynamic incrementers is eliminated. A second stage 104 which comprises the sum cells which are coupled to their associated carry cells to provide the incremented sum value. Referring now to Figure 3 what is shown is one embodiment of a carry circuit 102 for the 32 bit incrementer of Figure 2. The carry circuit 102 comprises a dynamic wired OR gate 202 coupled to a plurality of transistors 204, each of the transistors provide for one bit of the input to the carry signal (X Ci ). The OR gate 202 in a preferred embodiment is a domino-type OR gate. The equation for the carry signal of the 32 bit (XC 31 ) is shown below:. XC 31 = XA 31 +XA 30 +XA 29 ...X A1 +XA 0 +X Ci Referring now to Figure 3A, what is shown is a carry circuit 102', which includes the dynamic wired OR gate 202 coupled to one transistor 204 to provide one bit of the input signal to the carry cell. Starting with the least significant bit (LSB) for each additional bit of the carry signal, the carry circuit 102' can simply be increased by one transistor. Accordingly, the implementation for the carry circuit 102 is more straightforward and less complex than the carry circuit in the conventional 32 bit dynamic binary incrementer 10 including a lookahead structure shown in Figure 1. Referring now to Figure 4 what is shown is an SUM stage circuit 104 which can be utilized in the dynamic 32 bit binary incrementer 100 of Figure 2. The SUM stage circuit 104 comprises an exclusive OR function which receives the input signals and the carry signal. Accordingly the equation for the SUM (Sum i ) is: Sum i =XA i ·C i-1 +A i XC i-1 =XA i XOR XC i-1 Accordingly, by providing a dynamic binary incrementer which implements the carry in a single stage and implements the sum signal in one stage, the complexity of a dynamic binary incrementer is significantly reduced. In addition, through the elimination of the carry lookahead structure associated with conventional dynamic binary incrementer, a dynamic binary incrementer in accordance with the present invention of the same size is significantly faster.

Claims: A dynamic binary incrementer including a first stage (102) for generating a carry term and a second stage (104) for generating a sum term characterized in that said first stage (102) provides a logical inverse of a carry expression and includes a plurality of carry cells coupled in parallel, each of said carry cells receiving an input signal and providing a carry signal, the input signal of a particular carry cell j being the complements (XAj-1, ..., XA0) of all the input bits to the binary incrementer from the least significant bit (A0) to the j-1 th bit (Aj-1) and the complement (XCin) of the carry in (Cin) to the binary incrementer and the carry signal provided by each carry cell being the logical OR of all the bits in the input signal to that carry cell; and said second stage (104) includes a plurality of sum cells, each sum cell corresponding to a bit position in the incrementer, each sum cell but the one corresponding to the least significant bit position receiving as a first input the complement (XAi) of the bit value at the corresponding bit position and as a second input the carry signal (XCi-1) from the carry cell corresponding to the next lower bit position, the sum cell corresponding to the least significant bit position receiving as a first input the complement (XA0) of the least significant bit and as a second input the complement of the carry in (XCin) to the incrementer, each sum cell providing a sum output (SUMi). The dynamic binary incrementer of claim 1 in which the logical inverse of the carry expression comprises XCn-1 = (XAn-1 + XAn-2 + ... + XA0 + XCin), where An-1 is the most significant bit (MSB) and Cin is an input value of the carry signal. The dynamic binary incrementer of claim 1 or claim 2 in which the second stage (104) comprises a sum stage circuit , the sum stage circuit providing a sum output SUMi having the expression SUMi = XAi XOR XCi-1, where Ai is the bit of position i and Ci-1 is the carry signal from the carry cell corresponding to the next less significant bit. The dynamic binary incrementer of claim 1 in which the first stage comprises a carry circuit (102); the carry circuit further comprising: a dynamic wired OR gate for receiving the input bits; and a plurality of transistors coupled to the dynamic wired OR gate, each of the plurality of transistors providing one input bit to the carry cell. The dynamic binary incrementer of claim 4 in which the dynamic wired OR gate is a domino OR gate. The dynamic binary incrementer of claim 1 in which the second stage comprises a summing circuit, the summing circuit further comprising an exclusive OR circuit, the exclusive OR circuit receiving an input signal, a carry signal and providing an output signal therefrom.

Inventors: BARTLING STEVEN CRAIG, BARTLING, STEVEN CRAIG
Applicants: IBM, INTERNATIONAL BUSINESS MACHINES CORPORATION
Application year: 1995
Main classification: G06F7
IPC codes: G06F7