Patent Description:
Modern electronic devices such as computers, mobile phones, computer servers, and even vehicles communicate in a variety of ways. Wireline communication has historically used Pulse-Amplitude Modulation (PAM) to enable high-speed transmission. PAM communication uses pulses of different amplitudes that define multiple bits per pulse. PAM is often referred to as PAM-n, where n may be an integer value that is a power of <NUM> (e.g., PAM-<NUM>, PAM-<NUM>, and PAM-<NUM>) and that refers to the number of different possible amplitudes that each pulse may have. Wireless communication systems often use a different form of signal modulation to encode message information for high-speed passband wireless transmission (e.g., over-the-air, coherent optical fiber communication). Wireless communication has historically used Quadrature Amplitude Modulation (QAM) to enable the high-speed wireless transmission. While effective for a variety of media that can support frequencies much higher than the desired data transfer rate, QAM involves additional processing overhead. Document <CIT> discloses auxiliary channel in PAM/QAM systems using redundant constellation points, and in particular an optical communication system that comprises a transmitter adapted to generate a signal by modulating a transmission data as low power consumption symbols of an amplitude modulation format and a monitoring data (MD) as high power consumption symbols of the amplitude modulation format, the MD comprising at least one transmitter parameter and/or at least one receiver parameter of communicating the transmission data, wherein a binary logarithm of a total number of the low power consumption symbols and the high power consumption symbols is a non-integer.

Pulse Amplitude Modulation (PAM) communication uses pulses of different amplitudes to define multiple bits per pulse. PAM is often referred to as PAM-n, where n may be an integer value that is a power of <NUM> (e.g., PAM-<NUM>, PAM-<NUM>, and PAM-<NUM>) or an integer value that is not a power of <NUM> (e.g., PAM-<NUM> and PAM-<NUM>). The n in PAM-n refers to the number of different possible amplitudes that each pulse may have. Thus, PAM-n uses n different symbols to enable high-speed signal transmission. PAM-<NUM>, a variant of PAM, where one bit of information is carried with two possible signal levels, is often used for modulation for transmission of up to <NUM> gigabits/second in signal transmission. PAM-<NUM>, a variant of PAM, where two bits of information are carried with four possible signal levels, is used for modulation for transmission of <NUM> gigabits/second (Gbps) and above. The encoding and decoding between the information bits and the PAM-n symbols is relatively straightforward when n is an integer power of <NUM>. However, when n is not an integer power of <NUM>, the encoding and decoding may not be uniquely determined, involving trade-offs between latency and coding rate. As data rates increase, PAM-n, where n is an integer power of <NUM>, may falter when wireline transmission approaches <NUM> Gbps, requiring PAM-n that is in-between PAM-<NUM> and PAM-<NUM>.

Quadrature Amplitude Modulation (QAM) may be used to enable wireline communication or wireless communication (e.g., over-the-air (OTA), optical fiber). QAM involves IQ modulation, where an I component symbol stands for in-phase and a Q component symbol stands for quadrature-phase. The I component symbol and Q component symbol may be baseband signals generated by encoding input bits according to a QAM constellation diagram to produce IQ data that includes the I component and the Q component. When the IQ data is used in accordance with a typical QAM format, the I component symbol and Q component symbol modulate the amplitudes of orthogonal passband carrier signals (e.g., sinusoidal signals) to generate a modulated signal. The modulated signal propagates through a communication channel (e.g., over-the-air, optical fiber) and is received and demodulated by a receiver. The orthogonality characteristics of the carrier signals are used to demodulate the modulated signal at the receiver. The I component symbol and Q component symbol of the IQ data are then detected and decoded as received bits.

The IQ data may be based on a two-dimensional QAM constellation diagram that, in addition to representing a QAM-n encoding, may also represent a first PAM encoding in one dimension and a second PAM encoding in a second dimension. An example of a QAM-n constellation diagram that can be used to produce IQ data that may be used in QAM or PAM is discussed further herein with respect to <FIG>.

Moreover, some embodiments disclosed herein enable utilization of a version of PAM-n where n is not an integer value of a power of <NUM> by establishing QAM communication and exploiting the relationship between QAM and PAM-n. For example, field programmable gate arrays (FPGAs) and/or configurable integrated circuits that provide PAM-n functions when n is not an integer power of <NUM>, as well as the logical functionality behind the waveform-level modulation, may be compatible with QAM. PAM/QAM communication as described in this disclosure may enable devices that have a high-speed serializer-deserializer (SerDes) to be fully utilized for either or both wireless and wireline communication.

Furthermore, it may be interpreted that one QAM symbol is represented by two consecutive symbols: an I-symbol and a Q-symbol. For PAM/QAM communication, each QAM symbol may be treated as a PAM symbol. In some embodiments, the order of the two symbols may be opposite. Thus, baseband QAM modulation may be formed from consecutive PAM symbol modulation. This type of baseband QAM is also referred to herein as PAM/QAM.

For each symbol (e.g., the I symbol and the Q symbol), a time separation of <NUM> unit interval (UI) is used to form the QAM symbol. That is, when sampling the I symbol for <NUM> UI, there is no sampling of the Q symbol. Additionally, when sampling the Q symbol at another <NUM> UI, there is no sampling of the I symbol. Indeed, this sampling technique may enable technologies developed for QAM to be used for PAM-n, where n is not an integer power of <NUM>. For example, there is no natural and unique mapping between information bits and the modulation symbols for traditionally defined PAM-<NUM>. However, it is possible to use the mapping developed for QAM-<NUM> encoding and transmit the information with two consecutive PAM-<NUM> symbols (I-PAM-<NUM> and Q-PAM-<NUM>). While QAM-<NUM> is described by way of example here, any suitable QAM-n constellation may be used to encode or decode IQ data.

Figure (<FIG> illustrates a constellation diagram <NUM> for QAM-<NUM>. The symbols (I,Q) for QAM are often described by a constellation diagram. The constellation diagram <NUM> is a representation of a signal encoded by quadrature amplitude modulation (QAM) that can be modulated using pulse amplitude modulation (PAM). The constellation diagram <NUM> displays the signal as a two-dimensional plane scatter diagram in the complex plane at symbol sampling data points <NUM>.

<FIG> shows <NUM><NUM>-bit data points <NUM> for QAM-<NUM>. Each of the <NUM><NUM>-bit data points <NUM> shown in <FIG> is a possible sequence of <NUM> input data bits that may be received by a transmitter for transmission using PAM-<NUM>. According to an exemplary embodiment of constellation diagram <NUM>, the I-axis corresponds to an I symbol with <NUM> possible values of -<NUM>, -<NUM>/<NUM>, -<NUM>/<NUM>, +<NUM>/<NUM>, +<NUM>/<NUM>, +<NUM>, and the Q-axis corresponds to a Q symbol with <NUM> possible values of -<NUM>, -<NUM>/<NUM>, -<NUM>/<NUM>, +<NUM>/<NUM>, +<NUM>/<NUM>, +<NUM>. Each of the <NUM><NUM>-bit data points <NUM> corresponds to a value of the I symbol and a value of the Q symbol.

The <NUM> QAM I and Q symbols at each of the <NUM> data points <NUM> in constellation diagram <NUM> correspond to <NUM> consecutive PAM-<NUM> symbols. <FIG> effectively forms a QAM-<NUM> constellation diagram through utilization of two consecutive PAM-<NUM> symbols I and Q. With these two PAM-<NUM> symbols (I and Q) of <FIG>, a total of <NUM>-bits of data is transmitted using one of <NUM> of the possible <NUM> combinations for QAM-<NUM>. QAM-<NUM>/PAM-<NUM> can be used by SerDes circuits, for example, to transmit data at <NUM> Gbps.

A transmitter circuit encodes each <NUM>-bit sequence received in the input data to an I symbol and a Q symbol that correspond to the data point <NUM> in the constellation diagram <NUM> for that <NUM>-bit sequence in the input data as shown in <FIG>. The transmitter circuit then generates a modulated data signal having the encoded I and Q symbols selected from diagram <NUM> using PAM-<NUM>. For example, the transmitter circuit encodes an input data sequence having a <NUM>-bit value of <NUM> to I and Q symbol values of +<NUM>/<NUM> and - <NUM>/<NUM>, respectively, using diagram <NUM> for QAM-<NUM>, and then the transmitter circuit generates a modulated data signal having the I and Q symbol values of +<NUM>/<NUM> and -<NUM>/<NUM>, respectively, using PAM-<NUM>. As another example, the transmitter circuit encodes an input data sequence having a <NUM>-bit value of <NUM> to I and Q symbol values of -<NUM>/<NUM> and +<NUM>, respectively, using the diagram <NUM> for QAM-<NUM>, and then the transmitter circuit generates a modulated data signal having the I and Q symbol values of -<NUM>/<NUM> and +<NUM>, respectively, using PAM-<NUM>.

When using PAM-<NUM> for data transmission in SerDes, two symbols I and Q provide <NUM> possible values, of which <NUM> I/Q values are mapped to <NUM> unique <NUM>-bit input sequences, and <NUM><NUM>-bit sequences are left unused, as shown in <FIG>. In diagram <NUM> shown in <FIG>, the four (I,Q) corners <NUM> of QAM-<NUM> are removed for QAM-<NUM>. The upper right, lower right, upper left, and lower left unused corners <NUM> correspond to encoded I/Q symbol values of (+<NUM>,+<NUM>), (+<NUM>, -<NUM>), (-<NUM>,+<NUM>), and (-<NUM>, -<NUM>), respectively.

According to some embodiments disclosed herein, auxiliary data provided for transmission through a data channel is mapped during encoding to four of the QAM-<NUM> symbols or to the <NUM> unused corner symbol values <NUM> of the constellation diagram for QAM-<NUM>. The <NUM> unused corner symbol values <NUM> can be used to encode the auxiliary data and a subset of the regular data provided for transmission through the data channel. As an example, the auxiliary data may include back-channel transmitter equalization setting updates without affecting the transmitted data. Some dynamic environmental conditions, such as temperature changes or humidity changes, can affect the quality of data being transmitted through a data channel (e.g., a wired data channel between integrated circuits or a wireless data channel). Therefore, it is advantageous to provide a system for dynamically changing the equalization settings of a transmitter that transmits data through a data channel without having to reset the transmitter. According to some embodiments, a system is provided for changing equalization settings of a transmitter without disturbing the data channel by transmitting data to the transmitter using auxiliary data encoded with previously unused symbol values for QAM.

According to other embodiments, auxiliary data may be encoded for transmission through a data channel using previously unused symbol values for QAM to increase data throughput in the data channel (e.g., by approximately <NUM>% with a high probability). These embodiments can also increase the efficiency for encoding the data in the data channel by approximately <NUM>%. Data may also be transmitted through a data channel using previously unused symbol values for QAM for other non-time urgent auxiliary communications. According to some embodiments, data may be transmitted through a data channel using previously unused I and Q symbols for QAM as PAM-<NUM> or PAM-<NUM> symbols.

<FIG> illustrates an example of a constellation diagram <NUM> for QAM-<NUM> encoding with the four corner symbol pairs I/Q of the constellation diagram <NUM> being used to encode auxiliary data, according to an embodiment. Constellation diagram <NUM> includes <NUM><NUM>-bit data points <NUM> (<NUM> in each quadrant). Each of the <NUM> data points <NUM> corresponds to a <NUM>-bit input data sequence shown in <FIG> that is encoded by a transmitter to a unique pair of I and Q symbol values using QAM-<NUM>, as described with respect to <FIG>. The I-axis of diagram <NUM> corresponds to the I symbol with <NUM> possible values of -<NUM>, -<NUM>/<NUM>, -<NUM>/<NUM>, +<NUM>/<NUM>, +<NUM>/<NUM>, and +<NUM>. The Q-axis of diagram <NUM> corresponds to the Q symbol with <NUM> possible values of -<NUM>, -<NUM>/<NUM>, -<NUM>/<NUM>, +<NUM>/<NUM>, +<NUM>/<NUM>, and +<NUM>.

<FIG> shows that auxiliary (AUX) data can be encoded by utilizing the previously unused I, Q corner symbol pairs of (+<NUM>,+<NUM>), (+<NUM>, -<NUM>), (-<NUM>,+<NUM>), and (-<NUM>, -<NUM>) in a QAM-<NUM> constellation diagram. Points <NUM>-<NUM> in <FIG> correspond to the previously unused corner symbol pairs. In the embodiment of <FIG>, the input data sequences of <NUM>, <NUM>, <NUM>, and <NUM> are encoded as the I, Q symbol pairs of (<NUM>/<NUM>, <NUM>/<NUM>), (<NUM>/<NUM>, -<NUM>/<NUM>), (-<NUM>/<NUM>, -<NUM>/<NUM>), and (-<NUM>/<NUM>, <NUM>/<NUM>) at the <NUM> corresponding data points <NUM> or as the I, Q symbol pairs of (+<NUM>,+<NUM>), (+<NUM>, -<NUM>), (-<NUM>, -<NUM>), and (-<NUM>,+<NUM>) corresponding to points <NUM>-<NUM>, respectively, as shown by the arrows in <FIG>, depending on the value of an auxiliary data bit AUX.

<FIG> is a flow chart that illustrates examples of operations that may be performed to encode auxiliary data for transmission with PAM-<NUM> and QAM-<NUM>, according to an embodiment. Initially, a transmitter circuit receives input data, for example, from circuitry in the same integrated circuit (IC) as the transmitter circuit. The transmitter circuit analyzes the input data for encoding using QAM-<NUM>. The input data may include regular data (e.g., user data) and auxiliary (AUX) data.

In operation <NUM>, the transmitter circuit determines if each set of <NUM>-bits of regular data in the input data has a value of <NUM>. If the transmitter circuit determines that the regular data has a value of <NUM> in operation <NUM>, then the transmitter determines if <NUM>-bit of corresponding auxiliary data (AUX) has a value of <NUM> in operation <NUM>. If the transmitter determines that the auxiliary data (AUX) bit has a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of input data (including the <NUM>-bits of regular data and the <NUM>-bit of AUX data) as the I, Q symbol values of (+<NUM>/<NUM>, +<NUM>/<NUM>) in operation <NUM>, which correspond to the data point <NUM> for <NUM> in constellation diagram <NUM>. If the transmitter determines that the auxiliary data (AUX) bit has a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of input data (including the <NUM>-bits of regular data and the <NUM>-bit of AUX data) as the I, Q symbol values of (+<NUM>, +<NUM>) in operation <NUM>, which correspond to the previously unused point <NUM> in the upper right corner of constellation diagram <NUM>.

If the transmitter determines that the <NUM>-bits of regular data in the input data does not have a value of <NUM> in operation <NUM>, then the transmitter determines if the <NUM>-bits of regular data in the input data has a value of <NUM> in operation <NUM>. If the transmitter determines that the regular data has a value of <NUM> in operation <NUM>, then the transmitter determines if the <NUM>-bit of corresponding auxiliary data (AUX) has a value of <NUM> in operation <NUM>. If the transmitter determines that the auxiliary data (AUX) bit has a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of regular data and the <NUM>-bit of AUX data as the I, Q symbol values of (+<NUM>/<NUM>, -<NUM>/<NUM>) in operation <NUM>, which correspond to the data point <NUM> for <NUM> in constellation diagram <NUM>. If the transmitter determines that the auxiliary data (AUX) bit has a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of regular data and the <NUM>-bit of AUX data as the I, Q symbol values of (+<NUM>, -<NUM>) in operation <NUM>, which correspond to the previously unused point <NUM> in the lower right corner of constellation diagram <NUM>.

If the transmitter determines that the <NUM>-bits of regular data in the input data does not have a value of <NUM> in operation <NUM>, then the transmitter determines if the <NUM>-bits of regular data has a value of <NUM> in operation <NUM>. If the transmitter determines that the <NUM>-bits of regular data has a value of <NUM> in operation <NUM>, then the transmitter determines if the <NUM>-bit of corresponding auxiliary data (AUX) has a value of <NUM> in operation <NUM>. If the transmitter determines that the auxiliary data (AUX) bit has a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of regular data and the <NUM>-bit of AUX data as the I, Q symbol values of (-<NUM>/<NUM>, -<NUM>/<NUM>) in operation <NUM>, which correspond to the data point <NUM> for <NUM> in constellation diagram <NUM>. If the transmitter determines that the auxiliary data (AUX) bit has a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of regular data and the <NUM>-bit of AUX data as the I, Q symbol values of (-<NUM>, -<NUM>) in operation <NUM>, which correspond to the previously unused point <NUM> in the lower left corner of constellation diagram <NUM>.

If the transmitter determines that the <NUM>-bits of regular data in the input data does not have a value of <NUM> in operation <NUM>, then the transmitter determines if the <NUM>-bits of regular data has a value of <NUM> in operation <NUM>. If the transmitter determines that the <NUM>-bits of regular data has a value of <NUM> in operation <NUM>, then the transmitter determines if the <NUM>-bit of corresponding auxiliary data (AUX) has a value of <NUM> in operation <NUM>. If the transmitter determines that the auxiliary data (AUX) bit has a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of regular data and the <NUM>-bit of AUX data as the I, Q symbol values of (-<NUM>/<NUM>, +<NUM>/<NUM>) in operation <NUM>, which correspond to the data point <NUM> for <NUM> in constellation diagram <NUM>. If the transmitter determines that the auxiliary data (AUX) bit has a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of regular data and the <NUM>-bit of AUX data as the I, Q symbol values of (-<NUM>, +<NUM>) in operation <NUM>, which correspond to the previously unused point <NUM> in the upper left corner of constellation diagram <NUM>. If the transmitter determines that the <NUM>-bits of regular data in the input data does not have a value of <NUM> in operation <NUM>, then the transmitter encodes the <NUM>-bits of regular data in the input data using QAM-<NUM> encoding in operation <NUM> by mapping the remaining <NUM> possible <NUM>-bit values to the corresponding I and Q symbol values using constellation diagram <NUM>. A receiver that receives the data encoded using the operations <NUM>-<NUM> of <FIG> performs the inverse of these operations to demodulate and decode the received data.

In any pseudo-random input data stream, <NUM> bit of auxiliary data AUX is transmitted on average every eight <NUM>-bit values (i.e., <NUM>-bits) of regular data. However, there may be periods of time due to random variation that have very low occurrences of the <NUM><NUM>-bit data patterns (<NUM>, <NUM>, <NUM>, <NUM>) for the regular data used in the embodiments of <FIG> that are less than the average of <NUM> out of <NUM>. For this reason, the throughput of the auxiliary data AUX cannot be guaranteed for any particular subset of the input data stream.

In many systems, the input data is protected by an error detection and correction scheme, such as forward error correction (FEC). The auxiliary data AUX may or may not be protected by an error detection and correction scheme. As an example, the auxiliary data AUX may be protected by an error detection and correction scheme if the auxiliary data AUX is used to supplement the regular data in the input data stream. The error correction codes for performing error detection and correction of the auxiliary data AUX may, for example, be provided separately in the auxiliary data AUX stream.

According to various embodiments, the auxiliary data AUX may be provided to the transmitter in one auxiliary input data stream or in four separate auxiliary input data streams. In embodiments in which the auxiliary data is transmitted in <NUM> separate auxiliary input data streams, each of the <NUM> auxiliary input data streams transmits auxiliary data for one of the four <NUM>-bit sequences (<NUM>, <NUM>, <NUM>, or <NUM>) of regular data.

In other embodiments, input data may be encoded using alternative encodings to the QAM-<NUM> encoding shown in <FIG>. As an example, an alternative QAM-<NUM> encoding may be used to encode input data (including auxiliary data) to generate I and Q symbol values that mirrors the top and bottom halves of the <NUM><NUM>-bit values <NUM> in the constellation diagram <NUM> across the I axis. As another example, an alternative QAM-<NUM> encoding may be used to encode input data and auxiliary data to generate encoded I and Q symbol values that mirrors the left and right halves of the <NUM><NUM>-bit values <NUM> in the constellation diagram <NUM> across the Q axis.

According to other embodiments, PAM-<NUM> signaling may be used to encode input data including auxiliary data using previously unused symbol values from QAM-<NUM>. PAM-<NUM> is a modulation scheme that is used, for example, with 100BASE-T Ethernet (IEEE <NUM>-<NUM> clause <NUM>). Table <NUM> below shows the encoding used for PAM-<NUM> in Ethernet, as an example.

The first column of Table <NUM> shows each possible digital combination of <NUM>-bit values that may be received in an input data stream. The three bits in each combination of <NUM>-bit input values are referred to as B[<NUM>], B[<NUM>], B[<NUM>] in Table <NUM>. In this example, a transmitter encodes an input data stream by mapping each <NUM>-bit value (shown in the first column of Table <NUM>) of regular data received in the input data stream to the corresponding encoded values for T[<NUM>] and T[<NUM>] (shown in the second column of Table <NUM>) that are in the same row of Table <NUM> as the corresponding <NUM>-bit value in the input data stream. For example, the transmitter encodes a <NUM>-bit input data value of <NUM> to symbols (+<NUM>, <NUM>). The symbol values for T[<NUM>] and T[<NUM>] represent two adjacent encoded PAM-<NUM> symbols. The transmitter then generates a modulated data signal with the symbol values for T[<NUM>] and T[<NUM>] corresponding to the <NUM>-bit input data value in the corresponding row of Table <NUM> using, for example, PAM-<NUM> modulation.

In the PAM-<NUM> encoding scheme shown in Table <NUM>, the symbol combination (<NUM>, <NUM>) for T[<NUM>] and T[<NUM>] is not used to encode the input data. According to an embodiment, regular input data having a <NUM>-bit value of <NUM> is encoded to symbol values T[<NUM>] and T[<NUM>] of either (-<NUM>, +<NUM>) as shown in Table <NUM> or (<NUM>, <NUM>), depending on the value of an auxiliary data bit corresponding to the <NUM>-bit input data value of <NUM>. For example, if the auxiliary data bit is <NUM>, then a corresponding <NUM>-bit value of <NUM> of regular data in an input data stream is encoded to symbol values of (-<NUM>, +<NUM>) for T[<NUM>] and T[<NUM>]. In this example, the <NUM>-bit value of <NUM> of regular data is encoded to symbol values of (<NUM>, <NUM>) for T[<NUM>] and T[<NUM>] if the corresponding auxiliary data bit is <NUM>. In this embodiment, one additional bit is transmitted as auxiliary data on average for every <NUM> bits of regular data that are transmitted, and direct current (DC) balance is maintained.

According to an alternative embodiment for PAM-<NUM> encoding, regular input data having a <NUM>-bit value of <NUM> is encoded as symbol values for T[<NUM>] and T[<NUM>] of either (+<NUM>, -<NUM>) as shown in Table <NUM> or (<NUM>, <NUM>), depending on the value of an auxiliary data bit corresponding to the <NUM>-bit value of regular data. For example, if the auxiliary data bit is <NUM>, then a corresponding <NUM>-bit value of <NUM> of regular input data is encoded as symbol values of (+<NUM>, -<NUM>) for T[<NUM>] and T[<NUM>]. In this example, the <NUM>-bit value of <NUM> of regular data is encoded to symbol values of (<NUM>, <NUM>) for T[<NUM>] and T[<NUM>] if the corresponding auxiliary data bit is <NUM>. In this embodiment, one additional bit is transmitted as auxiliary data on average for every <NUM> bits of regular data that are transmitted, and direct current (DC) balance is maintained.

The auxiliary data provided using embodiments disclosed herein can be used to provide a continuous mechanism to improve the performance of data channels. Many SerDes protocols, including Peripheral Component Interconnect Express (PCIe) and Ethernet, have mechanisms that allow a receiver to provide initial feedback to a transmitter about the quality of data transmitted by the transmitter and received by the receiver. These mechanisms may allow a receiver to make requests for the transmitter to make changes to improve the quality of the data received at the receiver. For example, the receiver may request that the transmitter increase the gain of the data transmission or change the transmission equalization settings. These changes are often a one-time event. For example, the transmission equalization should function properly, even as the conditions of the data channel change, such as the temperature or humidity. SerDes uses a one-time transmission adaptation that makes achieving a data channel that is robust across a wide temperature range more challenging. Using any of the embodiments disclosed herein, a SerDes receiver can transmit requests back to a SerDes transmitter using the auxiliary data AUX to change the transmission equalization settings, without taking up any of the bandwidth of the regular data transmitted in the main data stream, and without disrupting the upper layers of well-established protocols, such as Ethernet or PCIe.

As mentioned above, using the auxiliary data in PAM-<NUM>/QAM-<NUM> encoding, an average of <NUM>/<NUM> bit per <NUM> bits of regular data is transmitted as auxiliary data. In practice, the data bits transmitted in a data channel have a chance of experiencing errors during transmission. Therefore, error detection and correction schemes, such as FEC, are typically used to correct most of the errors that occur in data transmitted through data channels. A typical goal for the error rate of data that has been corrected using FEC is between <NUM> x <NUM>-<NUM> and <NUM> x <NUM>-<NUM>, with a stretch goal of <NUM> x <NUM>-<NUM>. As a specific example, a FEC encoder may analyze <NUM> bits of input data at a time in an input data stream that is transmitted across a single data channel or multiple data channels. <NUM> bits of each set of <NUM> bits of input data includes a total of <NUM><NUM>-bit sets. Using a binomial distribution with p = <NUM>/<NUM> and N = <NUM>/<NUM> = <NUM>, the probability that a transmitter will not be able to transmit at least <NUM> bits of auxiliary data AUX in each set of <NUM> bits of input data is <NUM> x <NUM>-<NUM>.

According to some embodiments, a transmitter may transmit auxiliary data as regular data in a data channel in order to increase the throughput of the main data stream. Using the exemplary values discussed above, <NUM>-bits of auxiliary data AUX can be allocated as regular data out of every <NUM> bits of regular data received in the main data stream for a total throughput of <NUM> bits transmitted in the main data stream. Thus, according to this example, all <NUM> bits of input data are transmitted as regular data in the main data stream. If the transmitter in the data channel is not able to transmit the <NUM>-bits received as auxiliary data AUX (e.g., a <NUM> x <NUM>-<NUM> chance), the receiver in the data channel is not able to detect the error and declare the <NUM>-bit FEC frame of transmitted data as illegal. As a result, the error rate on a <NUM> x <NUM>-<NUM> data channel doubles, and the error rate on a <NUM> x <NUM>-<NUM> data channel only increases by <NUM>%. In this example, the efficiency of the regular data transmitted in the main data stream is increased by <NUM>%.

As another example, <NUM>-bits of auxiliary data may be allocated as regular data to the main data stream out of every <NUM> bits of regular data received in the main data stream for a total of <NUM> bits. In this example, the chance of failure at the receiver is reduced to <NUM> x <NUM>-<NUM> for a <NUM>% increase in the regular data bits transmitted in the main data stream.

Using the embodiments disclosed herein for encoding auxiliary data, a transmitter can encode <NUM> auxiliary data bits on average for each set of approximately <NUM> regular data bits in a main data stream. If, for example, only <NUM>-bits or <NUM>-bits of the auxiliary data is transmitted as regular data in the main data stream, a data channel has a significant amount of bandwidth left over on average for some of the auxiliary data to be used for other purposes (e.g., changing transmitter equalization settings).

In embodiments that use PAM-<NUM>/QAM-<NUM> encoding, an example payload per FEC frame as used in Ethernet is <NUM><NUM>-bit symbols for a total of <NUM> bits. In this example, if <NUM> bits of auxiliary data are allocated as regular data out of every <NUM> bits of regular data received in a main data stream, data transmission of the regular data succeeds in all but <NUM> x <NUM>-<NUM> cases, and the data channel can achieve a <NUM>% increase in the main data stream throughput.

<FIG> illustrates an example of a data channel in a data transmission system that transmits auxiliary data according to embodiments disclosed herein. The data channel of <FIG> includes portions of two integrated circuits (ICs) <NUM> and <NUM>. ICs <NUM> and <NUM> may be any types of ICs, such as programmable logic ICs (e.g., FPGAs), microprocessors, graphics processing units, etc. Only a portion of each of integrated circuits <NUM> and <NUM> is shown in <FIG>. Integrated circuit (IC) <NUM> has a transmitting portion of the data channel that includes a main first-in-first-out (FIFO) buffer circuit <NUM>, an auxiliary (AUX) FIFO buffer circuit <NUM>, a multiplexer circuit <NUM>, and a transmitter circuit <NUM>. IC <NUM> includes a receiving portion of the data channel that includes a main FIFO buffer circuit <NUM>, an auxiliary (AUX) FIFO buffer circuit <NUM>, a demultiplexer circuit <NUM>, and a receiver circuit <NUM>.

In <FIG>, regular data bits in an input data stream RDIN are provided to an input of main FIFO buffer circuit <NUM>. The regular data bits are stored in the FIFO buffer circuit <NUM> and then provided to a first data input of multiplexer circuit <NUM> as data RDM in a first-in-first-out manner. Auxiliary data bits ADIN are provided to an input of the AUX FIFO buffer circuit <NUM>. The auxiliary data bits are stored in the AUX FIFO buffer circuit <NUM> and then provided to a second data input of multiplexer circuit <NUM> as data ADM in a first-in-first-out manner. Multiplexer circuit <NUM> provides the regular data bits and the auxiliary data bits (e.g., in series or in parallel) to one or more inputs of transmitter circuit <NUM> as data stream DTX in response to one or more select signals SELTX. Transmitter circuit <NUM> encodes the regular and auxiliary data bits in the data stream DTX using one of the PAM/QAM encoding techniques disclosed herein, for example, with respect to <FIG> or Table <NUM>, to generate encoded symbols. Transmitter circuit <NUM> then uses the encoded symbols to generate a modulated data stream DLK that is transmitted through an external link <NUM> between ICs <NUM> and <NUM>. Link <NUM> may be, for example, a wireline connection including one or more wires, or a wireless data link for wireless signals.

The data stream DLK is provided through link <NUM> to one or more inputs of receiver circuit <NUM>. Receiver circuit <NUM> demodulates and decodes the data received in data stream DLK using one of the PAM/QAM decoding techniques disclosed herein, for example, with respect to <FIG> or Table <NUM>, to regenerate the regular data bits and the auxiliary data bits in an output data stream DRX. The output data stream DRX of the receiver circuit <NUM> is provided to an input of demultiplexer circuit <NUM>. Demultiplexer circuit <NUM> provides the regular data bits from data stream DRX to main FIFO buffer circuit <NUM> as data stream MDX. Main FIFO buffer circuit <NUM> outputs the regular data bits in output data stream MDOUT. Demultiplexer circuit <NUM> provides the auxiliary data bits from data stream DRX to AUX FIFO buffer circuit <NUM> as data stream ADX. AUX FIFO buffer circuit <NUM> outputs the auxiliary data bits in output data stream ADOUT.

Claim 1:
A data transmission system comprising:
a transmitter circuit (<NUM>) configured to receive regular data bits (<NUM>, <NUM>) and auxiliary data bits (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>) and to encode a first subset of the regular data bits to generate a first subset of encoded data comprising pairs of symbols that are used in quadrature amplitude modulation, wherein the transmitter circuit is further configured to encode the auxiliary data bits and a second subset of the regular data bits to generate a second subset of the encoded data comprising at least one pair of symbols that are unused for encoding by the quadrature amplitude modulation,
wherein the transmitter circuit is further configured to encode each of the auxiliary data bits by mapping a predefined value in a sequence of the regular data bits to a pair of symbols in a constellation diagram used for the quadrature amplitude modulation when the auxiliary data bit has a first value and to a pair of symbols in the constellation diagram unused by the quadrature amplitude modulation
when the auxiliary data bit has a second value, and wherein the transmitter circuit is further configured to generate a modulated output signal that indicates the first and second subsets of the encoded data using pulse amplitude modulation.