Programmable Bus Driver Launch Delay/Cycle Delay to Reduce Elastic Interface Elasticity Requirements

Information

  • Patent Application
  • 20070300099
  • Publication Number
    20070300099
  • Date Filed
    June 27, 2006
    18 years ago
  • Date Published
    December 27, 2007
    16 years ago
Abstract
A double data rate elastic interface in which programmable latch stages provide an elastic delay, preferably on the driving side of the elastic interface. However, the invention is not limited to the driver side/chip, it can be implemented in the receiver side/chip as well. However, since the receiver side of an elastic interface already has complicated logic, the invention will be usually implemented on the driving side. The programmable latch stages on the driving chip side of the interface, can often operate at the local clock frequency (the same frequency as the elastic interface bus clock frequency), which in turn is half of the double data rate at which the receiving latch stages operate, thereby decreasing the logic and storage resources in the interface receivers. The programmable latch stages can also be used in the case that the local clock frequency is twice the elastic interface bus clock frequency.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

The subject matter, which is regarded as the invention, is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:



FIG. 1 is a block diagram showing chips each respectively coupled to the same receiver chip each by a double data rate bus.



FIG. 2 is block diagram of one embodiment of a double data rate elastic interface bus driver in accordance with the teachings of this invention.



FIG. 3 is a timing diagram related to FIG. 2.



FIG. 4 is a block diagram similar to FIG. 1 showing an embodiment in which the local clock frequency is twice the elastic interface bus clock frequency.





DETAILED DESCRIPTION OF THE INVENTION

Referring now to FIG. 1 of the drawings, by way of illustration, it shows two chips, chip 1 and chip 2 coupled by their respective double data rate buses 12 and 14 to a third chip (chip 3) via its elastic interface circuit EI CKT. In this specific embodiment of the invention shown in FIG. 1, the stages on the driving chip side of the interface operate at a local clock frequency CLK (the same frequency as the elastic interface bus clock frequency), which in turn is half of the double data rate since double data rate (DDR) bus drivers of chips 1 and 2 each use both edges of the local clock CLK to drive the data into the bus. One part of the synchronous data required by chip 3 comes from chip 1 and another part comes from chip 2. These two parts need to be aligned in time, one to the other in chip 3. For purposes of illustration only, it is assumed that chip 1 has a two bus clock cycle latency in transmitting data over its bus 12 to the chip 3 and chip 2 has a four bus clock cycle latency in transmitting data to the chip 3 over its bus 14. As will be appreciated by those skilled in the art, with the assumed two-cycle latency difference between chips 1 and 2, four First In First Out (FIFO) receiver latches would typically be required in the elastic interface (EI CKT) of chip 3 for each I/O bus port in order to align the data from chips 1 and 2 with the buses operating at a double data rate. As explained in more detail in the above referenced applications, one half of the synchronous data (EVEN DATA) comes from one on chip source and the other half (ODD DATA) comes from another source. Each half is coupled to the input of a separate programmable delay element, 100 on one edge of the local clock CLK. The outputs of the programmable delay elements are coupled to the inputs of a DDR Driver 18 after no delay or a delay equal to the number of local clock cycles inserted by the programmable delay element. The DDR Driver couples first one half of the register (EVEN DATA) to the bus than the other half of the data (ODD DATA) on each edge of the local clock. As will be appreciated by those skilled in the art, the DDR Driver 18 can have many different implementations, typically implemented with latches and a 2-to-1 MUX.


Referring now to FIG. 2 in addition to FIG. 1, in accordance with the teachings of this invention, the program selectable set of latches 100, preferably on the driver side of the interface (i.e. chips 1 and 2), driven by clock CLK at the chip's local clock rate, compensates for skew between chips, so that the receiver elastic interface FIFO logic needs only to compensate for the elasticity requirements within a logical bus. In a double data rate elastic interface, each program selectable latch on the driver side operating at the local clock rate can compensate for two double data rate bit times, thus eliminating the need for two latches in the receiver elastic interface logic. The program selectable set of latches 100 is comprised of a chain of series coupled flip-flops F-F or master-slave latches M-S 110, 120, . . . 140. The number of stages determines the maximum amount of skew that can be compensated for. Data (DATA IN) is stored in the first stage 101 on one edge of the local clock CLK. As shown in FIG. 3, it is stored in this example on a rising edge. On the next rising edge, the data in stage 101 is transferred to the next stage 120 via signal bus 11. Concurrently, the data in stage 120 is transferred to the next stage via signal bus 121, and so forth. Subsequent DATA IN bits are stored in the first stage, and so on, as illustrated. The output of each stage is also coupled as an input to a multiplexer MUX 150 whose output DOUT is coupled to the driver 18. The select input to the MUX 150 which may be controlled by scan in data or by software/firmware programmable data stored in register 152, or by both alternatively, determines which stage is coupled to the output DOUT and hence the number of cycles the input is delayed. In this example, the select input (SEL) to each chip 1 MUX 150 selects the output of the second stage 120 and the select input (SEL) to each chip 2 MUX 150 selects DIN or zero delay, thus compensating for the skew introduced by the difference between the four bus-clock cycle latency of bus 14 and the two cycle latency of bus 12. The size of the mux and the number of stages of the mux as well as the value of the select bus provides for a programmable number of cycles of data delay from data_in to data_out.


Referring now to FIG. 3 is shown a timing diagram depicting the programmable data delay of the invention. The input data (DATA_IN) is aligned to the clock (CLK). Notice that the waveform of the bus 111 shows that the data lags the input data by one clock cycle. Likewise, the waveform of the bus 121 shows that the data lags the input data by two clock cycles, and so on. The select input (SEL in FIG. 2) is used to select one of the staged buses (111, 121, etc.), thus providing the waveform for the data_out (DOUT). In this example, the depicted waveform for data_out (DOUT) corresponds to a mux with select value (SEL=2).


Referring now to FIG. 4, it illustrates an embodiment of the invention in which the on chip clock frequency is twice the elastic interface bus clock frequency. Here the double data rate driver DDR 18 has been replaced by a driver DVR 18′ in which data is launched onto the bus on one edge of the local clock signal. Here it will be appreciated that a program delay setting compensates for only a half of the bus clock cycle period. Thus, setting the programmable delay to 2 compensates for only one bus clock cycle latency.


The capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof. As one example, one or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately.


Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.


The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.


While the preferred embodiment to the invention has been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.

Claims
  • 1. A method for synchronizing data transmitted from a first circuit over a first bus at each edge of a local clock with data transmitted from a second circuit over a second bus at each edge of said local clock, including the steps of: providing programmable data storage on said first circuit with each stage of said data storage storing data for one cycle of said local clock; andprogramming said programmable data storage to store data on said first circuit for an interval to compensate for bus latency on said first bus that is less than bus latency on said second bus.
  • 2. A method for synchronizing data as in claim 1 wherein said programmable data storage is comprised of series connected stages of first-in, first-out latches.
  • 3. A method for synchronizing data as in claim 1 wherein said interval is equal to the difference in bus latency between said first bus and said second bus.
  • 4. A method for synchronizing data as in claim 1 wherein said programming step includes providing a select input to a multiplexer that connects one of said series connected stages to said first bus.
  • 5. A method for synchronizing data as in claim 4 wherein said select input is determined by scan in data.
  • 6. A method for synchronizing data as in claim 4 wherein said select input is controlled by a software/firmware addressable register.
  • 7. A method for synchronizing data as in claim 2 wherein said interval is equal to the difference in bus latency between said first bus and said second bus.
  • 8. A method for synchronizing data as in claim 2 wherein said programming step includes providing a select input to a multiplexer that connects one of said series connected stages to said first bus.
  • 9. A method for synchronizing data as in claim 1 further including the steps of: providing receiver elasticity alignment at a receiver circuit; andallowing said programmable data storage to be used to reduce receiver elasticity requirement.
  • 10. A means for synchronizing data transmitted from a first circuit over a first bus at each edge of a local clock with data transmitted from a second circuit over a second bus at each edge of said local clock, including the steps of: programmable data storage means on said first circuit with each stage of said data storage storing data for one cycle of said local clock; andmeans for programming said programmable data storage to store data on said first circuit for an interval to compensate for bus latency on said first bus that is less than bus latency on said second bus.
  • 11. A means for synchronizing data as in claim 10 wherein said programmable data storage is comprised of series connected stages of first-in, first-out latches.
  • 12. A means for synchronizing data as in claim 10 wherein said interval is equal to the difference in bus latency between said first bus and said second bus.
  • 13. A means for synchronizing data as in claim 10 wherein said programming step includes providing a select input to a multiplexer that connects one of said series connected stages to said first bus.
  • 14. A means for synchronizing data as in claim 13 wherein said select input is determined by scan in data.
  • 15. A means for synchronizing data as in claim 13 wherein said select input is controlled by a software/firmware addressable register.
  • 16. A means for synchronizing data as in claim 11 wherein said interval is equal to the difference in bus latency between said first bus and said second bus.
  • 17. A means for synchronizing data as in claim 11 wherein said programming step includes providing a select input to a multiplexer that connects one of said series connected stages to said first bus.
  • 18. A means for synchronizing data as in claim 10 further comprising: elastic receiver means to align data at a receiver circuit; andprogrammable data storage means to reduce receiver elasticity requirement.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application contains subject matter that is related to the subject matter of the following co-pending applications, each of which is assigned to the same assignee as this application, International Business Machines Corporation of Armonk, N.Y. Each of the below listed applications is hereby incorporated herein by reference in its entirety: Early Directory Access of a Double Rate Elastic Interface, Attorney Docket Number POU920060020; Late Data Launch for a Double Data Rate Elastic Interface, Attorney Docket Number POU920060023; Mechanism for Windaging of a Double Rate Driver, Attorney Docket Number POU920060012, Double Rate Chaining on Elastic Interfaces, Attorney Docket Number POU920060022.