Registers are high speed data storage elements located within the central processing unit (CPU) of modern computers. A register may hold various types of data such as bit sequences, individual characters, and computer instructions, as well as addresses of stored data and instructions. Data processed by the CPU is stored in a register before it is processed. For example, prior to multiplying two numbers they are both stored in registers with the final result also being stored in a register. The register typically comprises multiple individual register circuits with the number being chosen to accommodate all or a fraction of the instruction length of the computer, as well as the intended use of the register and the physical constraints of the chip on which it is to be fabricated.
The primary objective in register design is to make it fast for the CPU to access and to manipulate. Registers are fabricated on the chip itself so there is no need for a memory bus in accessing them which results in faster performance. Also, the number of registers in any given application is limited to only a few as compared with the computer's main memory. Thus, a register can be directly addressed using only a few bits. In contrast, there are often millions of words of main memory (RAM) which requires many more bits with which to specify a memory location.
The speed at which a computer is able to accomplish its assigned tasks is directly related to the speed at which its registers are able to function. The speed at which a register is able to operate is directly related to the capacitance of the clocking nodes of the register. The fewer gates that have to be clocked, the lower the capacitance that the clock has to drive with a resultant increase in the clock's potential speed. Required clock power is similarly related to the number of clocking nodes. The fewer gates that have to be clocked, the lower the required clock power.
The accompanying drawings provide visual representations which will be used to more fully describe various representative embodiments and can be used by those skilled in the art to better understand the representative embodiments disclosed and their inherent advantages. In these drawings, like reference numerals identify corresponding elements.
As shown in the drawings for purposes of illustration, novel techniques are disclosed herein for a push-pull pulse register circuit. The push-pull pulse register can be implemented in a flip flop design having only one latch. Data is written into the latch during the short time the clock is in its high state. Since the register has only one latch, the design is smaller and has improved performance over the standard back to back latch type flip-flops.
In the following detailed description and in the several figures of the drawings, like elements are identified with like reference numerals.
Note that in
The third-inverter input 231 is coupled to the first-gate input 281; the third-inverter output 232 is coupled to the second-gate input 291; the second-inverter input 221 is coupled to the second-gate output 292 and to the first-inverter output 212; the second-inverter output 222 is coupled to the first-gate output 282 and to the first-inverter input 211; and the first-gate control input 283 is coupled to the second-gate control input 293. In addition, the first-gate and the second-gate control inputs 283,293 are configured to receive a clock pulse 225. Latch circuit 235 comprises the combined first and second logic inverters 210,220 coupled as just described.
Also shown in
In the representative embodiment to
The push-pull pulse register circuit 200 is configured to receive register input data 215 at the register input 201. In other words, the third logic inverter 230 is configured to receive register input data 215 at the third-inverter input 231. The register input data 215 may also be referred to herein as logic input data 215. If a test enable signal TE is received at the test enable input 279, the fifth logic inverter 250 is turned on and the sixth logic inverter 260 is turned off. In which case, test data 255 is received at the register input 201 as the register input data 215. Otherwise, a test enable signal TE is not received at the test enable input 279, the fifth logic inverter 250 is turned off and the sixth logic inverter 260 is turned on. In which case, operational data 265 is received at the register input 201 as the register input data 215. In response to the value of the register input data 215 during the clock pulse 225, a value is set for register output data 216 at the register output 203, and the complement or inverted value of the value for the register output data 216 is set for register inverted data 217 at the seventh-inverter output 272.
If a logic “1” is received by the third-inverter input 231 at the register input 201 while the clock pulse 225 is received by the first-gate and the second-gate control inputs 283,293, the second-inverter input 221 and the coupled first-inverter output 212 are pulled down to a logic “0”, and a logic “1” is pushed onto the first-inverter input 211 and the coupled second-inverter output 222. In such case, a logic “1” is present at the seventh-inverter output 272 of the seventh logic inverter 270. Otherwise, if a logic “0” is received by the third-inverter input 231 at the register input 201 while the clock pulse 225 is received by the first-gate and the second-gate control inputs 283,293, the first-inverter input 211 and the coupled second-inverter output 222 are pulled down to a logic “0”, and a logic “1” is pushed onto the second-inverter input 221 and the coupled first-inverter output 212. In such case, a logic “0” is present at the seventh-inverter output 272 of the seventh logic inverter 270.
The register output 203 can be reset to a preselected logical state by the reset circuit 295. In the representative embodiment of
The first logic input signal 330 and the first logic output signal 340 shown in
The second logic input signal 350 and the second logic output signal 360 shown in
In representative embodiments, the push-pull pulse register circuit 200 is a flip flop design having only one latch, the latch circuit 235 of
In addition to reducing the number of transistors coupled to the register clock and reducing the number of nodes that toggle when the register clock toggles, the key to reducing clock power in a register is to reduce the size of the transistors coupled to clock. The push-pull pulse register circuit 200 achieves all of these items. The clock output 287 is coupled to only two transistors, the first and the second logic gates 280,290. These transistors can be n-type metal-oxide semiconductor field-effect transistors (MOSFETs) which are small in size. Also, when the new data is the same as the old data, no nodes will toggle when clock toggles.
A first latch node 236 formed by the coupling of the first-inverter input 211 and the second-inverter output 222 will hold the value of the register input data 215. Whereas, a second latch node 237 formed by the coupling of the second-inverter input 221 and the first-inverter output 212 will hold the value of the complement of the register input data 215. The primary driving force in writing data into the latch circuit 235 is either from pulling down the first latch node 236 through the first logic gate 280 or from pulling down the second latch node 237 through the second logic gate 290. While the primary driving force in writing data into the latch circuit 235 is from pulling one of the latch nodes 236,237, pushing a logic “1” onto the other latch node 236,237 aids in flipping the latch circuit 235 faster. Thus, the affect is a strong pull and a moderate push. By having two forces working, one on each side of the latch, data will be written faster than it would be otherwise.
In a CMOS application, the first and the second logic gates 280,290 could be implemented as combinations of p-type and n-type MOS transistors at the cost in complexity of the register clock circuit 285. However, due to the push-pull affect in writing data into the latch circuit 235 and since a n-type MOS transistor is stronger than a p-type MOS transistor, it may be sufficient to implement the first and the second logic gates 280,290 as n-type MOS transistors.
The first and the second logic inverters 210,220 are not tri-stated as is found in a typical flip-flop register design. In such designs, one of the latch inverters usually is tri-stated in order to enable easier writes into the latch and to reduce short circuit current. However, for the push-pull pulse register circuit 200, the latch circuit 235 is symmetrical in that either side of the latch circuit 235 can be pulled down. Such functionality cannot be maintained if one of the first and second logic inverters 210,220 is tri-stated. Further, implementing the first and second logic inverters 210,220 as tri-stated devices requires an inverted clock signal with associated additional transistors. The additional transistors increase clock loading which necessitates increases in clock power and area. Also, simulations have shown that the short circuit power is insignificant compared to the total register power and is less than driving extra tri-state transistors.
The first and second logic inverters 210,220 should be sized so that they are weak enough to be overwritten but not so weak as to cause the latch nodes 236,237 to be pulled high too slowly. They should be sized at least strong enough to counteract any alpha/neutron particles that might cause soft errors. In CMOS implementations, the n-transistor in each of the first and second logic inverters 210,220 can be of small size since they do not contribute in pulling down the latch nodes 236,237 but does need to be large enough to maintain the stored data. The p-transistor in each of the first and second logic inverters 210,220 should be sized large enough to pull the latch nodes 236,237 high fast enough during a write for the new data to latch and to meet access time TAC requirements.
The third and the fourth logic inverters 230,240 are used to drive data through the first and second logic gates 280,290. The third and the fourth logic inverters 230,240 need to be strong enough to pull LOW or HIGH data through the first and second logic gates 280,290. The size of the transistor gates in the first and second logic gates 280,290 also controls the speed of the write and the minimum clock pulse width needed. The sizes of the third and the fourth logic inverters 230,240 determines the set-up time Tsu and the hold time THD for the push-pull pulse register circuit 200. The external multiplexer 275 can be implemented as two tri-state inverters (fifth and sixth logic inverters 250,260). In which case, the tri-state inverters require both true and false test enable signals TE.
The reset function for the push-pull pulse register circuit 200 can be implemented in various ways in addition to that shown in
In another representative embodiment, the register output 203 could be moved to the first latch node 236.
The first-inverter input 211 is coupled to the second-inverter output 222, to the first-gate output 282 via first-logic-switch first output 454 and first internal-multiplexer output 411, and to the third-gate output 482 via second-logic-switch first output 464 and first internal-multiplexer output 411; the first-inverter output 212 is coupled to the second-inverter input 221, to the second-gate output 292 via first-logic-switch second output 455 and second internal-multiplexer output 412, to the fourth-gate output 492 via second-logic-switch second output 465 and second internal-multiplexer output 412, to the register output 203, and to the register reset input 204; the first-gate control input 283 is coupled to the second-gate control input 293 and to the first register-clock input 402a via first-logic-switch control input 453; the third-gate control input 483 is coupled to the fourth-gate control input 493 and to the second register-clock input 402b via second-logic-switch control input 463; and the first-gate input 281 is coupled to the first register-true input 401a-T via first-logic-switch first input 451; the second-gate input 291 is coupled to the first register-false input 401a-F via first-logic-switch second input 452; the third-gate input 481 is coupled to the second register-true input 401b-T via second-logic-switch first input 461; and the fourth-gate input 491 is coupled to the second register-false input 401b-F via second-logic-switch second input 462.
In addition, the first-gate and the second-gate control inputs 283,293 are configured to receive a first clock pulse 425a, and the third-gate and the fourth-gate control inputs 483,493 are configured to receive a second clock pulse 425b. Latch circuit 235 comprises the combined first and second logic inverters 210,220 coupled as just described.
The push-pull pulse register circuit 200 is configured to receive first register input data 415a in a push-pull configuration between first register-true input 401a-T and first register-false input 401a-F. The first register input data 415a may also be referred to herein as first logic value 415a at the first register-true input 401a-T and complement of the first logic value 415a at the first register-false input 401a-F. The push-pull pulse register circuit 200 is further configured to receive second register input data 415b in a push-pull configuration between second register-true input 401b-T and second register-false input 401b-F. The second register input data 415b may also be referred to herein as second logic value 415b at the second register-true input 401b-T and complement of the second logic value 415b at the second register-false input 401b-F.
In the representative embodiment of
In other representative embodiments, the internal multiplexer 410 could comprise additional logic switches in addition to the first and the second logic switches 450,460, thereby enabling register input data in addition to the first and the second register input data 415a,415b to be multiplexed into the latch circuit 235. In still another representative embodiment, the second logic switch 460 is removed from the internal multiplexer 410 effectively removing the multiplexer function and replacing the internal multiplexer 410 with the first logic switch 450.
In operation of the representative embodiment of
In other representative embodiments, the internal multiplexer 410 could comprise additional logic switches in addition to the first and the second logic switches 450,460, thereby enabling register input data in addition to the first and the second register input data 415a,415b to be multiplexed into the latch circuit 235. In such representative embodiments, first logic switch 450 is generally referred to as logic switch 450, first-logic-switch first input 451 as logic-switch first input 451, first-logic-switch second input 452 as logic-switch second input 452, first-logic-switch control input 453 as logic-switch control input 453, first-logic-switch first output 454 as logic-switch first output 454, and first-logic-switch second output 455 as logic-switch second output 455. In still another representative embodiment, the second logic switch 460 is removed from the internal multiplexer 410 effectively removing the multiplexer function and replacing the internal multiplexer 410 with the first logic switch 450.
In block 510, the complement of the first logic value 415a is applied to the first-logic-switch second input 452. Block 510 then transfers control to block 515.
In block 515, if a first clock pulse 425a is applied to the first-logic-switch control input 453, block 515 transfers control to block 520. Otherwise, block 515 transfers control back to block 505.
In block 520, the first logic value 415a is transferred to the first-logic-switch first output 454 and simultaneously the complement of the first logic value 415a is transferred to the first-logic-switch second output 455. Block 520 then transfers control to block 525.
In block 525, the first clock pulse 415a is removed from the first-logic-switch control input 453. Block 525 then transfers control back to block 505.
In another alternative embodiment, the push-pull pulse register circuit 200 further comprises a third logic inverter 230 having a third-inverter input 231 coupled to the first-logic-switch first input 451 and having a third-inverter output 232 coupled to the first-logic-switch second input 452, and the method step applying the complement of the first logic value 415a to the first-logic-switch second input 452 is effected by the method step applying the first logic value 415a at the first-logic-switch first input 451.
In block 610, the complement of the first logic value 415a is applied to the first-logic-switch second input 452. Block 610 then transfers control to block 615.
In block 615, if a first clock pulse 425a is applied to the first-logic-switch control input 453, block 615 transfers control to block 620. Otherwise, block 615 transfers control back to block 630.
In block 620, the first logic value 415a is transferred to the first-logic-switch first output 454 and simultaneously the complement of the first logic value 415a is transferred to the first-logic-switch second output 455. Block 620 then transfers control to block 625.
In block 625, the first clock pulse 425a is removed from the first-logic-switch control input 453. Block 625 then transfers control back to block 630.
In block 630, a second logic value 415b is applied to the push-pull pulse register circuit 200 at a second-logic-switch first input 461. The push-pull pulse register circuit 200 further comprises a second logic switch 460 having the second-logic-switch first input 461, a second-logic-switch second input 462, a second-logic-switch control input 463, a second-logic-switch first output 464 coupled to the first-inverter input 211, and a second-logic-switch second output 465 coupled to the second-inverter input 221. Block 630 then transfers control to block 635.
In block 635, the complement of the second logic value 415b is applied to the second-logic-switch second input 462. Block 635 then transfers control to block 640.
In block 640, if a second clock pulse 425b is applied to the second-logic-switch control input 463, block 640 transfers control to block 645. Otherwise, block 640 transfers control back to block 605.
In block 645, the second logic value 415b is transferred to the second-logic-switch first output 464 and simultaneously the complement of the second logic value 415b is transferred to the second-logic-switch second output 465. Block 645 then transfers control to block 650.
In block 650, the second clock pulse 425b is removed from the second-logic-switch control input 463. Block 650 then transfers control back to block 605.
Other alternative embodiments could comprise additional method steps for additional logic switches 450,460 in a manner similar to that described with
In representative embodiments, a push-pull pulse register circuit 200 is disclosed herein having the potential for faster switching times and lower clock driving power than the more standard back to back latch type flip-flops. The push-pull pulse register circuit 200 can be implemented in a flip flop design having only one latch. Data is written into the latch during the short time clock is in its high state. Since the register has only one latch, the design can be smaller with the resultant improved performance.
The representative embodiments, which have been described in detail herein, have been presented by way of example and not by way of limitation. It will be understood by those skilled in the art that various changes may be made in the form and details of the described embodiments resulting in equivalent embodiments that remain within the scope of the appended claims.