Abstract:
A high speed incrementer/decrementer design is presented that computes the propagate, generate, and kill signals which are used to compute carries and sums from the incrementer inputs. By setting one input to “0” and the carry-in to “1”, the adder is used as an incrementer. In the design of the invention, a bit-wise decision is made whether to complement the input bit or not. The design also allows decrementing and supports both unsigned and 2&#39;s complement number representations.

Description:
BACKGROUND OF THE INVENTION 
     In standard electronic circuits that include logic functionality, such as microprocessors that perform simple address incrementing, adders are typically used to perform the incrementing. However, the use of adders to perform simple incrementing is typically quite inefficient since a full adder requires more circuitry, and therefore more chip area and power, and is also typically slower than a simple incrementer. Accordingly, a need exists for a high speed incrementer (and decrementer) that can perform the requirements of an incrementer with less power and in a smaller amount of space. 
     SUMMARY OF THE INVENTION 
     A high speed incrementer/decrementer design is presented that is easy to implement, requires less chip space and less power, and is faster than prior art adders. In accordance with the design of the invention, carries and sums are computed using propagate, generate, and kill signals that are derived from the incrementer inputs. By setting one input to “0” and the carry-in to “1”, the adder is used as an incrementer. In the design of the invention, a decision is made whether to complement the input or not. The design also allows decrementing and supports both unsigned and 2&#39;s complement number representations. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     The invention will be better understood from a reading of the following detailed description taken in conjunction with the drawing in which like reference designators are used to designate like elements, and in which: 
     FIG. 1 is a block diagram of an incrementer/decrementer in accordance with the invention; 
     FIG. 2 is a diagram illustrating an increment of an unsigned n-bit number; 
     FIG. 3 is a logic diagram of an incrementer implemented in accordance with the invention; 
     FIG. 4A is a logic diagram of a preferred embodiment of a 16-bit incrementer implemented in accordance with the invention; 
     FIG. 4B is a logic diagram of a preferred embodiment of a group all-one-4 evaluator implemented in accordance with the invention; 
     FIG. 4C is a logic diagram of an alternative preferred embodiment of a group all-one-4 evaluator implemented in accordance with the invention; 
     FIG. 4D is an input diagram illustrating the function performed by the partial all-one evaluator for each local bit grouping; 
     FIG. 4E is a logic diagram of a preferred embodiment of a look-ahead circuit implemented in accordance with the invention for a 64-bit incrementer; 
     FIG. 4F is a logic diagram of a preferred embodiment of a group all-one-16 evaluator implemented in accordance with the invention; 
     FIG. 4G is a logic diagram of a preferred embodiment of a group all-one-64 evaluator implemented in accordance with the invention; 
     FIG. 5 is a diagram illustrating a decrement of an unsigned n-bit number; 
     FIG. 6A is a block diagram of a preferred embodiment 16-bit decrementer; 
     FIG. 6B is a logic diagram of a preferred embodiment of a group all-zero evaluator implemented in accordance with the invention; 
     FIG. 6C is a logic diagram of an alternative preferred embodiment of a group all-zero evaluator implemented in accordance with the invention; 
     FIG. 6D is a diagram illustrating a preferred embodiment of the partial evaluator circuit for each bit grouping; 
     FIG. 7A is a diagram illustrating an increment operation of a twos-complement number, where the sign bit indicates the number is positive; 
     FIG. 7B is a diagram illustrating an increment operation of a twos-complement number, where the sign bit indicates the number is negative; 
     FIG. 8A is a diagram illustrating a decrement operation of a twos-complement number, where the sign bit indicates the number is positive; 
     FIG. 8B is a diagram illustrating a decrement operation of a twos-complement number, where the sign bit indicates the number is negative; 
     FIG. 9A is a logic diagram of one embodiment of a 6-bit evaluator; and 
     FIG. 9B is a logic diagram of one embodiment of an 8-bit evaluator. 
    
    
     DETAILED DESCRIPTION 
     FIG. 1 is a block diagram of an incrementer/decrementer  10  implemented in accordance with the invention. As shown, incrementer/decrementer  10  receives an n-bit input signal A[0:n−1] and generates an n-bit output signal Out[0:n−1] with an overflow (or underflow) bit which indicates whether the increment (or decrement) of the input signal A[0:n−1] resulted in an overflow (or underflow). 
     FIG. 2 is a diagram illustrating an increment for an unsigned n-bit number. As shown, the increment is accomplished by complementing each input bit from the least significant bit A 0  through the first bit A x  that has a logical “0” value. For example, if an 8-bit input has a binary value of “00000111” (i.e., “7” decimal), bits A 0 , A 1 , A 2 , and A 3  are each complemented (since the least significant bit that has a logical “0” value is A 3 ), resulting in an incremented value of binary “00001000” (i.e., “8” decimal). An input signal value of all “1”s will result in an overflow condition when incremented. One skilled in the art will appreciate that the ones-complement technique of incrementing a signal is easily extendable to an n-bit input signal of any length n (e.g., 16-, 32-, 64-, 128-, 256- and higher bit integers). 
     FIG. 3 is a logic diagram of an incrementer implemented in accordance with the invention. As illustrated, incrementer  10  comprises a multiplexer  20  and selection circuit  25 . Multiplexer  20  receives an n-bit input signal A 0  . . . A n−1  and complement input signal bit A 0 ′ . . . A n−1′ , and outputs an n-bit output signal Out 0  . . . Out n−1 . For each bit 0 . . . n−1, selection circuit  25  selects either the input signal bit A 0  . . . A n−1  or complement input signal bit A 0 ′ . . . A n−1 ′ for output as the corresponding output signal bit Out 0  . . . Out n−1 . In particular, for each bit x in the range 0 . . . n−1, selection circuit  25  selects the complement input signal bit A x ′ for output as Out x  if all lower significant input signal bits have a logical “1” value, and selects the input signal bit A i  for output as Out i  if any of the lower significant input signal bits have a logical “0” value. 
     FIG. 4A is a logic diagram of a preferred embodiment of a 16-bit incrementer implemented in accordance with the invention. As illustrated, multiplexer  20  comprises n (where n=16) bit-level multiplexers M 0  . . . M 15 , each receiving its corresponding input signal bit A 0  . . . A 15  and complement input signal bit A 0 ′ . . . A 15 ′. The bits A 0  . . . A 15  of input signal A are partitioned into mutually-exclusive groupings of successively significant bits. In particular, in the embodiment shown in FIG. 4A, the input signal bits are grouped by four, including input signal bit groupings A 0  . . . A 3 , A 4  . . . A 7 , A 8  . . . A 11 , and A 12  . . . A 15 . 
     The selection circuit  25  includes a plurality of group all-one evaluators  32 ,  34 ,  36 ,  38 , one per input signal bit grouping. Each group all-one evaluator  32 ,  34 ,  36 ,  38  is coupled to receive the input signal bits in its corresponding input signal bit grouping. In the illustrative embodiment, the input signal bits are grouped in groups of four. Accordingly, group all-one evaluator  32  receives bits A 0  . . . A 3 , evaluator  34  receives bits A 4  . . . A 7 , evaluator  36  receives bits A 8  . . . A 11 , and evaluator  38  receives bits A 12  . . . A 15 . Each group all-one-4 evaluator  32 ,  34 ,  36 ,  38  produces a respective evaluator signal All-One-4 0 , All-One-4 1 , All-One-4 2 , All-One-4 3  which indicates if all input signal bits A 0  . . . A 3 , A 4  . . . A 7 , A 8  . . . A 11 , A 12  . . . A 15  in its respective input signal bit grouping have a logical “1” value. In the preferred embodiment, group all-one evaluators  32 ,  34 ,  36 ,  38  are each implemented with a logical AND gate, as illustrated in FIG. 4B, that receives each of the input signal bits in its corresponding input signal bit grouping. In an alternative preferred embodiment, group all-one evaluators  32 ,  34 ,  36 ,  38  are each implemented with a logical NOR gate, as illustrated in FIG. 4C, that receives the complement of each of the input signal bits in its corresponding input signal bit grouping. 
     The outputs of the group all-one-4 evaluators  32 ,  34 ,  36 ,  38  are fed into a group all-one-16 evaluator. All-one-16 evaluator  40  produces an evaluator signal All-One-16 0 , which indicates if all of the group-one-4 evaluator signals All-One-4 0 , All-One-4 1 , All-One-4 2 , All-One-4 3  have a logical “1” value. In the preferred embodiment, group all-one-16 evaluator  40  is implemented with a logical AND gate, as illustrated in FIG. 4B, that receives each of the group-one-4 evaluator signals All-One-4 0 , All-One-4 1 , All-One-4 2 , All-One-4 3 . In an alternative preferred embodiment, group all-one-16 evaluator  40  is implemented with a logical NOR gate, as illustrated in FIG. 4C, that receives the complement of each of the group-one-4 evaluator signals All-One-4 0 , All-One-4 1 , All-One-4 2 , All-One-4 3 . The all-one-16 evaluator signal All-One-16 0  corresponds to the overflow signal of the 16-bit incrementer, and goes true when an increment is performed when all input signal bits have a value of “1”. 
     Selection circuit  25  also includes a plurality of partial all-one evaluators  51 - 66 . Each partial all-one evaluator  51 - 66  corresponds to one each of multiplexers M 0  . . . M 15 . Each partial all-one evaluator  51 - 66  is coupled to receive the evaluator signal of each group all-one evaluator  32 ,  34 ,  36 ,  38 . The evaluator signal received by a partial all-one evaluator  51 - 66  evaluates an input signal bit grouping comprising all lower significant bits than the input signal bit associated with the respective multiplexer M 0  . . . M 15 . Each partial all-one evaluator  51 - 66  also receives as input all of the lower significant input signal bits than the input signal bit associated with the respective multiplexer M 0  . . . M 15  that have not already been evaluated by one of the group all-one evaluators  51 - 56  received by the respective partial all-one evaluator. Accordingly, as illustrated in FIG. 4A, partial all-one evaluator  51  (which is associated with multiplexer M 0  and consequently input signal bit A 0 ) always selects the complement input signal bit A 0 ′ since none of the group all-one evaluators evaluate bits that are all lower significant bits than A 0 . Partial all-one evaluator  52  (which is associated with multiplexer M 1  and consequently input signal bit A 1 ) receives bit A 0  since it is the only lower significant bit in the A 0  . . . A 3  input signal bit grouping. Partial all-one evaluator  53  (which is associated with multiplexer M 2  and consequently input signal bit A 2 ) receives bit A 0  and A 1  since A 0  and A 1  are lower significant bits than A 2  in the A 0  . . . A 3  input signal bit grouping. Partial all-one evaluator  54  (which is associated with multiplexer M 3  and consequently input signal bit A 3 ) receives bits A 0 , A 1 , and A 2  since A 0 , A 1 , and A 2  are lower significant bits than A 3  in the A 0  . . . A 3  input signal bit grouping. 
     Partial all-one evaluator  55  (which is associated with multiplexer M 4  and consequently input signal bit A 4 ) receives signal All-One-4 0  since group all-one evaluator  32  evaluates bits A 0  . . . A 3 , which are all lower significant bits than A 4 . Partial all-one evaluator  56  (which is associated with multiplexer M 5  and consequently input signal bit A 5 ) receives signal All-One-4 0  and bit A 4  since A 4  is the only lower significant bit in the A 4  . . . A 7  input signal bit grouping. Partial all-one evaluator  57  (which is associated with multiplexer M 6  and consequently input signal bit A 6 ) receives signal All-One-4 0  and bits A 4  and A 5  since A 4  and A 5  are lower significant bits than A 6  in the A 4  . . . A 7  input signal bit grouping. Partial all-one evaluator  58  (which is associated with multiplexer M 7  and consequently input signal bit A 7 ) receives signal All-One-4 0  and bits A 4 , A 5 , and A 6  since A 4 , A 5 , and A 6  are lower significant bits than A 7  in the A 4  . . . A 7  input signal bit grouping. 
     Partial all-one evaluator  59  (which is associated with multiplexer M 8  and consequently input signal bit A 8 ) receives signals All-One-4 0  and All-One-4 1  since group all-one evaluator  32  evaluates bits A 0  . . . A 3 , and group all-one evaluator  34  evaluates bits A 4  . . . A 7 , which are all lower significant bits than A 8 . Partial all-one evaluator  60  (which is associated with multiplexer M 9  and consequently input signal bit A 9 ) receives signal All-One-4 0 , All-One-4 1 , and bit A 8  since A 8  is the only lower significant bit than A 9  in the A 8  . . . A 11  input signal bit grouping. Partial all-one evaluator  61  (which is associated with multiplexer M 10  and consequently input signal bit A 10 ) receives signal All-One-4 0 , All-One-4 1 , and bits A 8  and A 9  since A 8  and A 9  are lower significant bits than A 10  in the A 8  . . . A 11  input signal bit grouping. Partial all-one evaluator  62  (which is associated with multiplexer M 11  and consequently input signal bit A 11 ) receives signal All-One-4 0 , All-One-4 1 , and bits A 8 , A 9 , and A 10  since A 8 , A 9 , and A 10  are lower significant bits than A 11  in the A 8  . . . A 11  input signal bit grouping. 
     Partial all-one evaluator  63  (which is associated with multiplexer M 12  and consequently input signal bit A 12 ) receives signals All-One-4 0 , All-One-4 1 , and All-One-4 2 , since group all-one evaluator  32  evaluates bits A 0  . . . A 3 , and group all-one evaluator  34  evaluates bits A 4  . . . A 7 , which are all lower significant bits than A 12 . Partial all-one evaluator  64  (which is associated with multiplexer M 13  and consequently input signal bit A 13 ) receives signal All-One-4 0 , All-One-4 1 , All-One-4 2 , and bit A 12  since A 12  is the only lower significant bit than A 13  in the A 12  . . . A 15  input signal bit grouping. Partial all-one evaluator  65  (which is associated with multiplexer M 14  and consequently input signal bit A 14 ) receives signal All-One-4 0 , All-One-4 1 , All-One-4 2 , and bits A 12  and A 13  since A 12  and A 13  are lower significant bits than A 14  in the A 12  . . . A 14  input signal bit grouping. Partial all-one evaluator  66  (which is associated with multiplexer M 15  and consequently input signal bit A 15 ) receives signal All-One-4 0 , All-One-4 1 , All-One-4 2 , and bits A 12 , A 13 , and A 14  since A 12 , A 13 , and A 14  are lower significant bits than A 15  in the A 12  . . . A 15  input signal bit grouping. 
     Each partial all-one evaluator  51 - 66  produces a respective bit-mux select signal SEL 0 , SEL 1 , . . . , SEL 15  which indicates if all of its input signals (i.e., all signal input to the respective partial all-one evaluator) have a logical “1” value. Because the inputs to each respective partial all-one evaluator  51 - 66  includes each lower significant raw or already evaluated (via the group all-one evaluators) input signal bit, the output select signals SEL 0 , SEL 1 , . . . , SEL 15  of each partial all-one evaluator  51 - 66  are used as the select input to the respective bit-multiplexers M 0  . . . M 15  to determine whether the associated input signal bit or bit complement are output by the corresponding bit-multiplexer M 0  . . . M 15 . The select signal SEL 0 , SEL 1 , . . . , SEL 15  selects the complement input signal bit as output if all inputs evaluate to a logical “1”, and selects the input signal bit as output if any of the inputs evaluate to a logical “0”, thereby performing an increment of an unsigned integer. An increment of a signed twos-complement integer, wherein the most significant bit of the input A n−1  is the sign bit, may be accomplished using the design of the invention by propagating the sign bit directly to the output (i.e., not including the sign bit in the complement calculations). In the preferred embodiment, partial all-one evaluators  51  . . .  66  are each implemented with a logical AND gate, as illustrated. In an alternative preferred embodiment, partial all-one evaluators  51  . . .  66  are each implemented with a logical NOR gate that receives the complement of each of its inputs. 
     FIG. 4D is an input diagram illustrating the function performed by the partial all-one evaluator for each local bit grouping. This embodiment shows a 4-bit grouping (e.g., A 0  . . . A 3 , A 4  . . . A 7 , A 8  . . . A 11 , and A 12  . . . A 15  for a 16-bit incrementer/decrementer), where i is the first integer in each group (i.e., 0, 4, 8, or 12), and All-One-In is logically true if each group all-one evaluator representing a group of lower significant bits than the current bit grouping indicates that all of its bits are “1”. In the 16-bit incrementer embodiment of FIG. 4A, there are four such local partial all-one evaluator circuits, one for each of the different four-bit groupings A 0  . . . A 3 , A 4  . . . A 7 , A 8  . . . A 11 , and A 12  . . . A 15 . 
     It will be appreciated that the design of the invention may be extended to any number of input bits n. Because a trade-off exists between the number of gate delay stages and the number of inputs per gate, the larger the number of bits in the input A, the more likely the design will call for a higher number of gate stages. For example, FIG. 4E is a block diagram of an all-one look-ahead circuit for a 64-bit incrementer. (For simplicity, the multiplexer circuits are not shown; however, the multiplexer circuits are implemented in accordance with the same principles used in the 16-bit incrementer implementation of FIG. 4A, taking into account the additional input signals and look-ahead circuits.) In the all-one look-ahead circuit design of a 64-bit incrementer, the group all-one evaluators  70 - 85  are implemented using all-one-4&#39;s (as described in FIG. 4A) which each feed into group all-one-16 evaluators  86 - 89 , which in turn feed into a group all-one-64 evaluator  90 . The output All-One-64 0  of group all-one-64 evaluator  90  indicates whether an overflow condition occurred. FIGS. 4F and 4G illustrate a preferred implementation of the group all-one-16 and group all-one-64 evaluators, respectively, using AND gates that each receive lower stage group all-one-4 evaluator outputs and lower stage group all-one-16 evaluator outputs. It will be appreciated that a NOR gate implementation (not shown) with complemented inputs may also be used, or any other logic circuit that performs the same function. 
     FIG. 5 is a diagram illustrating a decrement of an unsigned n-bit number. As shown, the decrement is accomplished by complementing each input bit from the least significant bit A 0  through the first bit A x  that has a logical “1” value. For example, if an 8-bit input has a binary value of “00001000” (i.e., “8” decimal), bits A 0 , A 1 , A 2 , and A 3  are each complemented (since the least significant bit that has a logical “1” value is A 3 ), resulting in a decremented value of binary “00000111” (i.e., “7” decimal). An input signal value of all “0”s will result in an underflow condition when decremented. One skilled in the art will appreciate that the ones-complement technique of decrementing a signal is easily extendable to an n-bit input signal of any length n (e.g., 16-, 32-, 64-, 128-, 256- and higher bit integers). 
     A preferred embodiment 16-bit decrementer is implemented as shown in FIG. 6A, with group all-zero evaluators  132 ,  134 ,  136 ,  138  and all partial all-zero evaluators  151 - 166  calculating whether all inputs are “0”s (rather than all “1”s as in the incrementer of FIG.  4 A). A preferred embodiment implementation of group all-zero evaluators  132 ,  134 ,  136 ,  138  is shown in FIG. 6B, using a NOR gate for each group all-zero evaluator that receives the uncomplemented group bit signals. An alternative embodiment is shown in FIG. 6C using an AND gate that receives the complements of each of the same inputs. A preferred embodiment of the partial all-zero evaluator circuit for each bit grouping is illustrated in FIG.  6 D. 
     The invention may be used to perform an increment or decrement of a twos-complement number. FIG. 7A illustrates the increment operation of a positive twos-complement number, where the sign bit indicates the number is positive. FIG. 7B illustrates the increment operation of a negative twos-complement number, where the sign bit indicates the number is negative. As illustrated, in both the positive and negative number cases, each of the bits of the number, including the sign bit, is complemented or not complemented in the same manner as the unsigned number of FIG.  2 . An input signal value of all “1”s and a sign bit value of “0” will result in an overflow condition when incremented. 
     FIG. 8A illustrates the decrement operation of a positive twos-complement number, where the sign bit indicates the number is positive. FIG. 8B illustrates the decrement operation of a negative twos-complement number, where the sign bit indicates the number is negative. As illustrated, in both the positive and negative number cases, each of the bits of the number, including the sign bit, is complemented or not complemented in the same manner as the unsigned number of FIG.  5 . An input signal value of all “0”s and a sign bit value of “1” will result in an underflow condition when decremented. 
     It is to be understood that the groupings of the input bits is arbitrary. Thus, although the illustrative embodiments show 4-bit groupings, any number of bits can be input to the group- and partial-evaluators so long as the evaluators have the capacity to properly perform their evaluation functions with the number of inputs in the group. Accordingly, input signal bits may be grouped in groups of 6, 8, or any other number. In addition, the number of bits in each group may vary. For example, for a 30-bit number, there may be three 8-bit groupings (e.g., A 0  . . . A 7 , A 8  . . . A 15 , A 16  . . . A 23 ) and one 6-bit grouping (e.g., A 24 -A 29 ). This grouping would utilize three 8-bit group evaluators and one 6-bit group evaluator. FIG. 9A illustrates a logic diagram of one embodiment of a 6-bit evaluator  92 . FIG. 9B illustrates a logic diagram of one embodiment of an 8-bit evaluator  94 . 
     Although the invention has been described in terms of the illustrative embodiments, it will be appreciated by those skilled in the art that various changes and modifications may be made to the illustrative embodiments without departing from the spirit or scope of the invention. It is intended that the scope of the invention not be limited in any way to the illustrative embodiment shown and described but that the invention be limited only by the claims appended hereto.