US5020013A - Bidirectional variable bit shifter - Google Patents
Bidirectional variable bit shifter Download PDFInfo
- Publication number
- US5020013A US5020013A US07/415,037 US41503789A US5020013A US 5020013 A US5020013 A US 5020013A US 41503789 A US41503789 A US 41503789A US 5020013 A US5020013 A US 5020013A
- Authority
- US
- United States
- Prior art keywords
- bit
- shift
- coupled
- pass transistor
- shifted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/015—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices
Definitions
- This invention relates in general to the field of digital electronic devices. More specifically, the present invention relates to a circuit for performing bidirectional variable bit length shifting operations.
- Digital electronic circuitry often operates on information represented by many parallel data bits. It is often necessary in mathematical operations within digital electronic circuitry to shift these data bits left or right selected numbers of bit positions. Circuitry for shifting data bits left and right is essential to arithmetic logic units in microprocessors and coprocessors.
- Some bidirectional shifters presently used in digital electronic circuitry require that the data to be shifted be input into one input for left shift operations and into another input for right shift operations. Because of the need for routing the data to be shifted into different inputs, depending on whether a left or right shift operation is required, shifting of data in these present shifters takes more than one clock cycle and may require additional circuitry for routing the data to the appropriate input.
- bit shifter which allows for unidirectional data flow and bidirectional, that is, left and right, shifting of variable bit positions, which also indicates whether significant data bits have been shifted to the right of the least significant bit on right shift operations. Furthermore, because of the importance of speed in digital electronic processing, a need has arisen for a bit shifter which outputs shifted data in a single clock cycle.
- a bidirectional variable bit shifter is provided which substantially eliminates or reduces disadvantages and problems associated with prior bit shifters.
- a bidirectional variable bit shifter which allows for unidirectional data flow and shifts input data either left or right a variable number of bit positions.
- the bidirectional variable bit shifter of the present invention also indicates whether significant data bits have been shifted to the right of the least significant bit on right shift operations. Data is output from the bidirectional variable bit shifter of the present invention less than one-half clock cycle after data is input into the shifter.
- the bidirectional variable bit shifter comprises a latch/input driver, a word shift array for shifting bits 16 positions at a time, a nibble shift array for shifting bits four bit positions at a time, a bit shift array for shifting bits one bit position at a time and a latch/output driver for outputting the shifted data.
- Each shift array signals an INDICATOR BIT if a significant data bit has been right shifted past the least significant bit.
- An important technical advantage of the present invention is that data is input through a single input stage and can be bidirectionally shifted left or right.
- the circuit of the present invention allows for variable bit shifting left or right within one clock cycle.
- a further technical advantage of the present invention is its ability to shift bits a variable number of bit positions and also indicate whether significant data bits have been shifted right of the least significant bit on right shift operations.
- a further technical advantage of the present invention is the small number of transistors needed for each bit within the shifting circuitry. This small number of transistors allows for the semiconductor surface area occupied by the present invention to be largely confined by metal pitch parameters instead of transistor size and number.
- Another technical advantage of the present invention is that, because the circuitry for each bit position is substantially identical, except for the presence of INDICATOR BIT generation logic, the circuits for all bits within the present invention have substantially identical parasitic load factors.
- FIG. 1 is a block diagram of the bidirectional variable bit shifter of the present invention
- FIG. 2 is a graphical representation of the shifting operation within the word shift array of the present invention
- FIG. 3 is a schematic diagram which illustrates exemplary circuitry for shifting data bits within the word shift array of the present invention.
- FIG. 4 is a timing diagram which illustrates the operation of the bidirectional variable bit shifter circuit of the present invention.
- FIG. 1 illustrates a block diagram of the bidirectional variable bit shifter circuit of the present invention, indicated generally at 10.
- the bidirectional variable bit shifter circuit 10 operates on parallel data bits presented on a data bus 11.
- the data on data bus 11 which may comprise, for example, 74 parallel data bits is input into the shifter circuit 10 through a latch/input driver 12 which may comprise, for example, an inverter and latching pass transistor, and may be termed an input port.
- the present invention uses a single input port.
- the term single input port is used to distinguish prior art systems which require data to be input in one port for left shifts and another port for right shifts.
- the present invention uses a single input port for data which is to be shifted either right or left.
- the term input port should be understood to define a port through which parallel data bits are input into the present invention.
- circuit of the present invention is not a "barrel" shifter as this term is known in the art.
- the circuit contains no barrel or wrap-around feature by which, for example, data shifted beyond the least significant bit is reinserted in the most significant bit positions. Data shifted past the least significant and most significant ends of the present circuit is not recovered.
- the circuit of the present invention accordingly enjoys an increase in speed due to its simplified design.
- the data is input into a word shift array 14 coupled to latch/input driver 12 and shifted either 0, 16, 32, 48, 64 or 80 bits, left or right.
- the data which has been shifted in word shift array 14 is then input into a nibble shift array 16 coupled to word shift array 14 and shifted by either 0, 4, 8 or 12 bits, left or right.
- the data which has been shifted in nibble shift array 16 is then input into a bit shift array 18 coupled to nibble shift array 16 and shifted either 0, 1, 2 or 3 bits, left or right.
- a required shift of 27 bits requires a shift of 16 bits in the word shift array 14, a shift of 8 bits in the nibble shift array 16, and a shift of 3 bits in the bit shift array 18.
- the order in which the data passes through and is shifted by the word shift array 14, the nibble shift array 16, and the bit shift array 18 is merely disclosed as an exemplary embodiment for the purposes of teaching the present invention and may be changed so that, for example, the data first passes through the nibble shift array 16 and then the word shift array 14, and then the bit shift array 18 without departing from the spirit and scope of the invention as defined by the appended claims.
- a latch/output driver 20 which comprises a single output port, coupled to bit shift array 18, which may comprise, for example, an inverter and latching pass transistor configured according to known methods such that the output data can be sent to other digital electronic devices.
- bit shift array 18 may comprise, for example, an inverter and latching pass transistor configured according to known methods such that the output data can be sent to other digital electronic devices.
- the term single output port is used to distinguish prior art systems which require input data to be input in one port for right shifts and another port for left shifts, and thus also have two output ports, one for outputting left shifted data and one for right shifted data.
- the term output port should be understood to define a port through which parallel data bits are output from the present invention.
- the word shift array 14, nibble shift array 16, and bit shift array 18, are each coupled to and controlled by a control decode circuit 22.
- the control decode circuit 22 controls whether shifting is left or right, the number of bit positions shifted, and controls whether a one or a zero is filled in the appropriate most significant bits on right shift operations in the word shift array 14, nibble shift array 16, and bit shift array 18.
- the control decode circuit 22 decodes information from a MICROCODE CONTROL BUS and from three separate SHIFT COUNT BUSSES. Information on the MICROCODE CONTROL BUS input into the control decode circuit 22 determines whether the shift operations will be left or right, which of three SHIFT COUNT BUSSES are to be selected, and which fill mode will be selected.
- the fill mode determines whether logic ⁇ ones ⁇ or ⁇ zeroes ⁇ as fill bits will be shifted into the appropriate most significant bits on right shift operations.
- a left/right shift select signal is decoded from the MICROCODE CONTROL BUS.
- the control and data path widths of the MICROCODE CONTROL BUS and the SHIFT COUNT BUSSES as well as the 74 bit data busses shown in FIG. 1 are disclosed for the purpose of teaching the present invention and should not be construed to limit the scope of the present invention.
- the teachings of the present invention are equally applicable to a wide variety of data and control path widths dependant on the requirements of an integrated system of which the circuit 10 may comprise a single component.
- the word shift array 14, nibble shift array 16, and bit shift array 18 transmit a signal to sense amps 24, 26, or 28, coupled to arrays 14, 16 and 18 respectively.
- the outputs of sense amps 24, 26 and 28 are input into logical-Or gate 30.
- the output of logical-Or gate 30 is the INDICATOR BIT.
- the INDICATOR BIT signals that significant data bits have been shifted past the least significant bit during a right shift operation.
- FIG. 2 is a graphical illustration of the function of the word shift array 14, in addition to the fan out of each line of data bus 11 and the fan in of each shifted bit within the word shift array 14.
- Data bus 11 of FIG. 1 represents a parallel data bus having, for example, 74 parallel lines. For purposes of this description, it is convenient to assign numbers to each of the lines on data bus 11.
- the least significant line, or bit, of data bus 11, is bit zero, while the most significant line, or bit, of data bus 11 is, for example, in a 74 line data bus, bit 73.
- the terms ⁇ right ⁇ and ⁇ left ⁇ used herein should be understood to be ordinal references, and not physical references.
- bit 0 is the right most bit
- bit 73 is the left most bit for a 74 bit data bus.
- Node 32 shown in FIG. 2 represents a bit N of data bus 11, where 16>N ⁇ 0.
- Node 34 represents a bit N+16 of data bus 11
- node 36 represents a bit N+32 of data bus 11
- node 38 represents a bit N+48 of data bus 11
- node 40 represents a bit N+64 of data bus 11.
- bit N is shifted to the bit N+16 position.
- the L16 line drawn from node 32 to node 44 represents a left shift 16 operation.
- Node 44 represents bit position N+16 after a left shift 16 operation is performed within the word shift array 14.
- Line L32 between node 32 and node 46 represents a left shift 32 operation performed on bit N.
- bit N is shifted to the N+32 position.
- Node 46 represents bit N+32 after a shift operation within the word shift array 14.
- the L48 line between node 32 and node 48 similarly represents a left shift 48 operation. After a left shift 48 operation, bit N is shifted to the bit N+48 position represented by node 48.
- Line L64 between node 32 and node 50 represents a left shift 64 operation performed on bit N. After a left shift 64 operation, bit N is shifted to the bit N+64 position. Node 50 represents bit N+64 after a shift operation within the word shift array 14. For a left shift 80 operation all data bits are lost and all word shifted bits are set to a logical value of zero. For right shift operations greater than zero the vacated word shifted bits are set to either a logical value of one or zero depending on the selected right shift fill mode.
- Node 34 represents a bit N+16 on data bus 11.
- bit N+16 will be shifted past the least significant bit position of the 74 bit data path through circuit 10. Therefore, a right shift operation of shift value greater than 16 will result in a signal sent to indicator bit sense 52 if bit N+16 is a significant data bit. In this case, a signal will be sent through sense node 51 to the indicator bit sense amp 52 if significant data bits have been lost in the shifting operation.
- Line R16 drawn between node 34 and node 42 represents a right shift 16 operation performed on bit N+16. After the right shift 16 operation, bit N+16 is shifted to the bit N position which is represented by node 42.
- Line RO drawn between node 34 and node 44 represents a right shift zero operation performed on bit N+16. After a right shift zero operation, bit N+16 is shifted to the bit N+16 position which is represented by node 44.
- Line L16 drawn between node 34 and node 46 represents a left shift 16 operation performed on bit N+16. After a left shift 16 operation, bit N+16 is shifted to bit N+32 which is represented by node 46.
- Line L32 drawn between node 34 and node 48 represents a left shift 32 operation performed on bit N+16.
- bit N+16 is shifted to the bit N+48 position which is represented by node 48.
- a line L48 between node 34 and node 50 represents a left shift 48 operation performed on bit N+16.
- bit N+16 is shifted to bit N+64 which is represented by node 50.
- the vacated word shifted bits are set to a logical value of zero.
- the vacated word shifted bits are set to a logical value of one or zero depending on the selected right shift fill mode.
- Node 36 represents a bit N+32 on data bus 11.
- a signal is sent through sense node 51 to indicator bit sense amp 52 if significant data bits have been lost in the shifting operation.
- Line R32 drawn between node 36 and node 42 represents a right shift 32 operation performed on bit N+32. After a right shift 32 operation, bit N+32 is shifted to bit N which is represented by node 42.
- Line R16, drawn between node 36 and node 44 represents a right shift 16 operation performed on bit N+32. After a right shift 16 operation, bit N+32 is shifted to bit N+16 which is represented by node 44.
- Line RO drawn between node 36 and node 46 represents a right shift 0 operation performed on bit N+32. After a right shift 0 operation, bit N+32 is shifted to bit N+32 which is represented by node 46.
- Line L16 drawn between node 36 and node 48 represents a left shift 16 operation performed on bit N+32. After a left shift 16 operation, bit N+32 is shifted to bit N+48 which is represented by node 48.
- Line L32 drawn between node 36 and node 50 represents a left shift 32 operation performed on bit N+32. After a left shift 32 operation, bit N+32 is shifted to bit N+64 which is represented by node 50.
- the vacated word shifted bits are set to a logical value of zero.
- the vacated word shifted bits are set to a logical value of one or zero depending on the selected right shift fill mode.
- Node 38 represents a bit N+48 on data bus 11.
- a signal is sent through sense node 51 to indicator bit sense amp 52 if signficiant data bits have been lost during the shift operation.
- Line R48 drawn between node 38 and node 42 represents a right shift 48 operation performed on bit N+48. After a right shift 48 operation, bit N+48 is shifted to bit N which is represented by node 42.
- Line R32 drawn between node 38 and node 44 represents a right shift 32 operation performed on bit N+48. After a right shift 32 operation, bit N+48 is shifted to bit N+16 which is represented by node 44.
- Line R16 drawn between node 38 and node 46 represents a right shift 16 operation performed on bit N+48. After a right shift 16 operation, bit N+48 is shifted to bit N+32 which is represented by node 46.
- Line RO drawn between node 38 and node 48 represents a right shift 0 operation performed on bit N+48. After a right shift 0 operation, bit N+48 is shifted to bit N+48 which is represented by node 48.
- Line L16 drawn between node 38 and node 50 represents a left shift 16 operation performed on bit N+48. After a left shift 16 operation, bit N+48 is shifted to bit N+64 which is represented by node 50.
- the vacated word shifted bits are set to a logical value of zero.
- the vacated word shifted bits are set to a logical value of one or zero depending on the selected right shift fill mode.
- Node 40 represents bit N+64 of data bus 11.
- a right shift 80 operation shifts bit N+64 to the right of the least significant bit.
- a signal is sent to indicator bit sense amp 52 through sense node 51 if bit N+64 is a significant bit on a right shift 80 operation.
- Line R64 drawn between node 40 and node 42 represents a right shift 64 operation performed on bit N+64. After a right shift 64 operation, bit N+64 is shifted to bit N which is represented by node 42.
- Line R48 drawn between node 40 and node 44 represents a right shift 48 operation performed on bit N+64. After a right shift 48 operation, bit N+64 is shifted to bit N+16 which is represented by node 44.
- Line R32 drawn between node 40 and node 46 represents a right shift 32 operation performed on bit N+64. After a right shift 32 operation, bit N+64 is shifted to bit N+32 which is represented by node 46.
- Line R16 drawn between node 40 and node 48 represents a right shift 16 operation performed on bit N+64. After a right shift 16 operation, bit N+64 is shifted to bit N+48 which is represented by node 48.
- Line RO drawn between node 40 and node 50 represents a right shift 0 operation performed on bit N+64. After a right shift 0 operation, bit N+64 is shifted to bit N+64 which is represented by node 50.
- the vacated word shifted bits are set to a logical value of zero.
- the vacated word shifted bits are set to a logical value of one or zero depending on the selected right shift fill mode.
- nodes 32, 34, 36, 38, and 40 represent pre-shifted bits
- nodes 42, 44, 46, 48, and 50 represent the shifted bits, or bits output by word shift array 14.
- a fill bit node 54 of FIG. 2 is represented as an input into node 42, node 44, node 46, node 48 and node 50 and is intended to illustrate this writing in of bit values.
- the appropriate most significant bits are filled with either logical ⁇ ones ⁇ or ⁇ zeros ⁇ , depending on a selectable fill mode, on right shift operations.
- fill bit node 54 could be set to either a logical ⁇ one ⁇ or ⁇ zero ⁇ depending on what logical value was desired to be inserted into the bit positions vacated during the right shift operation.
- the nibble shift array 16 of FIG. 1 operates similarly to word shift array 14, except that the shifting operations in the nibble shift array 16 are of length 0, 4, 8 or 12 bits.
- the bit shift array 18 also operates similarly to word shift array 14, except that the shifting operations in the bit shift array 18 are of length 0, 1, 2 or 3 bits.
- a graphical illustration of the operation of nibble shift array 16 and bit shift array 18 in the format of FIG. 2 would be nearly identical to FIG. 2 with only the numbers on the lines representing shift operations, and the representative bits needing to be altered. For example, for the nibble shift array 16, bits N, N+4, N+8, and N+12 would each be represented as being shifted 3, 4, 8 or 12 bits left or right.
- FIG. 3 is a schematic diagram which represents a single exemplary embodiment of a circuitry cell, indicated generally at 55, by which a bit may be shifted within the word shift array 14.
- Word shift array 14 may comprise a parallel connection of 74 circuits similar to circuit 55 to provide for word shift operation for each of the 74 data bits able to be shifted by circuit 10.
- Word shifted bit N represented as node 56 in FIG. 3, represents bit N after a shift operation in the word shift array 14. As in FIG. 2, in FIG. 3, N is greater than or equal to zero and less than 16.
- Control lines SO, SR16, SR32, SR48, SR64, SRMORE, SL16, SL32, SL48, SL64, and SLMORE operate to enable pass transistors 58, 60, 62, 64, and 66 to allow the appropriate bit to be shifted into the new word shifted bit N.
- a pass transistor 68 is enabled by control line SL16P, coupled to the gate of pass transistor 68, so that on left shift operations, electrical ground, representing a logical value of 0, will be multiplexed into node 56 through pass transistor 68, because there are no bits right of bit zero to shift in. This corresponds to the fact that circuit 10 fills with logical zeroes in the least significant bit positions during left shift operations as opposed to being able to selectively fill with either logical ones or zeroes during right shift operations as discussed previously.
- a control signal SRMORE which is generated by control decode circuit 22 and is coupled to the gate of pass transistor 70, enables pass transistor 70 such that right fill bit, represented by signal R FILL, is shifted into bit N represented by node 56.
- the source of pass transistor 70 is coupled to node 56 and the drain of pass transistor 70 is coupled to the R FILL signal.
- a control signal SR64 which is generated by control decode circuit 22 and is coupled to the gate of pass transistor 58, enables pass transistor 58 such that bit N+64 is shifted into bit N represented by node 56.
- the source of pass transistor 58 is coupled to node 56 and the drain of pass transistor 58 is coupled to bit N+64 of data bus 11.
- pass transistors 58, 60, 62, 64, 66, 68, and 70 are operable to multiplex data bits into node 56.
- a control signal SR48 also generated by control and decode circuit 22 and coupled to the gate of pass transistor 60, enables pass transistor 60 such that bit N+48 is shifted into bit N represented by node 56.
- the source of pass transistor 60 is coupled to node 56, and its drain is coupled to bit N+48.
- a control signal SR32 also generated by control and decode circuit 22 and coupled to the gate of pass transistor 62, enables pass transistor 62 such that bit N+32 is shifted into bit N represented by node 56.
- the source of pass transistor 62 is coupled to node 56, and its drain is coupled to bit N+32.
- a control signal SR16 also generated by control and decode circuit 22 and coupled to the gate of pass transistor 64, enables pass transistor 64 such that bit N+16 is shifted to bit N represented by node 56.
- the source of pass transistor 64 is coupled to node 56, and its drain is coupled to bit N+16.
- a control signal SO also generated by control and decode circuit 22 and coupled to the gate of pass transistor 66, enables pass transistor 66 such that bit N is shifted to bit N represented by node 56.
- the source of pass transistor 66 is coupled to node 56, and its drain is coupled to bit N.
- the SL16, SL32, SL48, SL64 and SLMORE control signals are appropriately coupled to the gates of the pass transistors 58, 60, 62, 64, 66 and 70 of other cells in the same manner as SO, SR16, SR32, SR48, SR64 and SRMORE are coupled in the circuitry cell 55 of FIG. 3.
- SR32P is coupled to the gate of pass transistor 70 of that cell and its drain is coupled to the eight fill bit
- SL64P is coupled to the gate of pass transistor 68 of that cell and its drain is coupled to ground.
- Pass transistor 68 is enabled by a control signal SL16P generated by control and decode circuit 22 such that electrical ground or logic level ⁇ zero ⁇ is shifted into bit N.
- the drain of pass transistor 68 is coupled to node 56, and its source is coupled to electrical ground.
- FIG. 3 illustrates word shifted bit N at node 56, where 16 ⁇ N ⁇ 0
- control line SL16P is coupled to the gate of pass transistor 68 for filling in ⁇ zeroes ⁇ into bits 0-15 or left shift operation of shift value greater than 0 in word array 14.
- control line SL32P is coupled to each appropriate L/FILL pass transistor gate to allow ⁇ zeroes ⁇ to be written into bits 16-31 on left shift operation of shift value greater than 16 in word shift array 14.
- control line SL48P is coupled to each appropriate L/FILL pass transistor gate to allow ⁇ zeroes ⁇ to be written into bits 32-47 on left shift operations of shift value greater than 32 in word array 14.
- control line SL64P is coupled to each appropriate LFILL pass transistor gate to allow ⁇ zeroes ⁇ to be written into bits 48-63 on left shift operation of shift value greater than 48 in word array 14.
- control line SLMORE is coupled to each appropriate L/FILL pass transistor gate to allow ⁇ zeroes ⁇ to be written into bits 64-79 on left shift operations of shift value greater than 64 in word array 14.
- An INDICATOR BIT generator is coupled to electrical ground whenever a right shift operation results in a significant data bit being shifted to the right of the least significant bit.
- INDICATOR BIT generator 72 may, for example, be comprised of two pass transistors 74 and 76. Pass transistor 74 is enabled by a control signal SR16P generated by control and decode circuit 22, while pass transistor 76 is enabled if bit N is a significant data bit. If both transistors 74 and 76 are enabled, then electrical ground, which is coupled to the source of pass transistor 74, passes through pass transistor 74 and 76 to IND OUT, which comprises an indicator bit signal line. The drain of pass transistor 76 is coupled to the IND OUT line and its source is coupled to the drain of pass transistor 74. The gate of pass transistor 76 is coupled to bit N.
- control signal SR16P is coupled to the gate of pass transistor 74 of the INDICATOR BIT generator 72.
- Control signal SR16P enables the pass transistor 74 whenever a right shift operation of shift value greater than zero is required in shift array 14. Therefore, on any shift right operation of shift value greater than zero in word shift array 14, where bits 0-15 are significant data bits, the INDICATOR BIT signal will indicate the presence of the significant data bit by being pulled to electrical ground.
- An indicator bit generator 72 is present for every circuitry cell 55 within the word shift array 14. Each indicator bit generator 72 is wire ORed to the IND OUT signal line which is coupled to sense amp 24 of FIG. 1. Control lines SR16P, SR32P, SR48P, SR64P, and SRMORE are used to enable each indicator bit generator 72. As discussed previously, control signal SR16P enables the indicator bit generators 72 for bits 0-15 on all right shift operations of shift greater than zero. Control signal SR32P is coupled to the first pass transistor in the INDICATOR BIT generators for 32 ⁇ N ⁇ 16, and enables this transistor on all right shift operations of shift value greater than 16.
- Control line SR48P is coupled to the first pass transistor in the INDICATOR BIT generators for 48 ⁇ N ⁇ 32, and enables this transistor on all right shift operation of shift value greater than 32.
- Control line SR64P is coupled to the first pass transistor in the INDICATOR BIT generators for 64 ⁇ N ⁇ 48, and enables this transistor on all right shift operations of shift value greater than 48.
- Control line SRMORE is coupled to the first pass transistor in the INDICATOR BIT generators for 80 ⁇ N ⁇ 64, and enables this transistor on all right shift operations of shift value greater than 64.
- Pass transistors 58, 60, 62, 64, 66, 68, 70, 74 and 76 may comprise n-channel transistors, and may be enabled by raising their gate voltage to a logic level ⁇ one ⁇ state, for example, five volts.
- Control signals SO, SR16, SR32, SR48, SR64, SRMORE, SL16, SL32, SL48, SL64, SLMORE, SR64P, SR48P, SR32P, SR16P, SL64P, SL48P, SL32P and SL16P are all generated by the control decode circuit 22 of FIG. 1.
- Control decode circuit 22 decodes information from the MICROCODE CONTROL BUS and the three Shift Count Busses by known means to generate the control signals illustrated in FIG. 3.
- Nibble shift array 16 Because the nibble shift array 16 of FIG. 1 only shifts by 0, 4, 8 or 12 bit positions, fewer control signals are needed for its control. Nibble shift array 16 does not require control signals for writing in ⁇ zeroes ⁇ on left shifts. These ⁇ zeroes ⁇ are hardwired into bits 0-11 on the appropriate left shift operation. Nibble shift array 16 requires only three control lines for INDICATOR BIT logic, since only bits 0-11 can be shifted right of the least significant bit during right shift operations.
- nibble shift array 16 requires control signals for controlling the following operations: shift zero, shift left four, shift left 8, shift left 12, shift right 4, shift right 8, shift right 12, INDICATOR BIT control right 4, and INDICATOR BIT control 8 (the INDICATOR BIT control 12 function is accomplished by the shift right 12 control line).
- Bit shift array 18 of FIG. 1 is identical to the nibble shift array 16 except that instead of shift operations of 0, 4, 8, or 12 bit positions, shifting is done in lengths of 0, 1, 2 or 3 bit positions.
- node 56 represents bit N after the shift operation has taken place in the word shift array 14.
- Bit N is output and coupled to the nibble shift array 16 through an inverter 78 which is coupled to an inverter 82.
- a p-channel pass transistor 80 is used to assist in achieving a complete voltage level for the appropriate logical values present on node 56.
- the drain of pass transistor 80 is coupled to node 56 while the source is coupled to V DD .
- the gate of pass transistor 80 is coupled to the output of inverter 78. Pass transistor 80 is enabled by applying a logic level ⁇ zero ⁇ to its gate.
- circuit 55 is exemplary of the circuits used for each bit in each of word shift array 14, nibble shift array 16 and bit shift array 18, there are some minor deviations.
- the INDICATOR BIT generator 72 of FIG. 3 is not needed for every bit. Because the nibble shift array 16 can only shift a maximum of 12 bits, INDICATOR BIT generator circuitry is needed only for bits 0-11. Additionally, for the bit shift array 18, the INDICATOR BIT generator 72 of FIG. 3 is not needed for every bit. Because the bit shift array 18 can only shift a maximum of 3 bits, INDICATOR BIT generator circuitry is needed only for bits 0-2.
- FIG. 4 is a timing diagram illustrating the operation of circuit 10 of FIG. 1.
- Clock signal 84 is a square wave having a frequency, for example, of 25 megahertz.
- Signal 86 represents data on the MICROCODE CONTROL bus. This data becomes valid immediately after the falling edge of clock signal 84.
- a DATA IN signal 88 represents the data which is input into word shift array 14. This data becomes valid on the rising edge of clock signal 84.
- a DATA OUT signal 90 represents the data which is output from circuit 10.
- Signal 92 represents a shift count worst case signal, that is, the latest that data can be valid on the shift count bus and still allow for valid shifting within one clock cycle.
- Signal 92 shows that the shift count worst case exists when the shift count becomes valid after the rising edge of clock signal 84, illustrated by point 96 of FIG. 4.
- Signal 94 represents a shift count normal case signal. In the normal case operation, the shift count signal is valid before the rising edge of clock signal 84, illustrated by point 98 of FIG. 4, allowing each shift array to be programmed prior to the presence of valid input data.
- Data In signal 88 data is latched into shifter circuit 10 on the rising edge of clock signal 84.
- Data Out signal 90 illustrates that data is latched out of shifter circuit 10 on the falling edge of clock signal 84.
- FIG. 4 illustrates that data is shifted by shifter circuit 10 in half of one clock cycle, since the shifting operations occur between the latching in and out of data, and that new data can be latched on the output of the shifter circuit 10 every clock cycle.
- the present invention provides the important technical advantage of allowing unidirectional data input with bidirectional, left and right, shifting operations.
- the foregoing description also demonstrates the further technical advantage of the present invention of the presence of an INDICATOR BIT in a variable bit shifter.
- a still further technical advantage of the present invention is its ability to output latched shifted data in one clock cycle.
- the small number of transistors needed for each cell within the present invention, and the substantially identical makeup of each cell provides for the use of a small semiconductor surface area and uniform parasitic load factors.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
Abstract
Description
Claims (7)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/415,037 US5020013A (en) | 1989-09-29 | 1989-09-29 | Bidirectional variable bit shifter |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/415,037 US5020013A (en) | 1989-09-29 | 1989-09-29 | Bidirectional variable bit shifter |
Publications (1)
Publication Number | Publication Date |
---|---|
US5020013A true US5020013A (en) | 1991-05-28 |
Family
ID=23644093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US07/415,037 Expired - Lifetime US5020013A (en) | 1989-09-29 | 1989-09-29 | Bidirectional variable bit shifter |
Country Status (1)
Country | Link |
---|---|
US (1) | US5020013A (en) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5099445A (en) * | 1989-12-26 | 1992-03-24 | Motorola, Inc. | Variable length shifter for performing multiple shift and select functions |
US5559730A (en) * | 1994-02-18 | 1996-09-24 | Matsushita Electric Industrial Co., Ltd. | Shift operation unit and shift operation method |
US5636351A (en) * | 1993-11-23 | 1997-06-03 | Hewlett-Packard Company | Performance of an operation on whole word operands and on operations in parallel on sub-word operands in a single processor |
US5745744A (en) * | 1995-10-12 | 1998-04-28 | International Business Machines Corporation | High speed mask generation using selection logic |
US5793654A (en) * | 1996-09-30 | 1998-08-11 | Intel Corporation | Saturating alignment shifter |
US5844825A (en) * | 1996-09-03 | 1998-12-01 | Wang; Song-Tine | Bidirectional shifter circuit |
US5896305A (en) * | 1996-02-08 | 1999-04-20 | Texas Instruments Incorporated | Shifter circuit for an arithmetic logic unit in a microprocessor |
US20020057110A1 (en) * | 2000-06-15 | 2002-05-16 | Fujitsu Limited | Path transistor circuit and method for designing the same, a device and method for optimizing logic circuits, and a computer product |
US20030131029A1 (en) * | 2002-01-08 | 2003-07-10 | Bandy James Henry | Barrel shifter |
US20040015526A1 (en) * | 2002-07-17 | 2004-01-22 | Ziegler James Craig | Apparatus and method for data shifting |
US20050144214A1 (en) * | 2003-12-24 | 2005-06-30 | International Business Machines Corporation | Shift-and-negate unit within a fused multiply-adder circuit |
US7774393B1 (en) * | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US20190102184A1 (en) * | 2017-09-29 | 2019-04-04 | Venkateswara Madduri | Apparatus and method for shifting quadwords and extracting packed words |
CN111314636A (en) * | 2020-01-20 | 2020-06-19 | 思特威(上海)电子科技有限公司 | CMOS image sensor with improved column data shift reading |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3274556A (en) * | 1962-07-10 | 1966-09-20 | Ibm | Large scale shifter |
US3961750A (en) * | 1974-04-05 | 1976-06-08 | Signetics Corporation | Expandable parallel binary shifter/rotator |
US4023023A (en) * | 1973-12-04 | 1977-05-10 | Compagnie Internationale Pour L'informatique | Field selection data operating device |
US4122534A (en) * | 1977-06-17 | 1978-10-24 | Northern Telecom Limited | Parallel bidirectional shifter |
US4149263A (en) * | 1977-06-20 | 1979-04-10 | Motorola, Inc. | Programmable multi-bit shifter |
US4295202A (en) * | 1979-11-09 | 1981-10-13 | Honeywell Information Systems Inc. | Hexadecimal digit shifter output control by a programmable read only memory |
US4396994A (en) * | 1980-12-31 | 1983-08-02 | Bell Telephone Laboratories, Incorporated | Data shifting and rotating apparatus |
US4437166A (en) * | 1980-12-23 | 1984-03-13 | Sperry Corporation | High speed byte shifter for a bi-directional data bus |
US4472788A (en) * | 1980-09-09 | 1984-09-18 | Tokyo Shibaura Denki Kabushiki Kaisha | Shift circuit having a plurality of cascade-connected data selectors |
US4509144A (en) * | 1980-02-13 | 1985-04-02 | Intel Corporation | Programmable bidirectional shifter |
US4583197A (en) * | 1983-06-30 | 1986-04-15 | International Business Machines Corporation | Multi-stage pass transistor shifter/rotator |
US4636976A (en) * | 1984-09-28 | 1987-01-13 | Data General Corporation | Bit shifting apparatus |
US4653019A (en) * | 1984-04-19 | 1987-03-24 | Concurrent Computer Corporation | High speed barrel shifter |
US4665538A (en) * | 1984-07-24 | 1987-05-12 | Nec Corporation | Bidirectional barrel shift circuit |
US4758972A (en) * | 1986-06-02 | 1988-07-19 | Raytheon Company | Precision rounding in a floating point arithmetic unit |
US4827441A (en) * | 1986-03-27 | 1989-05-02 | Motorola, Inc. | Barrel shifter |
US4831571A (en) * | 1986-08-11 | 1989-05-16 | Kabushiki Kaisha Toshiba | Barrel shifter for rotating data with or without carry |
-
1989
- 1989-09-29 US US07/415,037 patent/US5020013A/en not_active Expired - Lifetime
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3274556A (en) * | 1962-07-10 | 1966-09-20 | Ibm | Large scale shifter |
US4023023A (en) * | 1973-12-04 | 1977-05-10 | Compagnie Internationale Pour L'informatique | Field selection data operating device |
US3961750A (en) * | 1974-04-05 | 1976-06-08 | Signetics Corporation | Expandable parallel binary shifter/rotator |
US4122534A (en) * | 1977-06-17 | 1978-10-24 | Northern Telecom Limited | Parallel bidirectional shifter |
US4149263A (en) * | 1977-06-20 | 1979-04-10 | Motorola, Inc. | Programmable multi-bit shifter |
US4295202A (en) * | 1979-11-09 | 1981-10-13 | Honeywell Information Systems Inc. | Hexadecimal digit shifter output control by a programmable read only memory |
US4509144A (en) * | 1980-02-13 | 1985-04-02 | Intel Corporation | Programmable bidirectional shifter |
US4472788A (en) * | 1980-09-09 | 1984-09-18 | Tokyo Shibaura Denki Kabushiki Kaisha | Shift circuit having a plurality of cascade-connected data selectors |
US4437166A (en) * | 1980-12-23 | 1984-03-13 | Sperry Corporation | High speed byte shifter for a bi-directional data bus |
US4396994A (en) * | 1980-12-31 | 1983-08-02 | Bell Telephone Laboratories, Incorporated | Data shifting and rotating apparatus |
US4583197A (en) * | 1983-06-30 | 1986-04-15 | International Business Machines Corporation | Multi-stage pass transistor shifter/rotator |
US4653019A (en) * | 1984-04-19 | 1987-03-24 | Concurrent Computer Corporation | High speed barrel shifter |
US4665538A (en) * | 1984-07-24 | 1987-05-12 | Nec Corporation | Bidirectional barrel shift circuit |
US4636976A (en) * | 1984-09-28 | 1987-01-13 | Data General Corporation | Bit shifting apparatus |
US4827441A (en) * | 1986-03-27 | 1989-05-02 | Motorola, Inc. | Barrel shifter |
US4758972A (en) * | 1986-06-02 | 1988-07-19 | Raytheon Company | Precision rounding in a floating point arithmetic unit |
US4831571A (en) * | 1986-08-11 | 1989-05-16 | Kabushiki Kaisha Toshiba | Barrel shifter for rotating data with or without carry |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5099445A (en) * | 1989-12-26 | 1992-03-24 | Motorola, Inc. | Variable length shifter for performing multiple shift and select functions |
US5636351A (en) * | 1993-11-23 | 1997-06-03 | Hewlett-Packard Company | Performance of an operation on whole word operands and on operations in parallel on sub-word operands in a single processor |
US5559730A (en) * | 1994-02-18 | 1996-09-24 | Matsushita Electric Industrial Co., Ltd. | Shift operation unit and shift operation method |
US5745744A (en) * | 1995-10-12 | 1998-04-28 | International Business Machines Corporation | High speed mask generation using selection logic |
US5896305A (en) * | 1996-02-08 | 1999-04-20 | Texas Instruments Incorporated | Shifter circuit for an arithmetic logic unit in a microprocessor |
US5844825A (en) * | 1996-09-03 | 1998-12-01 | Wang; Song-Tine | Bidirectional shifter circuit |
US5793654A (en) * | 1996-09-30 | 1998-08-11 | Intel Corporation | Saturating alignment shifter |
US6720797B2 (en) * | 2000-06-15 | 2004-04-13 | Fujitsu Limited | Pass transistor circuit with exclusive controls |
US20020057110A1 (en) * | 2000-06-15 | 2002-05-16 | Fujitsu Limited | Path transistor circuit and method for designing the same, a device and method for optimizing logic circuits, and a computer product |
US20030131029A1 (en) * | 2002-01-08 | 2003-07-10 | Bandy James Henry | Barrel shifter |
US6877019B2 (en) | 2002-01-08 | 2005-04-05 | 3Dsp Corporation | Barrel shifter |
US20040015526A1 (en) * | 2002-07-17 | 2004-01-22 | Ziegler James Craig | Apparatus and method for data shifting |
US7035887B2 (en) * | 2002-07-17 | 2006-04-25 | Ltx Corporation | Apparatus and method for data shifting |
US20050144214A1 (en) * | 2003-12-24 | 2005-06-30 | International Business Machines Corporation | Shift-and-negate unit within a fused multiply-adder circuit |
US7337202B2 (en) * | 2003-12-24 | 2008-02-26 | International Business Machines Corporation | Shift-and-negate unit within a fused multiply-adder circuit |
US7774393B1 (en) * | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US20190102184A1 (en) * | 2017-09-29 | 2019-04-04 | Venkateswara Madduri | Apparatus and method for shifting quadwords and extracting packed words |
US10481910B2 (en) * | 2017-09-29 | 2019-11-19 | Intel Corporation | Apparatus and method for shifting quadwords and extracting packed words |
CN111314636A (en) * | 2020-01-20 | 2020-06-19 | 思特威(上海)电子科技有限公司 | CMOS image sensor with improved column data shift reading |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5020013A (en) | Bidirectional variable bit shifter | |
JP2674754B2 (en) | Barrel shifter | |
US4807172A (en) | Variable shift-count bidirectional shift control circuit | |
US4935719A (en) | Comparator circuitry | |
US4472788A (en) | Shift circuit having a plurality of cascade-connected data selectors | |
EP0067848B1 (en) | Data shifting and rotating apparatus | |
US5696711A (en) | Apparatus and method for performing variable precision floating point rounding operations | |
US4974241A (en) | Counter employing exclusive NOR gate and latches in combination | |
US5155698A (en) | Barrel shifter circuit having rotation function | |
US4383304A (en) | Programmable bit shift circuit | |
JPS6014321A (en) | Multi-stage shift apparatus | |
JPH05134848A (en) | Data shift circuit for central processing unit | |
US5721809A (en) | Maximum value selector | |
EP0407177B1 (en) | Bit sequence reversing device | |
US6317763B1 (en) | Circuits, barrel shifters, and methods of manipulating a bit pattern | |
US4280190A (en) | Incrementer/decrementer circuit | |
EP0543517B1 (en) | A circuit detecting the position of an extreme "1" bit in a binary number | |
US5129066A (en) | Bit mask generator circuit using multiple logic units for generating a bit mask sequence | |
KR0177985B1 (en) | Vector data adjusting device of processor | |
US4417315A (en) | Method and apparatus for incrementing a digital word | |
EP0439004A2 (en) | Barrel shifter | |
EP0602337A1 (en) | High-speed barrel shifter | |
EP0420268B1 (en) | Function selector circuit | |
US4349888A (en) | CMOS Static ALU | |
US4931970A (en) | Apparatus for determining if there is a loss of data during a shift operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: CYRIX CORPORATION, 1761 INTERNATIONAL PARKWAY, SUI Free format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNORS:MAHER, ROBERT D. III;ANTAKI, PATRICK;REEL/FRAME:005147/0589 Effective date: 19890929 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAT HLDR NO LONGER CLAIMS SMALL ENT STAT AS SMALL BUSINESS (ORIGINAL EVENT CODE: LSM2); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: FIRST INTERSTATE BANK OF TEXAS, N.A. AS AGENT, T Free format text: SECURITY INTEREST;ASSIGNOR:CYRIX CORPORATION;REEL/FRAME:007152/0897 Effective date: 19940923 |
|
AS | Assignment |
Owner name: IBM CREDIT CORPORATION, CONNECTICUT Free format text: SECURITY INTEREST;ASSIGNOR:CYRIX, CORPORATION;REEL/FRAME:007757/0320 Effective date: 19950619 |
|
AS | Assignment |
Owner name: NATIONAL SEMICONDUCTOR CORP, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CYRIX CORPORATION;REEL/FRAME:009089/0068 Effective date: 19980309 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 12 |