A system transfers a data stream including data packets separated by non-packet words from a first clock domain to a second clock domain. It includes an elasticity buffer into which the data stream is written in a cyclic sequence under the control of the clock frequency in the first clock domain and from which the data stream is read out in a cyclic sequence under the control of the clock frequency in the second domain. The two sequences are monitored to provide an anticipatory signal indicating that the reading sequence approaches proximity to the writing sequence. A non-packet word is inserted into the data stream in the first domain. In the second clock domain the existence of the inserted non-packet word is detected and the buffer is caused to advance the reading cycle thereby to discard the said inserted non-packet word.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A system for transferring a data stream comprising data packets separated by non-packet words from a first clock domain to a second clock domain, the clock domains having similar but not necessarily identical clock frequencies, comprising: an elasticity buffer consisting of at least three and not more than five storage locations: means for writing the data stream into the elasticity buffer in a cyclic sequence of said storage locations by means of a write pointer under the control of a write clock in the first clock domain, means for reading the data stream out of said storage locations of the elasticity buffer in said cyclic sequence by means of a read pointer under the control of a read clock in the second domain; a slip detector for monitoring the write and read pointers to determine the relative cyclic phase of said two pointers, said slip detector: (i) providing an anticipatory signal by monitoring proximity of a reading sequence to a writing sequence indicating that the read clock is too late when the write pointer denotes a first one of said storage locations and the read pointer denotes the next one of said storage locations in said cyclic sequence; (ii) by monitoring proximity of the reading sequence to a beginning of the buffer indicating that said read clock is too early when the write pointer denotes said first one of said storage locations and the read pointer denotes said first one of said storage locations in said cyclic sequence; means in the first clock domain for inserting in response to said anticipatory signal indicating that the read clock is too late, non-packet word into said data stream; and means in the second clock domain for detecting the existence of the inserted non-packet word and for causing the buffer to advance the read cycle thereby to discard the inserted non-packet word.
2. A system as in claim 1 wherein the inserted non-packet word is an idle byte.
3. A system for transferring a data stream of data packets separated by non-packet words, said system including: a media access control device; a physical layer device; an elasticity buffer consisting of at least three and not more than five storage locations; means in said physical layer device for writing the data stream into the elasticity buffer in a cyclic sequence of said storage locations by means of a write pointer under the control of a write clock, means in said media access control device for reading the data stream out of said storage locations of the elasticity buffer in said cyclic sequence by means of a read pointer under the control of a read clock, said read clock having a frequency nominally the same as the frequency of said write clock; a slip detector for monitoring the write and read pointers to determine the relative cyclic phase of said two pointers, said slip detector: (i) providing an anticipatory signal by monitoring proximity of the reading sequence to a beginning of the buffer indicating that read clock is too late when the write pointer denotes a first one of said storage locations and the read pointer denotes the next one of said storage locations in said cyclic sequence; (ii) by monitoring proximity of the reading sequence to a beginning of the buffer indicating that said read clock is too early when the write pointer denotes said first one of said storage locations and the read pointer denotes said first one of said storage locations in said cyclic sequence; means in the first clock domain for inserting in response to said anticipatory signal indicating that the read clock is too late, a non-packet word into said data stream; and means in the second clock domain for detecting the existence of the inserted non-packet word and for causing the buffer to advance the read cycle thereby to discard the inserted non-packet word.
4. A buffer system for transferring a data stream essentially consisting of a succession of data words from a first clock domain to a second clock domain, said system comprising: an elasticity buffer having a maximum of five storage locations whereby the buffer can store a maximum of five data words; means for writing the data stream into the elasticity buffer in a cyclic sequence of said storage locations by means of a write pointer under the control of a write clock in the first clock domain, means for reading the data stream out of said storage locations of the elasticity buffer in said cyclic sequence by means of a read pointer under the control of a read clock in the second domain; a slip detector for monitoring the write and read pointers to determine the relative cyclic phase of said two pointers, said slip detector; (i) providing an anticipatory signal by monitoring proximity of a reading sequence to a writing sequence indicating that the read clock is too late when the write pointer denotes a first one of said storage locations and the read pointer denotes the next one of said storage locations in said cyclic sequence; (ii) by monitoring proximity of the reading sequence to a beginning of the buffer indicating that said read clock is too early when the write pointer denotes said first one of said storage locations and the read pointer denotes said first one of said storage locations in said cyclic sequence.
5. A system as in claim 4 wherein each of said storage locations stores one data byte.
6. A system as in claim 1 wherein said elasticity buffer consists of five of said storage locations and said slip detector indicates; acceptable jitter when said write pointer denotes said first one of said storage locations and said read pointer denotes the next storage location but one after said first one of said storage locations in said cyclic sequence; synchronized operation of said elasticity buffer when said write pointer denotes said first one of said storage locations and said read pointer denotes the next storage location but two after the first one of said storage locations in said cyclic sequence; and acceptable jitter when said write pointer denotes said first one of said storage locations and said read pointer denotes the next storage location but three after said first one of said storage locations in said cyclic sequence.
7. A buffer system as in claim 4 wherein said elasticity buffer consists of five of said storage locations and said slip detector indicates: allowable jitter when said write pointer denotes said first one of said storage locations and said read pointer denotes the next storage location but one after said first one of said storage locations in said cyclic sequence; synchronized operation of said elasticity buffer when said write pointer denotes said first one of said storage locations and said read pointer denotes the next storage location but two after said first one of said storage locations in said cyclic sequence; and allowable jitter when said write pointer denotes said first ne of said storage locations and said read pointer denotes the next storage location but three after said first one of said storage locations in said cyclic sequence.
8. A method for transferring a data stream comprising data packets separated by non-packet words from a first clock domain to a second clock domain, the clock domains having similar but not necessarily identical clock frequencies, said method comprising: maintaining an elasticity buffer consisting of at least three and not more than five storage locations; writing the data stream into the elasticity buffer in a cyclic sequence of said storage locations by means of a write pointer under the control of a write clock in the first clock domain, reading the data stream out of said storage locations of the elasticity buffer in said cyclic sequence by means of a read pointer under the control of a read clock in the second domain; monitoring the write and read pointers to determine the relative cyclic phase of said two pointers thereby: (i) providing an anticipatory signal by monitoring proximity of a reading sequence to a writing sequence indicating that the read clock is too late when the write pointer denotes a first one of said storage locations and the read pointer denotes the next one of said storage locations in said cyclic sequence; (ii) by monitoring proximity of the reading sequence to a beginning of the buffer indicating that said read clock is too early when the write pointer denotes said first one of said storage locations and the read pointer denotes said first one of said storage locations in said cyclic sequence; inserting in the first clock domain in response to said anticipatory signal indicating that the read clock is too late, a non-packet word into said data stream; and detecting, in the second clock domain, the existence of the inserted non-packet word and causing the buffer to advance the read cycle thereby to discard the inserted non-packet word.
9. A method as in claim 8 wherein the inserted non-packet word is an idle byte.
10. A method as in claim 8 wherein said elasticity buffer consists of five of said storage locations and said method indicates; acceptable jitter when said write pointer denotes said first one of said storage locations and said read pointer denotes the next storage location but one after said first one of said storage locations in said cyclic sequence; synchronized operation of said elasticity buffer when said write pointer denotes said first one of said storage locations and said read pointer denotes the next storage location but two after said first one of said storage locations in said cyclic sequence; and acceptable jitter when said write pointer denotes said first one of said storage locations and said read pointer denotes the next storage location but three after said first one of said storage locations in said cyclic sequence.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
September 14, 2000
April 19, 2005
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.