Content deskewing for multichannel synchronization
The various embodiments of the invention provide an apparatus, system and method for data content deskewing among a plurality of data channels for data synchronization. The various embodiments determine whether a data alignment signal has been written, for each data channel of the plurality of data channels, such as a comma character. When a data alignment signal has been written in a data channel of the plurality of data channels, the embodiments determine a corresponding channel location of the data alignment signal for each data channel having the data alignment signal. When each data channel of the plurality of data channels has the data alignment signal, and when the data alignment signal is to be read on a next read cycle in at least one data channel, the various embodiments move a corresponding read pointer for each data channel of the plurality of data channels to the corresponding channel location of the data alignment signal. The data alignment signal is then read in all channels during the next read cycle, followed by subsequent reading of deskewed or otherwise synchronized data, such as for conversion of parallel data into serial data for subsequent data transmission.
Latest Agere Systems, Inc. Patents:
- Systems and methods for low latency media defect detection
- Methods and apparatus for determining threshold of one or more DFE transition latches based on incoming data eye
- Method of identifying and/or programming an integrated circuit
- Semiconductor device and a method of manufacture therefor
- Systems and methods for low latency media defect detection
The present invention relates in general to data alignment for synchronization among multiple data communication channels and, more particularly, to content deskewing First-In First-Out memories for data synchronization among multiple data communication channels such as multiple channel Serializer/Deserializer communication devices.
BACKGROUND OF THE INVENTIONSerializer/deserializer (“SERDES”) devices are frequently used in high-speed communication networks in which an interface must be provided between parallel bus-connected devices and high-speed serial communication networks, such as those implemented through optical fiber interconnections. For these applications, a system (such as a computer processor and related devices) writes in parallel to a plurality of First-In First-Out memories or registers (“FIFOs”), with each write cycle based on a system clock, and with each FIFO corresponding to one of the parallel data channels or data paths. In turn, a SERDES device will read from each such parallel FIFO, with each read cycle based on a SERDES clock, and convert the parallel data into serial data, such as for serial data transmission.
Because such write and read operations are based on different clocks which are not synphase with each other, data alignment issues arise, in which data content of a selected channel may be misaligned or skewed with respect to data content of another selected channel. As a consequence, a data alignment or data synchronization signal, such as a “comma” signal in various data transmission and data bus standards, is utilized to provide alignment among the various data channels.
In current systems, upon the occurrence of such a comma, write pointers are advanced to the first comma location of one of the channels, so that all FIFOs or channels are then written to simultaneously in the next write cycle. Such current alignment systems, however, provide for potentially overwriting data and the transmission of potentially corrupted data.
As a consequence, a need remains for a multichannel data alignment or data synchronization apparatus, system and method which provides for accurate data alignment, while minimizing the potential for data overwriting and transmission of corrupted data.
SUMMARY OF THE INVENTIONThe various method, system and apparatus embodiments of the present invention provides for data alignment and synchronization, without allowing data to be corrupted or overwritten, by alignment and synchronization of each read pointer for each data channel of a multichannel system. When all channels which are to be synchronized have received a data alignment or synchronization signal (such as a comma character used in fiber optic communication), and when the next FIFO block to be read in one of the channels is such a data alignment or synchronization signal (comma), then all read pointers are advanced or moved to their corresponding comma locations for reading from the corresponding FIFO. When either or both of these conditions is or are not met, the read pointers are not altered, with data conversion or transmission continuing without interruption or change.
The invention may be embodied, for example, in a SERDES device, providing synchronization among the plurality of parallel data channels which will be converted to a serial bit stream.
In a first aspect of the invention, a method for data content deskewing among a plurality of data channels for data synchronization is provided. The method includes determining whether a data alignment signal has been written, for each data channel of the plurality of data channels; when a data alignment signal has been written in a data channel of the plurality of data channels, determining a corresponding channel location of the data alignment signal for each data channel having the data alignment signal; and when each data channel of the plurality of data channels has the data alignment signal, and when the data alignment signal is to be read on a next read cycle in at least one data channel, moving a corresponding read pointer for each data channel of the plurality of data channels to the corresponding channel location of the data alignment signal.
Depending upon the selected embodiment, the data alignment signal may be a comma character. Depending upon the location of the data alignment signal, the read pointer may be advanced to a data location for data which has not been read previously, or may be moved to a data location for data which has been read previously.
Following the movement of the read pointers, the method includes synchronously reading the data alignment signal from each data channel of the plurality of data channels during the next read cycle. This is followed by synchronously reading data in parallel from each data channel of the plurality of data channels during a subsequent read cycle. When included in a SERDES device, the method further synchronously reads the data in parallel from each data channel of the plurality of data channels for serial data transmission.
The various embodiments further determine the corresponding channel location of the data alignment signal for each data channel having the data alignment signal by decoding the data alignment signal and storing a data alignment bit in a data alignment signal register. Subsequently, the movement of the corresponding read pointer for each data channel of the plurality of data channels to the corresponding channel location of the data alignment signal is facilitated by copying the data alignment signal register to a read pointer register.
In another aspect of the invention, an apparatus for data content deskewing among a plurality of data channels for data synchronization is provided. The apparatus includes a data memory; a read pointer register coupled to the data memory, the read pointer register adapted to store a read pointer address; a write pointer register coupled to the data memory, the write pointer register adapted to store a write pointer address; a data alignment signal decoder adapted to determine a presence of a data alignment signal in data written to the data memory; a data alignment signal register adapted to store a data memory location when the data alignment signal has been written to the data memory; and a state machine coupled to the data memory, the state machine adapted to determine whether the data alignment signal has been written to the data memory; and to move the read pointer to data memory location of the data alignment signal when each data channel of the plurality of data channels has the data alignment signal and when the data alignment signal is to be read on a next read cycle in at least one data channel.
In another aspect of the invention, a system for data content deskewing among a plurality of data channels for data synchronization is provided. The system includes a memory and a processor, and may further include an interface for coupling to the various data sources and communication or transmission media, such as parallel busses or serial transmission lines. The memory is adapted to store data for each data channel of the plurality of data channels and, for each data channel, further adapted to store a read pointer, a write pointer, and a data alignment signal bit. The processor is adapted to determine whether a data alignment signal has been written, for each data channel of the plurality of data channels; to determine a corresponding channel location of the data alignment signal for each data channel having the data alignment signal; and to move a corresponding read pointer for each data channel of the plurality of data channels to the corresponding channel location of the data alignment signal when each data channel of the plurality of data channels has the data alignment signal, and when the data alignment signal is to be read on a next read cycle in at least one data channel. Such a system, for example, may be included or embodied in a serializer/deserializer.
Numerous other advantages and features of the present invention will become readily apparent from the following detailed description of the invention and the embodiments thereof, from the claims and from the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGSThe objects, features and advantages of the present invention will be more readily appreciated upon reference to the following disclosure when considered in conjunction with the accompanying drawings, in which:
Figure (or “FIG.”) 1 is a block diagram illustrating a first exemplary apparatus embodiment in accordance with the present invention.
Figure (or “FIG.”) 2 is a flow diagram illustrating an exemplary method embodiment in accordance with the present invention.
Figure (or “FIG.”) 3 is a block diagram illustrating a first exemplary read pointer alignment among multiple FIFOs in accordance with the present invention.
Figure (or “FIG.”) 4 is a block diagram illustrating a second exemplary read pointer alignment among multiple FIFOs in accordance with the present invention.
Figure (or “FIG.”) 5 is a block diagram illustrating a third exemplary read pointer alignment among multiple FIFOs in accordance with the present invention.
Figure (or “FIG.”) 6 is a block diagram illustrating a system embodiment in accordance with the present invention.
DETAILED DESCRIPTION OF THE EXEMPLARY EMBODIMENTSWhile the present invention is susceptible of embodiment in many different forms, there are shown in the drawings and will be described herein in detail specific embodiments thereof, with the understanding that the present disclosure is to be considered as an exemplification of the principles of the invention and is not intended to limit the invention to the specific embodiments illustrated.
As indicated above, the present invention provides for data alignment and synchronization, with minimizing the probability of data becoming corrupted or overwritten, by alignment and synchronization of each read pointer for each data channel of a multichannel system. The invention is particularly useful for data deskewing when data is transmitted over several serial links, such as 10 Gigabit per second (bps) Ethernet data transmitted over four 2.5 G bps fiber channels. Synchronzing the data transmitted through these serial links provides for easier reassembly of parallel data at the receiving end.
In accordance with the exemplary embodiments, when all channels which are to be synchronized have received a data alignment or synchronization signal (such as a comma character), and when the next FIFO block to be read in one of the channels is such a data alignment or synchronization signal (comma), then all read pointers are advanced or moved to their corresponding comma locations for reading from the corresponding FIFO. When either or both of these conditions is or are not met, the read pointers are not altered, with data conversion or transmission continuing without interruption or change.
More particularly, the content deskewing of the present invention, such as embodied as a content deskewing FIFO illustrated in
Every time deskewing is enabled, a FIFO state machine 150 (or other processor) waits until comma characters are in all of the enabled channels. When one or more channels are about to read a comma character, the read pointers in all channels are adjusted in a way that every channel reads a comma character next. The deskewing is performed once after deskewing is enabled. If comma characters are not present in all of the enabled channels, read pointer adjustment does not occur, and the FIFO 105 functions as a transparent data buffer.
Referring to
It should be noted that for explanatory purposes, steps 210-225 and steps 230-255 are illustrated sequentially in
When all channels have been checked for data alignment signals (commas), the method determines whether a data alignment signal is to be read on the next read cycle, step 230. If so, the method determines whether there is a data alignment signal in each channel to be synchronized, step 235. If either or both of these conditions of steps 230 and 235 have not been met, the method may end, return step 260. When a data alignment signal is to be read on the next read cycle and when there is a data alignment signal in each channel to be synchronized, the method proceeds to step 240, and selects one of the channels to by synchronized.
For the selected channel, the method copies the alignment register (e.g., comma decode register 115) location contents to the read pointer register 125, step 245, and moves the read pointer of the selected channel to the corresponding location of the data alignment signal, step 250. When there are additional channels to be synchronized in step 255, the method returns to step 240, and repeats steps 245 and 250 for each such channel. When there are no additional channels, the method may end, return step 260. As the read pointers now have been advanced or moved for each channel to be synchronized, on the next read cycle, each such channel will read a data alignment signal such as a comma, followed by reading content synchronously. Examples of this process for four channels are illustrated and discussed below with respect to
As illustrated in
Continuing to refer to
More particularly, referring to
As another example, referring to
As another example, referring to
While these various example illustrate potentially dropping bytes when a read pointer may be advanced for deskewing (
Figure (or “FIG.”) 6 is a block diagram illustrating a system 300 embodiment in accordance with the present invention. The system 300 is typically coupled or connected to the various data sources, such as a PCI bus or other parallel data lines and serial data lines, for example, when embodied within a SERDES device.
The system 300 includes an interface 315, such as for coupling to the data sources, a processor 310 and a memory 320. The network interface 315 is utilized to receive and transmit information and other data, control messages, and other pertinent information. The memory 320 is preferably an integrated circuit (such as random access memory (RAM) in any of its various forms such as DRAM, SDRAM, or the other memory forms discussed below), but also may be a magnetic hard drive, an optical storage device, or any other type of data storage apparatus. The memory 320 is used to store data, and may include one or more FIFOs discussed above, and also may store information pertaining to program instructions or configurations, if any (discussed below).
Continuing to refer to
Numerous advantages of the present invention are readily apparent. The present invention provides for data alignment and synchronization, without allowing data to be corrupted or overwritten, by alignment and synchronization of each read pointer for each data channel of a multichannel system. When all channels which are to be synchronized have received a data alignment or synchronization signal (such as a comma character used in fiber optic communication), and when the next FIFO block to be read in one of the channels is such a data alignment or synchronization signal (comma), then all read pointers are advanced or moved to their corresponding comma locations for reading from the corresponding FIFO. When either or both of these conditions is or are not met, the read pointers are not altered, with data conversion or transmission continuing without interruption or change.
From the foregoing, it will be observed that numerous variations and modifications may be effected without departing from the spirit and scope of the novel concept of the invention. It is to be understood that no limitation with respect to the specific methods and apparatus illustrated herein is intended or should be inferred. It is, of course, intended to cover by the appended claims all such modifications as fall within the scope of the claims.
Claims
1. A method for data content deskewing among a plurality of data channels for data synchronization, the method comprising:
- determining whether a data alignment signal has been written, for each data channel of the plurality of data channels;
- when a data alignment signal has been written in a data channel of the plurality of data channels, determining a corresponding channel location of the data alignment signal for each data channel having the data alignment signal; and
- when each data channel of the plurality of data channels has the data alignment signal, and when the data alignment signal is to be read on a next read cycle in at least one data channel, moving a corresponding read pointer for each data channel of the plurality of data channels to the corresponding channel location of the data alignment signal.
2. The method of claim 1, wherein the data alignment signal is a comma character.
3. The method of claim 1, wherein the read pointer is advanced to a data location for data which has not been read previously.
4. The method of claim 1, wherein the read pointer is moved to a data location for data which has been read previously.
5. The method of claim 1, wherein data is written into each data channel of the plurality of data channels based on a first clock signal, and data is read from each data channel of the plurality of data channels based on a second clock signal.
6. The method of claim 1, further comprising:
- synchronously reading the data alignment signal from each data channel of the plurality of data channels during the next read cycle.
7. The method of claim 6, further comprising:
- synchronously reading data in parallel from each data channel of the plurality of data channels during a subsequent read cycle.
8. The method of claim 7, further comprising:
- serializing the data synchronously read in parallel from each data channel of the plurality of data channels for serial data transmission.
9. The method of claim 1, wherein the determination of the corresponding channel location of the data alignment signal for each data channel having the data alignment signal further comprises:
- decoding the data alignment signal and storing a data alignment bit in a data alignment signal register.
10. The method of claim 1, wherein the movement of the corresponding read pointer for each data channel of the plurality of data channels to the corresponding channel location of the data alignment signal further comprises:
- copying the data alignment signal register to a read pointer register.
11. An apparatus for data content deskewing among a plurality of data channels for data synchronization, the apparatus comprising:
- a data memory;
- a read pointer register coupled to the data memory, the read pointer register adapted to store a read pointer address;
- a write pointer register coupled to the data memory, the write pointer register adapted to store a write pointer address;
- a data alignment signal decoder adapted to determine a presence of a data alignment signal in data written to the data memory;
- a data alignment signal register adapted to store a data memory location when the data alignment signal has been written to the data memory; and
- a state machine coupled to the data memory, the state machine adapted to determine whether the data alignment signal has been written to the data memory; and to move the read pointer to data memory location of the data alignment signal when each data channel of the plurality of data channels has the data alignment signal and when the data alignment signal is to be read on a next read cycle in at least one data channel.
12. The apparatus of claim 11, wherein the data alignment signal is a comma character.
13. The apparatus of claim 11, wherein the state machine is adapted to advance the read pointer to a data memory location having data which has not been read previously.
14. The apparatus of claim 11, wherein the state machine is adapted to move the read pointer to a data memory location having data which has been read previously.
15. The apparatus of claim 11, wherein data is written into each data channel of the plurality of data channels based on a first clock signal, and data is read from each data channel of the plurality of data channels based on a second clock signal.
16. The apparatus of claim 11, wherein state machine is adapted to copy the data memory location stored in the data alignment signal register to the read pointer register.
17. A system for data content deskewing among a plurality of data channels for data synchronization, the system comprising:
- a memory adapted to store data for each data channel of the plurality of data channels and, for each data channel, further adapted to store a read pointer, a write pointer, and a data alignment signal bit; and
- a processor coupled to the memory, the processor adapted to determine whether a data alignment signal has been written, for each data channel of the plurality of data channels; to determine a corresponding channel location of the data alignment signal for each data channel having the data alignment signal; and to move a corresponding read pointer for each data channel of the plurality of data channels to the corresponding channel location of the data alignment signal when each data channel of the plurality of data channels has the data alignment signal, and when the data alignment signal is to be read on a next read cycle in at least one data channel.
18. The system of claim 17, wherein the data alignment signal is a comma character.
19. The system of claim 17, wherein the processor is adapted to advance the read pointer to a data memory location having data which has not been read previously.
20. The system of claim 17, wherein the processor is adapted to move the read pointer to a data memory location having data which has been read previously
21. The system of claim 17, wherein data is written into each data channel of the plurality of data channels based on a first clock signal, and data is read from each data channel of the plurality of data channels based on a second clock signal.
22. The system of claim 17, wherein the processor is adapted to synchronously read the data alignment signal from each data channel of the plurality of data channels during the next read cycle.
23. The system of claim 22, wherein the processor is adapted to synchronously read data in parallel from each data channel of the plurality of data channels during a subsequent read cycle.
24. The system of claim 23, wherein the processor is adapted to serialize the data synchronously read in parallel from each data channel of the plurality of data channels for serial data transmission.
25. The system of claim 17, wherein the processor is adapted to determine the corresponding channel location of the data alignment signal for each data channel having the data alignment signal by decoding the data alignment signal and storing a data alignment bit in a data alignment signal register of the memory.
26. The system of claim 25, wherein the processor is adapted to copy the data alignment signal register to a read pointer register.
27. The system of claim 25, wherein the system is embodied in a serializer/deserializer.
Type: Application
Filed: Jun 2, 2005
Publication Date: Dec 7, 2006
Patent Grant number: 7549074
Applicant: Agere Systems, Inc. (Allentown, PA)
Inventors: Ravikumar Charath (Bangalor), Vladimir Sindalovsky (Perkasie, PA), Lane Smith (Easton, PA)
Application Number: 11/143,370
International Classification: H03M 9/00 (20060101);