The present invention relates to data communication, and more specifically to a configurable high speed transceiver.
As a result of improvement in processing technology, it is now possible to put millions of transistors in an integrated circuit. This increases the amount of processing power of the integrated circuit. However, the processing power may be wasted if there are insufficient input-output (I/O) resources to transfer data to and from the integrated circuit. High speed I/O transceivers alleviate this problem by increasing the data transfer speed of the I/O resources. In order to improve performance, circuit designers have started to integrate high speed transceivers into integrated circuits.
Another effect of the increase in the number of transistors is that it is possible to place more circuits in an integrated circuit. This means that the complexity and costs of designing an integrated circuit also increase. As a result, many vendors want to be able to sell the same integrated circuit to different markets. Further, users also like to use the same integrated circuit to support different applications because of the high costs of learning and using a complicated integrated circuit. For example, it is desirable for the same product to support a variety of communication protocols, such as Gigabit Ethernet, XAUI, InfiniBand, Fibre Channel, etc. Consequently, there is a need to have a flexible high speed transceiver that can be used for different purposes.
The present invention is an integrated circuit that contains a programmable fabric and a plurality of configurable transceivers located at the peripheral of the programmable fabric. The integrated circuit may contain one or more processor cores. The processor core and the transceivers can be connected by a plurality of signal paths that pass through the programmable fabric.
The integrated circuit contains a plurality of configuration memory cells. Some of the cells are associated with the programmable fabric while the others are associated with the configurable transceivers. By turning these cells on or off, users can select the features that are useful to their products.
The above summary of the invention is not intended to describe each disclosed embodiment of the present invention. The figures and detailed description that follow provide additional exemplary embodiments and aspects of the present invention.
A schematic diagram showing an integrated circuit 100 of the present invention is shown in
Processor core 110 can be one of a variety of signal processing devices, such as a microprocessor, network processor, video processor. Note that more than one processor core can be embedded inside programmable fabric 106.
A user may configure a plurality of circuits in programmable fabric 106. Some of these circuits may communicate with transceivers 102–104. For example,
In the present invention, at least one of the transceivers (in addition to programmable fabric 106) is configurable.
One difference between programmable fabric 106 and the transceivers 102–104 is that the programmable fabric is intended for implementation of arbitrary logic functions by users (thus the programmable fabric needs to provide almost arbitrary interconnectivity), while the transceiver implements specific functions (high speed serial I/O and associated operations), thus the associated memory cells modify aspects of the operations but not changing the underlying purpose of the circuit. In the programmable fabric, memory cells define logic block functions and interconnections in any desired way to implement any desired logic design. In the transceiver, some memory cells modify the behavior of a given subcomponent, but they do not change the underlying function of that subcomponent. Other memory cells associated with the transceiver modify routing by including or excluding a subcomponent in the transceiver's data path, but they do not alter the general flow of data or the purpose of the data path, that is, to transfer parallel digital data inside the integrated circuit to and from the serial data lines outside the integrated circuit. The advantage of this design is that many of the functions in the transceiver are implemented far more efficiently (higher operating speed, less area and power) than would be possible if they were implemented in the programmable fabric, yet they retain enough flexibility to be of use for a broad range of high speed I/O applications. Some portions of the transceiver are highly specialized and could not be implemented using the programmable fabric or lower speed I/O resources.
In one embodiment, a portion of the transceiver can be configured using the configuration memory cells and another portion can be driven by configured logic in the programmable fabric. It is, of course, possible that the transceiver is controlled entirely by the configuration memory cells.
Note that there may be other signals and subcomponents in a transceiver. Only the most important signals and subcomponents are shown in
The transmitter side 150 of transceiver 130 is first described. Digital data on data path 136 is processed by a bypassable CRC generator 152. This generator computes and inserts a commonly used 32-bit CRC into the data packets being transmitted. Different protocols handle data in different ways, and CRC generator 152 needs to recognize data packet boundaries so that it can perform CRC computation on appropriate set of data. CRC generator 152 may have the following configuration options:
(a) use or bypass this CRC generator;
(b) a value to use to corrupt the CRC computation in order to test detection of CRC errors in a remote receiver;
(c) a choice of transmission standard to support, e.g., Fibre Channel, Gigabit Ethernet, InfiniBand, or a user defined standard; and
(d) for the user defined standard, the start-of-packet and end-of-packet control characters.
More detailed description of CRC generator 152 can be found in a copending patent application entitled “Network Physical Layer with Embedded Multi-Standard CRC Generator,” filed concurrently on Mar. 1, 2002 by Sasaki et al., patent application Ser. No. 10/090,519. This patent application is incorporated herein by reference.
The resulted data is delivered to a bypassble encoder 154. In one embodiment, encoder 154 is an 8B/10B encoder. It uses the same 256 data characters and 12 control characters that are used for Gigabit Ethernet, XAUI, Fibre Channel, and InfiniBand. It accepts 8 bits of data along with a K-character signal for a total of 9 bits per character applied. If the K-character signal is “High”, the data will be encoded into one of the 12 possible K-characters available in the 8B/10B code. If the K-character input is “Low”, the 8 bits will be encoded as standard data. If the K-character input is “High”, and a user applies other than one of the pre-assigned combinations, an error signal can be generated. The 8B/10B encoder may be initialized with a user-configured running disparity.
In one embodiment, the programmable fabric may control the following options for encoder 154:
(a) use or bypass this encoder; and
(b) modify the maintenance of the running disparity (this can be used to generate data streams with unusual, e.g., intentionally erroneous, running disparity).
The encoded data is delivered to a transmit FIFO buffer 156. This buffer provides a smooth interface between encoder 154, which is controlled by a clock signal generated by the programmable fabric 106 on line 140, and a serializer 158, which is controlled by a reference clock generated by a transmit clock generator 160. These two clock signals are frequency locked, but may not have the same phase. In this embodiment, the reference clock has superior jitter characteristics while the clock signal on line 140 has better clock skew characteristics with respect to other clock signals in programmable fabric 106. Transmit FIFO buffer 156 absorbs phase differences between these two frequency-locked clock signals. In one embodiment, FIFO buffer 156 has a depth of four, and it can detect overflow and under-flow conditions. FIFO buffer 156 may be configured to be used or bypassed in transceiver 130.
The data in FIFO buffer 156 is delivered to serializer 158, which multiplexes parallel digital data to a serial bit stream for transmission over a serial link. The serial bit stream is sent to a transmit buffer 162 that drives the serial bit stream onto a pair of differential serial output connections in output port 132. A configuration option of serializer 158 is to transmit 20 bits (high speed) or 10 bits (low speed) of data per reference clock cycle. More detailed description of this aspect of the invention can be found in a copending patent application entitled “Method And Apparatus For Operating A Transceiver In Different Data Rates,” filed concurrently on Mar. 1, 2002 by Cory, patent application Ser. No. 10/090,251. This patent application is incorporated herein by reference.
Turning now to the receiver side 170, transceiver 130 contains a receiver clock generator 176 that generates a reference clock signal for receiver side 170. Transceiver 130 contains a receive buffer 172 that accepts serial data from differential input port 134. The data is fed to a clock-data recovery block 173, which uses transitions on the serial differential input (through input port 134) to determine the frequency and phase of the incoming serial data. This information is used to time the reception of the data. The process is called clock and data recovery. The recovered data is delivered to a deserializer 174, which converts the received serial bit stream into parallel digital data. A configuration option of deserializer 174 is to receive 20 bits (high speed) or 10 bits (low speed) of data per clock cycle.
Deserializer 174 also performs a comma detection function. In some decoding algorithm (such as the 8B/10B encoding), a “comma” is a distinguished pattern that is guaranteed to occur only left-justified within a byte. For example, there are two comma patterns in 8B/10B decoding, a “plus” comma and a “minus” comma. Detection of a comma then serves to define the byte alignment within the received serial bit stream. Configuration options for comma detection can be:
(a) alternative comma definitions;
(b) option to raise asynchronous “comma detect” flag on plus comma only, minus comma only, both, or neither; and
(c) option to force comma alignment on half-word boundary.
(d) In one embodiment, programmable fabric 106 may send a signal to control whether the comma detection circuit realigns the byte boundary on recognizing plus comma, minus comma, both, or neither.
The parallel data is then passed to a decoder 178. Decoder 178 decodes digital data that has previously been encoded by a corresponding encoder. Decoder 178 may have the following configuration options:
(a) use or bypass this decoder; and
(b) option to raise synchronous “comma” flag (status bit attached to each received byte at the transceiver-programmable fabric interface) on plus comma only, minus comma only, both, or neither. Also option to set this flag for valid commas only (several invalid comma patterns are also possible).
The decoded data is then sent to an elastic buffer 182, which carries out channel bonding and clock correction operations in conjunction with a channel bonding and clock correction controller 184. Elastic buffer 182 may have the following configuration options:
(a) use or bypass the elastic buffer;
(b) use or inhibit clock correction;
(c) threshold value for flagging buffer overflow or underflow; and
(d) options related to the operation of the elastic buffer (clock correction and channel bonding), such as the choice of channel bonding modes, the selection of a selectable number of channel bonding sequences of a selectable length matching a selectable byte value (8-bit or 10 bit), and similar selection for clock correction sequences.
The data in elastic buffer 182 is delivered to the programmable fabric through data path 138. The data width can be configurably selected to be 1, 2 or 4 bytes.
Elastic buffer 182 can be optionally connected to a CRC verification block 186. This block verifies the commonly used 32-bit CRC that is expected to appear at the end of received data packets. A signal may be delivered to the programmable fabric on line 142 indicating the result of the verification. In order to perform CRC, verification block 186 should recognize data packet boundaries (similar to CRC generation block 152 described above). CRC Verification block 186 may have the following configuration options:
(a) use or bypass this CRC verification block;
(b) a choice of transmission standard to support, e.g., Fibre Channel, Gigabit Ethernet, InfiniBand, or a user defined standard; and
(c) for the user defined standard, the start-of-packet and end-of-packet control characters.
Transceiver 130 can optionally include a loss of synchronization detector 188. It interprets outputs of comma detection 174, decoder 178, and elastic buffer 182 to make a determination of whether the incoming byte stream is in sync. A signal can be delivered to the programmable fabric on line 144. Loss of synchronization detector 188 may have the following configuration options:
(a) use or bypass this detector;
(b) option to set number of invalid characters that cause “loss of sync” status; and
(c) option to set the number of valid characters that negates effect of one invalid character for determination of loss of synchronization.
In the event that loss of synchronization detector 188 is bypassed, status information of decoder 178 and elastic buffer 182 may need to be delivered to the programmable fabric using other status lines.
Referring back to
Those having skill in the relevant arts of the invention will now perceive various modifications and additions which may be made as a result of the disclosure herein. Accordingly, all such modifications and additions are deemed to be within the scope of the invention, which is to be limited only by the appended claims and their equivalents.
Number | Name | Date | Kind |
---|---|---|---|
4366478 | Masuda et al. | Dec 1982 | A |
4758985 | Carter | Jul 1988 | A |
4855669 | Mahoney | Aug 1989 | A |
5072418 | Boutaud et al. | Dec 1991 | A |
5142625 | Nakai | Aug 1992 | A |
RE34363 | Freeman | Aug 1993 | E |
5274570 | Izumi et al. | Dec 1993 | A |
5311114 | Sambamurthy et al. | May 1994 | A |
5339262 | Rostoker et al. | Aug 1994 | A |
5347181 | Ashby et al. | Sep 1994 | A |
5361373 | Gilson | Nov 1994 | A |
5457410 | Ting | Oct 1995 | A |
5473267 | Stansfield | Dec 1995 | A |
5500943 | Ho et al. | Mar 1996 | A |
5504738 | Sambamurthy et al. | Apr 1996 | A |
5537601 | Kimura et al. | Jul 1996 | A |
5543640 | Sutherland et al. | Aug 1996 | A |
5550782 | Cliff et al. | Aug 1996 | A |
5552722 | Kean | Sep 1996 | A |
5574930 | Halverson, Jr. et al. | Nov 1996 | A |
5574942 | Colwell et al. | Nov 1996 | A |
5581745 | Muraoka | Dec 1996 | A |
5594367 | Trimberger et al. | Jan 1997 | A |
5600845 | Gilson | Feb 1997 | A |
5652904 | Trimberger | Jul 1997 | A |
5671355 | Collins | Sep 1997 | A |
5701091 | Kean | Dec 1997 | A |
5705938 | Kean | Jan 1998 | A |
5732250 | Bates et al. | Mar 1998 | A |
5737631 | Trimberger | Apr 1998 | A |
5740404 | Baji | Apr 1998 | A |
5742179 | Sasaki | Apr 1998 | A |
5742180 | DeHon et al. | Apr 1998 | A |
5748979 | Trimberger | May 1998 | A |
5752035 | Trimberger | May 1998 | A |
5760607 | Leeds et al. | Jun 1998 | A |
5809517 | Shimura | Sep 1998 | A |
5835405 | Tsui et al. | Nov 1998 | A |
5872920 | Hausman et al. | Feb 1999 | A |
5874834 | New | Feb 1999 | A |
5889788 | Pressly et al. | Mar 1999 | A |
5892961 | Trimberger | Apr 1999 | A |
5907566 | Benson et al. | May 1999 | A |
5914616 | Young et al. | Jun 1999 | A |
5914902 | Lawrence et al. | Jun 1999 | A |
5933023 | Young | Aug 1999 | A |
5970254 | Cooke et al. | Oct 1999 | A |
6011407 | New | Jan 2000 | A |
6020755 | Andrews et al. | Feb 2000 | A |
6026481 | New et al. | Feb 2000 | A |
6091962 | Bonta | Jul 2000 | A |
6096091 | Hartmann | Aug 2000 | A |
6115763 | Douskey et al. | Sep 2000 | A |
6150837 | Beal et al. | Nov 2000 | A |
6154051 | Nguyen et al. | Nov 2000 | A |
6163166 | Bielby et al. | Dec 2000 | A |
6172990 | Deb et al. | Jan 2001 | B1 |
6178541 | Joly et al. | Jan 2001 | B1 |
6181163 | Agrawal et al. | Jan 2001 | B1 |
6211697 | Lien et al. | Apr 2001 | B1 |
6237124 | Plants | May 2001 | B1 |
6242945 | New | Jun 2001 | B1 |
6272451 | Mason et al. | Aug 2001 | B1 |
6279045 | Muthujumaraswathy et al. | Aug 2001 | B1 |
6282627 | Wong et al. | Aug 2001 | B1 |
6301696 | Lien et al. | Oct 2001 | B1 |
6343207 | Hessel et al. | Jan 2002 | B1 |
6353331 | Shimanek | Mar 2002 | B1 |
6356987 | Aulas | Mar 2002 | B1 |
6389558 | Herrmann et al. | May 2002 | B1 |
6434735 | Watkins | Aug 2002 | B1 |
6460172 | Insenser Farre et al. | Oct 2002 | B1 |
6467009 | Winegarden et al. | Oct 2002 | B1 |
6483342 | Britton et al. | Nov 2002 | B2 |
6507942 | Calderone et al. | Jan 2003 | B1 |
6510548 | Squires | Jan 2003 | B1 |
6518787 | Allegrucci et al. | Feb 2003 | B1 |
6519753 | Ang et al. | Feb 2003 | B1 |
6522167 | Ansari et al. | Feb 2003 | B1 |
6539508 | Patrie et al. | Mar 2003 | B1 |
6541991 | Hornchek et al. | Apr 2003 | B1 |
6578174 | Zizzo | Jun 2003 | B2 |
6587995 | Duboc et al. | Jul 2003 | B1 |
6588006 | Watkins | Jul 2003 | B1 |
6594275 | Schneider | Jul 2003 | B1 |
6601227 | Trimberger | Jul 2003 | B1 |
6604228 | Patel et al. | Aug 2003 | B1 |
6611951 | Tetelbaum et al. | Aug 2003 | B1 |
6798239 | Douglass et al. | Sep 2004 | B2 |
7068650 | Bachar et al. | Jun 2006 | B1 |
20010049813 | Chan et al. | Dec 2001 | A1 |
20030062922 | Douglass et al. | Apr 2003 | A1 |
Number | Date | Country |
---|---|---|
0315275 | Oct 1989 | EP |
0 905 906 | Mar 1999 | EP |
1 235 351 | Aug 2002 | EP |
WO 93 25968 | Dec 1993 | WO |