Pipelined forward error correction for vector signaling code channels
阅读说明:本技术 向量信令码信道的流水线式前向纠错 (Pipelined forward error correction for vector signaling code channels ) 是由 阿明·肖克罗拉 达里奥·卡内利 于 2018-04-16 设计创作,主要内容包括:对依次接收的向量信令码字进行解码,以获得依序的各组数据比特,其中,每一向量信令码字的码元均经多条线路并行接收;根据依序的每组数据比特并按照校验矩阵,对多个纠错症状值进行渐进更新;在最后一个向量信令码字解码后,对所述多个纠错症状值进行最终渐进更新,并通过根据所述多个纠错症状值所确定的符号位置索引值从所述依序的各组数据比特中选择一组数据比特并根据所述多个纠错症状值当中的第一纠错症状值所确定的比特纠错掩码修改所选一组数据比特的方式,对所述依序的各组数据比特中的数据比特进行相应修改。(Decoding vector signaling code words received in sequence to obtain each group of sequential data bits, wherein each vector signaling code word code element is received in parallel through a plurality of lines, gradually updating a plurality of error correction symptom values according to each group of sequential data bits and a check matrix, finally gradually updating the plurality of error correction symptom values after the last vector signaling code words are decoded, and correspondingly modifying the data bits in each group of sequential data bits in a mode of selecting groups of data bits from each group of sequential data bits according to symbol position index values determined by the plurality of error correction symptom values and modifying groups of data bits selected according to bit error correction masks determined by the th error correction symptom value in the plurality of error correction symptom values.)
A method of , comprising:
decoding a preset number of vector signaling codewords received in sequence by an vector signaling code receiver to obtain a sequence of data bits of each group, wherein each symbol of each vector signaling codeword is received in parallel over a plurality of lines;
generating a progressive update of a plurality of error correction syndrome values based on each sequential group of data bits according to a check matrix by forward error correction check circuit, and
performing a final progressive update of the plurality of error correction syndrome values after decoding of the last of the preset number of received vector signaling codewords, and in response modifying data bits in the sequential sets of data bits by selecting sets of data bits from the sequential sets of data bits according to a symbol position index value determined by the plurality of error correction syndrome values and changing the selected sets of data bits according to a bit error correction mask determined by a th error correction syndrome value of the plurality of error correction syndrome values.
2. The method of claim 1, wherein generating the progressive update of the plurality of error correction syndrome values comprises performing a logical XOR operation on a previously stored error correction syndrome value according to a given sets of data bits of the sequential sets of data bits.
3. The method of claim 1, wherein the plurality of error correction syndrome values are initialized to a logical zero value; performing a final progressive update of the plurality of error correction syndrome values comprises: comparing the plurality of error correction syndrome values to a plurality of received error correction check codewords.
4. The method of claim 1, wherein the plurality of error correction syndrome values are initialized based on a plurality of received error correction check codewords prior to generating the progressive update of the plurality of error correction syndrome values.
5. The method of wherein the symbol position index value is determined by forming a binary reciprocal of the th error correction syndrome value and performing a reduced-modulus multiplication with a second error correction syndrome value of the plurality of error correction syndrome values.
6. The method of claim 5, wherein the binary reciprocal is formed by a look-up table.
7. The method of any of claims 1-4, wherein the error correction syndrome value is updated by performing a logical exclusive-or operation on bits of the sequential sets of data bits having a common bit position.
8. The method of any of claims 1-4, wherein the selected groups of data bits are changed by bitwise XOR' ing the selected groups of data bits with the bit error correction mask to generate groups of error corrected data bits.
An apparatus of the type , comprising:
vector signaling code receiver for decoding a preset number of vector signaling codewords received in sequence to obtain a sequence of data bits, wherein each symbol of each vector signaling codeword is received in parallel over multiple lines;
forward error correction check circuit for generating progressive updates of the plurality of error correction syndrome values based on each set of data bits in sequence according to the check matrix, and
error correction circuitry for modifying data bits in the sequential sets of data bits after decoding a last of the preset number of received vector signaling codewords and performing a final progressive update of the plurality of error correction syndrome values, the error correction circuitry for selecting sets of data bits from the sequential sets of data bits according to the symbol position index values determined by the plurality of error correction syndrome values and changing the selected sets of data bits according to the bit error correction mask determined by a th of the plurality of error correction syndrome values.
10. The apparatus of claim 9, wherein the forward error correction checking circuit is to generate the progressive updates of the plurality of error correction syndrome values by performing a logical exclusive-or operation on a previously stored error correction syndrome value according to a given sets of data bits of the sequential sets of data bits.
11. The apparatus of claim 9, wherein: the plurality of error correction syndrome values are initialized to logic zero values; performing a final progressive update of the plurality of error correction syndrome values by comparing the plurality of error correction syndrome values to a plurality of received error correction check codewords.
12. The apparatus of claim 9, wherein the plurality of error correction syndrome values are initialized based on a plurality of received error correction check codewords before the forward error correction check circuit generates the progressive updates of the plurality of error correction syndrome values.
13. The apparatus of any of claims 9-12, wherein the error correction circuit is to determine the symbol position index value by forming a binary inverse of the th error correction syndrome value and modulo multiplying with a second error correction syndrome value of the plurality of error correction syndrome values.
14. The apparatus of any of claims 9-12, wherein the forward error correction checking circuit is to update the th error correction syndrome value by performing a logical exclusive-or operation on bits of the sequential sets of data bits having a common bit position.
15. The apparatus of , wherein the error correction circuit is to change the selected sets of data bits by bitwise xoring the selected sets of data bits with the bit error correction mask to generate sets of post-error corrected data bits.
Technical Field
Embodiments of the present invention generally relate to communication system circuits, and more particularly, to communication error mitigation for high-speed multi-wire interfaces used for inter-chip communication.
Background
Digital information is understood in the context of this to be information contained within discrete values (i.e., non-continuous values).
At the physical circuit level, the buses within an inter-chip communication system are typically made up of encapsulated electrical conductors between the chip and the motherboard, encapsulated electrical conductors on a Printed Circuit Board (PCB), or encapsulated electrical conductors within inter-PCB cables and connectors.
In applications requiring high speed communications, these methods may be further optimized in terms of power consumption and pin utilization (especially in high speed communications). recently proposed vector signaling approaches may achieve a more optimal tradeoff in terms of power consumption, pin utilization, and noise robustness of inter-chip communication systems.A vector signaling system of this type converts digital information into another representation spaces in the form of vector codewords at the transmitting end, which are chosen in accordance with the characteristics of the transmission channel and design constraints of the communication system to achieve a better tradeoff between power consumption, pin utilization, and speed.A process is referred to herein as "encoding". the encoded codewords are transmitted as sets of signals to or more receivers.
Disclosure of Invention
In existing bit-serial communication systems, the data code word provided by the transmit process or the source process is first serialized (serialized by a digital shift register in example embodiments) into an ordered bit stream, and then at the receive end, the sequentially detected bits are deserialized by corresponding means so that a complete data code word equivalent to the data code word provided by the transmit end can be provided to the receive process or the target process.
The existing Forward Error Correction (FEC) method introduces an amount of redundancy into the transmitted data stream as part of a check code that is used to both detect errors and facilitate error correction, the BER before inherent error correction for the communication link is low (e.g., 1 x 10)-9~1×10-10) And the target BER is at 1 × 10-15~1×10-20Order of magnitude scenarios, the new schemes described herein can be computed during serialization of the transmitted values and verified during deserialization after reception, thereby introducing little or no additional delay into the transmission path in an error-free scenario.
In , methods include decoding a predetermined number of sequentially received vector signaling codewords with a vector signaling code receiver to obtain a plurality of sequential sets of data bits, wherein symbols of each vector signaling codeword are received in parallel over a plurality of lines, progressively updating a plurality of error correction syndrome values with a FEC check circuit according to the plurality of sequential sets of data bits and a check matrix, and after decoding a last of the predetermined number of received vector signaling codewords, progressively updating the plurality of error correction syndrome values and modifying the data bits in the plurality of sequential sets of data bits by selecting sets of data bits from the plurality of sequential sets of data bits based on a symbol position index value determined by the plurality of error correction syndrome values and modifying the selected sets of data bits based on a bit error correction mask determined by a th error correction syndrome value from the plurality of error correction syndrome values.
Drawings
Fig. 1 is a block diagram of a prior art communication system that transmits data S from a
Fig. 2 shows transmitter embodiments with forward error correction functionality provided in the data path using multiple processing stages.
Fig. 3 shows receiver implementations with forward error correction functionality provided in the data path using multiple processing stages.
Fig. 4A-4C are block diagrams of CRC codeword calculation according to embodiments.
Fig. 5A and 5B are block diagrams of components of an error correction circuit according to embodiments.
FIG. 6 is a block diagram of error data codeword location identification according to embodiments.
FIG. 7 is a flow chart of a method according to embodiments.
Fig. 8 is a flowchart of an iterative update method for error correction syndrome values according to embodiments.
Detailed Description
The
The embodiments described herein may also be used in existing permutation-combining ordering methods not covered by the Shokrollahi II vector processing method, more generally , such embodiments may be used in any communication or storage method that requires coordination among multiple channels or multiple channel elements to produce a logical overall result.
Given the characteristic that multiple symbols are transmitted substantially in parallel, vector signaling code is generally considered to transmit data in groups of symbols, for example, in a CNRZ-5 code (also known as a wing-penetrating (glassing) code) as described in Shokrollahi II, progressively transmitted in increments of five bits.
Serialization and deserialization
In existing bit-serial communication systems, the data codewords provided by the transmit or source processes are first serialized (serialized by a digital shift register in example embodiments) into an ordered bit stream at the receive end, the sequentially detected bits are deserialized by corresponding means to provide a complete data codeword equivalent to the data codeword provided by the transmit end for the receive or target process.
It is apparent that serialization and deserialization introduce delay into the transmission channel and that the amount of delay depends on the number of transmission symbols formed by the serialization of a given data codeword, since the entire codeword can only be obtained after the last transmission symbols have been received and the received codewords have been completely recombined.
In high speed communications systems, serialization and deserialization may further be performed including a plurality of processing stages that are performed substantially in parallel to provide additional processing time for each stage and/or to reduce power consumption by allowing processing operations to use a lower clock rate in exemplary implementations, a data codeword provided by a transmit or source process is decomposed into successive codewords and each codeword is assigned to a processing stage that is sequentially selected and used to perform the necessary encoding, formatting, etc. when each processing stage completes its operation, the result of the processing is sent to an output driver for transmission over the communications medium.
Other embodiments may employ more or fewer processing stages (including a single stage), and may incorporate greater or lesser transmit and/or receive processing workloads in these substantially parallel processing stages, although the invention is not limited thereto.
Link error correction
Although communication systems are designed to be heavily concerned with error-free transmission of data, the presence of noise and other signal interference factors is inevitable. The error probability of a transmission path is represented by a Bit Error Rate (BER), which is the ratio of the number of received bit errors to the total number of transmitted bits.
The known bit error detection methods in the art include cyclic check codes, parity checks and redundant transmission.a closed loop retransmission method in the TCP/IP protocol suite is most valued at . in this method, when the receiver detects an error, the transmitter is requested to retransmit through a reverse channel first, and then the corrected data is explicitly inserted into its output stream.
Forward error correction
The greater the amount of redundancy introduced in the transmitted data stream (e.g., the longer the FEC sequence used), the higher the FEC bit error correction capability achieved, but at the same time the greater the protocol overhead, i.e., the lower the effective data transmission rate.
As described in Bhoja et al, several FEC techniques for high-speed communication links have been proposed, including KR4 codes and KP4 codes for 802.3bj, and BCH codes (e.g., 2864 in length and 2570 in dimension). Other such techniques, for exampleIncluding Reed-Solomon (Reed-Solomon) codes as described in Shokrollahi I and Hamming, Hadamard, Reed-Muller, Golay and Low Density Parity Check (LDPC) codes as described in Cronie II since the BER before error correction is relatively high (1 × 10) as the object of such error correction method-5~1×10-3Order of magnitude) of the error correction, and error rates after error correction are at 1 x 10-15Orders of magnitude and therefore relies on relatively long check sequences and calculations for large amounts of data. Furthermore, such methods result in error correction delays on the order of tens of nanoseconds (e.g., 100ns as described by Bhoja et al), and the corresponding computational power consumption is large.
When the communication link has a low BER (e.g., 1 x 10) before inherent error correction-9~1×10-10) And the target BER is at 1 × 10-15~1×10-20In order of magnitude, for example, in "Shokrollahi II", the glass code or CNRZ-5 code, which is used for inter-chip links in a package using vector signaling codes, may be selected as another method that can greatly reduce delay.
For a vector signalling code that transmits n bits at a time over m lines, it is preferred to operate over a finite field GF (2) since errors in the communication link may cause all n bits to be erroneousn) Inner FEC.
Pipelined error correction processing
The link-optimized forward error correction implementations achieve a minimization of the perceived error correction delay by sequential transmission of data codewords with a transmission-level vector signaling code in such implementations, N-bit groups of N bits are transmitted over m lines with a vector signaling code, thus, N-N bits consisting of K × N data bits and R × N CRC bits for error correction can be transmitted for N consecutive bit groups.
In non-limiting specific examples, consider the case of a CNRZ-5 code, where n is 5 and m6, typical message length N32, this case may be interpreted as corresponding to sending 5 bit streams simultaneously, each bit stream containing 32 bits sent one after the other, acting on GF of the five-bit codeword (2)n) Assuming that the input BER is p and the bit errors between unit intervals of all bit streams are random and independent bit errors (but the bit errors between 5 bits making up a codeword within each unit interval are not independent of each other), the decoded output BER is at most:
wherein, q is 1- (1-p)5And N is 32. 8X 10-10Input BER p is sufficient to realize 1 × 10-15The output BER of (1). The rate retention of the code was 15/16.75%, and the rate loss was 6.25%. In such embodiments, at a baud rate of 26.66G, the interface may send 5 × 26.66 × 0.9375 ═ 125Gbps of data over 6 lines.
FEC transmission
At the transmitting end, the present embodiment performs the following operations:
for example, if the 5 bits are represented by n0, n1, n2, n3, n4, where n0 is the least significant bit and n4 is the most significant bit of n, then n corresponds to the following elements:
n0+n1*x+n2*x2+n3*x3+n4*x4mod f (x) (formula 2)
And f (x) is a polynomial x5+x3+1。
Wherein GF (32) elements use a check matrix of 2 rows and 30 columns in embodiments, the matrix has j column elements of 1 and ajWherein, element a of GF (32)jIs a binary expansion of the integer j, that is, ajRepresented as a binary vector [ j0j1 j2 j3 j4]Wherein j0+2 × j1+4 × j2+8 × j3+16 × j4 ═ j. By using a binary expansion of the integer j as the second, although other embodiments may use a different check matrixThe check matrix of the two rows of elements can realize the high-efficiency calculation of the error code positioning vector. Wherein the error locating vector is used to find out the received symbol containing an error. In particular, this avoids the use of the Berlekamp-Massey algorithm (including the corresponding chien search). In addition, by directly calculating the bit error correction mask with all the "1" rows of the check matrix, the error code amplitude can be avoided from being determined according to the Forney formula. Equation 3 for r0 and r1 calculated from the check matrix is as follows:
in the formula 3, two rows of constants ( rows are all "1", and another row is a0~a29) The check matrix is modulo-multiplied with a vector containing 30 data symbols m 0-m 29 to generate the CRC codewords r0 and
When we note the 30 five-bit data codewords (whose bits are transmitted in 5 CNRZ-5 sub-channels at substantially the same time) that are input as m0, m1, … …, m29, then the two 5-bit CRC codewords r0 and r1 are r0 ═ m0 ⊕ m1 ⊕ … … ⊕ m29, and r1 ═ a0 · m0 ⊕ a1 · m1 ⊕ … … ⊕ a29 · m29, where a · b denotes the product of a and b in the finite field GF (32), and ⊕ denotes the exclusive-or operation of the bits, so r1 can be generated by bit-by-bit exclusive-or operation of the first ⊕ 0 stored value of r1 with the modulo multiplication result of aj · mj in the jth unit interval to progressively update the first stored value of r1, and the final value of r1 is generated when the last progressively updates.
The message data m0, m1, … …, m29 correspond to five-bit codewords at
fig. 4A includes a schematic diagram of the manner in which r0 values are calculated according to embodiments, as shown, the r0 given value is updated by xoring the pre- stored
As described above, the calculation of r1 includes: a of GF (32) matrixjThe
Fig. 4C is a schematic diagram of another logic circuit for progressively updating given bits r1[0] as part of CRC codeword r1 according to embodiments, in fig. 4C the r1 values may be progressively updated according to a CRC calculation corresponding to the modulo multiplication of the groups of data bits of the given symbol with the symbol index value of the check matrix, in such embodiments the updating may be performed as bits in each group of data bits of symbols m0 to m29 become progressively available, thereby reducing the delay, as shown, fig. 4C includes a
Instead of updating the current value of r1[0] for every bits of the K × n data bits, the current value of r1[0] is selectively updated by a corresponding enable signal EN according to sets of preset bits (see appendix A). As shown in embodiments (not shown),
In a receiver embodiment for computing r1', as shown in fig. 4C,
Fig. 4C further includes a counter circuit for generating a partial enable signal including partial enable
The embodiments shown in fig. 4A-4C are merely a few examples of logic circuits that may be hardwired to compute each bits in CRC codewords r0 and
After completing the processing of the input data, the CRC codewords r0 and r1 may be sent as the last two codewords, which are denoted m30 and m31 in this application in another embodiment, the transmitter may first calculate r0 and r1 from the available buffered transmit data, and then send the five bits of r0 and five bits of r1 in the and second vector signaling codewords.
Since the elements a0, a1, … …, a29 are known in advance, and m0, m1, … …, m29 are variable quantities, each multiplication operation within GF (32) can be accomplished by an series exclusive-or operation performed on 5 bits, as known to those skilled in the art, this operation is called "regular representation of finite field GF (32)". in this representation, each element in a0, a1, … …, a29 is represented as bit matrices of 5 × 5 bits, and accordingly, the multiplication operation of a [ j ] mj ] corresponds to the multiplication operation between the matrix and the representation vector of m [ j ].
As embodiments of the series of operations described above, specific GF (32) canonical forms are given in appendix a, but the invention is not so limited.
This "pipelined" FEC calculation avoids the additional latency problems often encountered in forward error correction techniques, in embodiments where multiple substantially parallel processing stages are employed in the transmit process, each portion of the r0, r1 calculation may be completed per processing stages, in embodiments at least of the processing stages include XOR logic for facilitating at least the portion of the above calculation.
FIG. 2 shows transmitter embodiments using the CNRZ-5 code described in Shokrollahi II, where the data buffer 210 receives the transmitted data generally, the source of the data is preferably, for example but not limited to, transmitting the data in the form of 16, 32 or 64 bit codewordsAfter an input codeword of the form transmitted, the data buffer 210 outputs symbols m0, m1, … …, m29 corresponding to groups of data bits (in this example, each symbol corresponds to groups of five data bits) wherein successive symbols are distributed 215 in a cyclic order to the processing stages phase0, phase1, phase2, phase3, etc. of all processing stages 220. each processing stage 220 performs CNRZ-5 encoding 222 and the above described FEC calculation 221 simultaneously on groups of five data bits. under the control of the clock generator 250, the multiplexer 230 selects the results produced by the respective processing stages to provide the line driver 240 with the results to be transmitted via the line W0~W7Output symbols 235 transmitted by the constituent communication channels, as described in Shokrollahi II, clock generator 250 also generates transmit clock 255, and in the example of FIG. 2, the transmit clock is transmitted by line driver 240 via line W as part of the transmit output6And W7And (5) sending.
In processing the first 30 output codewords with data obtained from the data buffer 210, the multiple FEC calculation instances 221 may update CRC codeword r0, r1 by accessing sets of common registers or storage units-then, the FEC processing units within a certain processing stage output r0 as the 31 st output codeword to be encoded by the vector signal encoder 222, while the FEC processing units in the next selected processing stages output r1 as the 32 th output codeword to be encoded by the encoder 222.
Receiving and error correcting
At the receiving end, corresponding embodiments implement sets of similar CRC calculations, where 32 five-bit codewords are received in sequence-the arrival time of the th five-bit codeword m0 is 0 and the arrival time of the 32 th five-bit codeword m31 is (UI × 31), where UI is a symbol transmission unit time interval-in such embodiments, local CRC codewords r0 'and r1' are generated, final error correction syndrome values r0 "and r1" are generated by comparing the local CRC codewords r0 'and r1' with the received CRC codewords r0 and r1 or, the
In the step of receiving error correction, the operations in appendix A are performed, preferably in synchronism with the deserialization step of the first 30 data codewords, to progressively calculate the values of the local CRC codewords r0 'and r1', similar to the transmit end case, the progressive calculation of the values is performed only for the received five-bit codeword values for each steps, and thus, the progressive calculation of the values is achieved, hi addition, similar to the transmit end case, in embodiments, at least of the multiple receive processing stages include logic for performing at least parts of the above-described calculations of XOR, in embodiments, r0 'and r1' values may be calculated using similar circuitry to that shown in FIGS. 4A-4C, in embodiments, the local CRC codewords r0 'and r1' may be calculated as the bits of the data codewords m 0-m 29 become available, while in other embodiments, the calculation of r 'and r0' may be performed after all data codewords have been received.
After a number of error correction syndrome values are progressively updated (preferably in an deserialization step) by processing the first 30 sets of received data bits, r0 'and the received CRC codeword m30(r0) are xored and r1' and the received CRC codeword m31(r1) are xored to generate error correction syndrome values r0 "and r1", respectively for illustrative purposes, r0 "and r1" may both be referred to as error correction syndrome values (when eventually progressively updated) and also as syndrome codewords, wherein r0 "and r1" contain the so-called "syndrome" of forward error correction codes, if r0 "or r1" is zero, it is stated that each set of data bits m0, … …, m29 sent is error free, no further steps are required, wherein although there may be progressive updates of undetermined error correction syndrome values in the addendums, such error occurrence is within the above-missed error correction processing range, and at least the logic is used in the above-described implementation of the error correction syndrome processing stage .
In embodiments, the multiple error correction syndrome values of the receiver FEC circuit may be initialized by receiving from the transmitter the CRC codewords r0 and r1 in the first two unit intervals, thereby enabling direct calculation of r0 "and r1" by progressive updating with sets of data bits obtained in sequence. in embodiments, the FEC check circuit may perform bit-by-bit iterative calculations in the circuit shown in FIG. 4℃ however, other embodiments may also employ preset combinational logic circuits based on logic expressions (e.g., the logic expressions listed in appendix A) to update the error correction syndrome values with or more of the sets of decoded data bits. such circuits may be similar to the combinational logic circuits shown in FIG. 4B. however, since in this case the is available to the receiver only when all data bits are obtained, the combinational logic circuit may utilize hard coding to calculate the error correction syndrome values either in accordance with the index number selected for the currently received set of data bits in appendix 3, or with the pseudo-error correction syndrome value calculated in the decoder [ p-corrected symbols ] in the aforementioned logical coding algorithm [ p-r.
If both the error correction syndrome values r0 "and r1" are non-zero, then error correction of the received data bits is required-
More specifically, the above decoding operation may be described by the following pseudo code:
as described above, the symbol position index value (represented as b in the following equation 4) is obtained by dividing r1 by r 0':
FIG. 5A is a block diagram of embodiments of an
The bits x 0-x 4 of the symbol position index value, the bit error correction mask r0 "and the sequentially received groups of data bits may be provided to of sets of
As described above, first, the inverse of r0 "can be found by a lookup table, appendix C gives example lookup tables for achieving this function after the inverse of r0" is obtained, this inverse can be multiplied by r1 "to obtain the above values of x [0] x [4], in embodiments, this multiplication can be implemented by the following logic circuit based operation, where inv _ r0" represents the inverse (or inverse of the multiplication) of r0 "obtained by the appendix C lookup table, the" & "symbol represents the logical AND, ⊕ represents the logical XOR:
the above calculations and corresponding lookup tables are only possible implementations of the error correction circuit, and may equally well be performed using a variety of other logic functions in embodiments of the error correction circuit, the above operations may be performed using physical logic circuits, and in other implementations, the operations may also be performed by software running in a processor.
After the error correction circuitry obtains the position pos-1 of the erroneous data codeword and the bit error correction mask r0", the error correction circuitry may align the error correction mask with the correct symbol of the received data 530, e.g., via a register, and perform an exclusive-or operation, fig. 5B illustrates error correction of the symbol m14, as shown, the bit error correction mask r0" may be loaded into the error correction register 535 at a position determined by the symbol position index value corresponding to the symbol m 14. in at least implementations, the starting bit of the set of selected data bits corresponding to the erroneous data codeword may be the product of the length "n" of the received data codeword per and the symbol position index value (pos-1). finally, the set of corrected data bits 540 may be obtained by exclusive-or operating the error correction register 535 containing 150 bits of the received data with the bit error correction mask r0 "and the remainder being logic zero values, which may then be output by the system.
Fig. 6 shows specific examples of logic circuitry for performing the operations at the
of this aspect is suitably implemented in appendix B where the logic depth can be up to 7 when no optimization is performed, the above-described implementation being useful for correcting errors in lines within a multi-line bus due to energy impacts, for example, or more bits in a decoded data codeword may occur when or more lines within the multi-line bus are subjected to electromagnetic energy impacts.
FIG. 3 shows a typical CNRZ-5 vector signaling code receiver implementation with a
The detected data values MIC-MIC are provided to four processing stages 330, each of which performs a processing of the received data for a unit time interval, the received clock signal is provided to a clock recovery unit 390 for generating four sequential clock phases ph000, ph090, ph180, ph270, which act together to coordinate the operation of the respective processing stages 330, in each 0 processing stage, at a time determined by the clock of the stage, sampling 331 the comparator output MIC-MIC, to generate sequential sets of five-bit code words m-m and receive CRC code words (r and r), and then providing them to a buffer 370 ″) each 0 processing stage, the receiver further comprises a FEC check circuit 332 for progressively updating the multiple error correction syndrome values according to the sequential sets of data bits, in 1 implementation, the multiple error correction syndrome values are initially set to logic zero values, and the FEC check circuit generates 2 sets of n bits ', r' according to the sequential sets of data bits, and compares the multiple error correction syndrome values with the final error correction syndrome values of the received data sets of the receiver after the error correction syndrome vector has been generated by the decoder 360, the error correction syndrome check circuit determines whether multiple sets of n bits are initially set of n bits in a local error correction syndrome decoder, r-decoder, and r decoder, the error correction syndrome data may be transmitted through a final error correction decoder, and decoder, the error correction syndrome decoder, the receiver.
FIG. 7 is a flow diagram of a
In embodiments, generating the local CRC codeword includes performing a logical XOR operation on the bits of the data codeword. in embodiments, performing the logical XOR operation includes generating bits within a position index value i of a th local CRC codeword by performing an XOR operation on bits within the position index value i of each data codeword, where 0 ≦ i ≦ n-1. in embodiments, generating at least local CRC codewords includes performing a modulo multiplication on each data codeword with a corresponding index value of the data codeword, and performing a logical XOR operation on each modulo multiplication result data codeword in a recursive manner.
In embodiments, the sets of local CRC codewords are updated recursively as each data codeword is progressively received.
In , when each syndrome codeword is not zero, there is an error.
In embodiments, determining the index value for the error data codeword includes forming a binary reciprocal of a bit error correction mask representing of the symptom codewords and multiplying it modulo another symptom codeword.
Fig. 8 is a flow diagram of a
In embodiments, progressively updating the plurality of error correction syndrome values comprises performing a logical XOR operation on a previously stored error correction syndrome value according to a given sets of data bits.in embodiments, the logical XOR operation is performed by performing a bit-wise XOR operation on the previously stored error correction syndrome value with the given sets of data bits.such operation is suitable for use in progressively updating an error correction syndrome value corresponding to r0 ". Or, alternatively, the logical XOR operation is performed by performing an XOR operation between the previously stored error correction syndrome value and a bit determined by a CRC calculation corresponding to the given sets of data bits of the received data codeword mj and a binary expanded modular multiplication result of the symbol index integer value j.such XOR operation is suitable for use in progressively updating an error correction syndrome value corresponding to
In embodiments, the plurality of error correction syndrome values are initialized to a logical zero value and the final incremental updating of the plurality of error correction syndrome values includes comparing the plurality of error correction syndrome values to a plurality of received CRC codewords or initializing the plurality of error correction syndrome values based on the plurality of received CRC codewords prior to the incremental updating of the plurality of error correction syndrome values.
In embodiments, the symbol position index value is determined by forming a binary reciprocal of the th error correction syndrome value and multiplying it modulo a second error correction syndrome value from among the plurality of error correction syndrome values, in embodiments the binary reciprocal is formed by a look-up table (e.g., an annex C look-up table).
In embodiments, the error correction syndrome value is updated by logically xoring bits of the sequential sets of data bits having a common bit position.
In , the selected sets of data bits are modified by bitwise XOR' ing the selected sets of data bits with the bit error correction mask to generate sets of corrected data bits at , the sequential sets of data bits are stored in a register, the bit error correction mask is stored in a second register, and the sets of corrected data bits are stored in a third register.
As will be readily understood by those skilled in the art, the buffering and reformatting of data within the transmitter and receiver may be accomplished by a variety of methods known in the art, including random access memory storage, data latch bank storage, or FIFO buffer cell storage, the conversion of data codewords into groups of bits of the size of a transmission cell may be facilitated by a digital multiplexer, shift register, barrel shifter, or dual port storage structure, either as a stand-alone unit or integrated at with the above-described storage cells.
Appendix A: progressive calculation of r0, r1
The implementation of the r0 and r1 calculations can be carried out by performing a sequence of operations that are organized such that successive elements of a transport data stream are processed in transmission order and in packets, and that result in processing delays that are pipelined or overlap with transmission.
In the following illustrative notation, r0[ i ] denotes bit i of r0, and similarly, r1[ i ] denotes bit i of
Appendix B-error correction
For non-zero elements r0"[0], … …, r0" [4] and additionally non-zero elements r1"[0], … …, r1" [4] within a finite field GF (32) given in five-bit form, the following procedure is used to calculate the bit form of the elements within GF (32) x ═ r1"/r0", i.e. bits x [0], … …, x [4 ]. in the subscript notation, ⊕ denotes the boolean xor operator and the & denotes the boolean and operator.
Appendix C: reciprocal lookup table
r0”
1/r0”
00000
00000
00001
00001
00010
10010
00011
11100
00100
01001
00101
10111
00110
01110
00111
01100
01000
10110
01001
00100
01010
11001
01011
10000
01100
00111
01101
01111
01110
00110
01111
01101
10000
01011
10001
11000
10010
00010
10011
11101
10100
11110
10101
11010
10110
01000
10111
00101
11000
10001
11001
01010
11010
10101
11011
11111
11100
00011
11101
10011
11110
10100
11111
11011