In a networked system in which high speed busses interconnect sources and destinations of data, systems for and methods of data alignment, data re-timing, and circular buffer underflow/overflow detection, are described.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A system for aligning a plurality of source synchronous streams of data comprising: a buffer corresponding to each of the streams of data; a status indicator corresponding to each of the streams of data, the status indicator indicating whether or not data for the corresponding stream has begun to be clocked into the corresponding buffer; first logic for clocking data from a stream into the corresponding buffer using a source synchronous clock for the stream, and setting the status indicator for the stream to indicate that data for the stream has begun to be clocked into the corresponding buffer; and second logic for checking the status indicators, and upon or after determining that data for all of the streams has begun to be clocked into the corresponding buffers, clocking data out of each of the buffers using a local clock common to all the buffers.
2. The system of claim 1 wherein the buffers are first-in-first-out (FIFO) buffers.
3. The system of claim 2 wherein each of the FIFO buffers has a write pointer, a read pointer is common to all the buffers, and the first logic is configured to update the write pointer for a buffer as data for a stream is clocked into the buffer using the source synchronous clock for the stream, and the second logic is configured to update the read pointer common to all the buffers as data is clocked out of the buffers using the local clock.
4. The system of claim 1 wherein the source synchronous clocks are double data rate (DDR) source synchronous clocks.
5. The system of claim 1 embodied in a receiver of data in a networked system.
6. In a networked system, a system for re-timing a source synchronous stream of data comprising: a buffer having an output stream; first logic for clocking first and second adjacent data from the source synchronous stream into the buffer using a source synchronous clock for the stream; and second logic for clocking the first and second adjacent data out of the buffer to the output stream using a local clock, wherein the source synchronous clock is a double data rate (DDR) source synchronous clock, which samples the data on both rising and falling edges.
7. The re-timing system of claim 6 wherein the buffer is a FIFO buffer.
8. The re-timing system of claim 7 wherein the FIFO buffer has a read pointer and a write pointer, and the first logic is configured to update the write pointer as data from the source synchronous stream is clocked into the buffer using the source synchronous clock for the stream, and the second logic is configured to update the read pointer as data is clocked out of the buffer using the local clock.
9. The re-timing system of claim 6 is embodied in a receiver of data in the networked system.
10. A method of aligning a plurality of source synchronous streams of data comprising the steps of: clocking data from each of the streams into a corresponding buffer using a source synchronous clock for the stream, and setting a status indicator for the stream to indicate that data for the stream has begun to be clocked into the corresponding buffer; and checking the status indicators, and upon or after determining that data for all of the streams has begun to be clocked into the corresponding buffers, clocking data out of each of the buffers using a local clock common to all the buffers.
11. The method of claim 10 wherein the source synchronous clocks are double data rate (DDR) source synchronous clocks.
12. The method of claim 10 wherein the buffers are FIFO buffers each having a write pointer, and wherein there is a read pointer is common to all the buffers, the method further comprising: updating the write pointer for a buffer as data for a stream is clocked into the buffer using the source synchronous clock for the stream; and updating the read pointer common to all the buffers as data is clocked out of the buffers using the local clock.
13. The method of claim 12 wherein the step of updating the write pointer comprises incrementing the write pointer, and the step of updating the read pointer comprises incrementing the read pointer.
14. The method of claim 12 wherein the step of updating the write pointer comprises decrementing the write pointer, and the step of updating the read pointer comprises decrementing the read pointer.
15. In a networked system, a method of re-timing a source synchronous stream of data comprising the steps of: clocking first and second adjacent data from the source synchronous stream into a buffer using a source synchronous clock for the source synchronous stream, the buffer having an output stream; and clocking the first and second adjacent data out of the buffer to the output stream using a local clock, wherein the source synchronous clock is a DDR source synchronous clock, which samples the data on both rising and falling edges.
16. The method of claim 15 wherein the buffer is a FIFO buffer.
17. The method of claim 16 wherein the FIFO buffer has a read pointer and a write pointer, and the method further comprises: updating the write pointer as data from the source synchronous stream is clocked into the buffer using the source synchronous clock for the source synchronous stream; and updating the read pointer as data is clocked out of the buffer using the local clock.
18. The method of claim 17 wherein the step of updating the write pointer comprises incrementing the write pointer, and the step of updating the read pointer comprises incrementing the read pointer.
19. The method of claim 17 wherein the step of updating the write pointer comprises decrementing the write pointer, and the step of updating the read pointer comprises decrementing the read pointer.
20. A system for managing source synchronous data transfers between a sender and receiver of data interconnected by a bus in a networked system comprising: means for buffering a stream of source synchronous data, the means for buffering capable of holding n entries, wherein n is an integer of two or more, and each entry has a tag portion; means for clocking data from the stream into the buffer using a source synchronous clock for the stream; means for clocking data out of the means for buffering using a local clock; means for circularly counting through m values, wherein m is an integer less than n and is not evenly divisible into n; and means for performing a read operation by (1) reading an entry from the means for buffering, (2) comparing the tag portion of the entry with the contents of the means for circularly counting, (3) either or both (a) signaling an underflow condition if the tag portion of the entry is less than the contents of the means for circularly counting, and (b) signaling an overflow condition if the tag portion of the entry exceeds the contents of the means for circularly counting, and (4) otherwise updating the contents of the means for circularly counting to reflect the read operation.
21. The system of claim 20 wherein the means for buffering comprises a means for buffering each of a plurality of streams of source synchronous data, and the system further comprises: means for indicating whether or not data for each of the streams has begun to be clocked into the means for buffering; means for clocking data from a stream into the means for buffering using the source synchronous clock for the stream, and setting the means for indicating to indicate that data for the stream has begun to be clocked into the means for buffering; and means for checking the means for indicating, and upon or after determining that data for all of the streams has begun to be clocked into the means for buffering, clocking data for all the streams out of means for buffering using a local clock common to all the streams.
22. A method of managing source synchronous data transfers between a sender and receiver of data interconnected by a bus in a networked system, the method comprising: a step for clocking data from a source synchronous stream into a means for buffering using a source synchronous clock for the stream, the means for buffering capable of holding n entries, wherein n is an integer of two or more, and each entry having a tag portion; a step for clocking data out of the means for buffering using a local clock; a step for reading an entry from the means for buffering; a step for comparing the tag portion of the entry with the contents of a means for circularly counting through m values, where m is an integer less than n and not evenly divisible into n; a step for either or both (a) signaling an underflow condition is the tag portion of the entry is less than the contents of the means for circularly counting, and (b) signaling an overflow condition if the tag portion of the entry is greater than the contents of the means for circularly counting; and a step for updating the contents of the means for circularly counting if the contents of the means for circularly counting equals the tag portion of the entry.
23. The method of claim 22 further comprising: a step for clocking data from each of a plurality of source synchronous streams into the means for buffering using, for a particular stream, the source synchronous clock for that stream, and also setting a means for indicating to indicate that data for the stream has begun to be clocked into the means for buffering; and a step for checking the means for indicating, and upon or after determining that data for all of the streams has begun to be clocked into the means for buffering, clocking data for each of the streams out of the means for buffering using a local clock common to all the streams.
24. The system of any of claims 1 , 3 , 20 or 21 , wherein the local clock is a master clock for the system.
25. The method of any of claims 10 , 12 , 22 or 23 , wherein the local clock is a master clock.
26. The re-timing system of claim 6 wherein the local clock is a master clock for the networked system.
27. The method of claim 15 wherein the local clock is a master clock for the networked system.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
April 1, 2003
April 29, 2008
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.