Pipelined forward error correction for vector signaling code channels

文档序号:1581182 发布日期:2020-01-31 浏览:19次 中文

阅读说明:本技术 向量信令码信道的流水线式前向纠错 (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 transmitter 110 to a receiver 130 over sets of lines 125 that collectively comprise a communication medium 120 for output thereof to receive data R.

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 data communication channel 120, which is formed by a plurality of wires 125, carries symbols of vector signaling codes that, as shown in the embodiment of fig. 1, cooperate to transmit codewords of the vector signaling codes, the number of channels comprising the communication link may range from two to eight or more, depending on the particular vector signaling code used, and may also transmit or more clock signals over additional communication channels, or such clock signals as subchannel components of the vector signaling code, hi the example of fig. 1, the communication link 120 is shown as being formed by eight wires 125 that are used to collectively transmit five data values 100 and clock values 105 between the transmitter 110 and the receiver 130, a further of such communication links is described in shoklarrol II.

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:

Figure BDA0002313310270000081

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 r 1.

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 time points 0, 1, … …, 29. Thus, CRC codewords r0, r1 may be computed in a progressive manner as data becomes progressively available. The corresponding pseudo code for this calculation is:

Figure BDA0002313310270000091

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 value 402 of r0 with the corresponding bit at the corresponding location of the data codeword mj, r0[0] may be xored with mj [0], r0[1] may be xored with mj [1], and so on, for example, so for an index value i of 0 ≦ i ≦ 4, r0[ i ] ═ m0[ i ] ⊕ m1[ i ] ⊕ … … ⊕ m29[ i ], such embodiments may be made recursively as they become available progressively with each bit mj [ i ], in such embodiments, each data bit mj [ i ] may be provided, for example, by a shift register, or, when all data codewords are available, the calculation may be made, for example, by a logical xor tree structure as shown in fig. 4B.

As described above, the calculation of r1 includes: a of GF (32) matrixjThe XOR tree structure 404 of FIG. 4B may be formed by an FEC encoder in embodiments, such XOR tree structure may be formed by a known logical combination, such as that used to calculate r0 and r1 in appendix A. such embodiments may obtain all of the data bits (150 in each of the above examples) prior to calculation in the XOR tree structure-FIG. 4B is shown as r1[0]] specific examples of calculations in such an embodiment, the input value 405 may be based on a value for updating r1[0] according to appendix A]The selected preset value of the bit.

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 storage unit 407 for holding the current value of r1[0], the current value r1[0] is xored with a sequence of K × n data bits determined by the CRC calculation 410, wherein the ith bit among the FEC data bits is represented as inp [ i ]. the index notation sequence inp [ i ] represents the input data currently being processed, wherein in the above embodiment where K is 30 groups of n ═ 5 data bits, 149 is pn [5] the data bits of inp [ i ] index notation sequence of inp [ i ] representing the input data currently being processed, wherein the data bits of K is 3637, the 30 groups of n ═ 5, the data bits are 965, the inn [ 37, the data bits of the symbols of the 3637, and the data bits of the 8535 m 36 m 11.

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), shift register 415 may obtain the K × n data bits from data buffer 210 of the transmitter and serially input the data bits to XOR operation unit 410.

In a receiver embodiment for computing r1', as shown in fig. 4C, shift register 415 may be coupled to each processing stage 330, or may have a corresponding shift register per stage, all of which may be multiplexed (not shown). in embodiments, shift register 415 may be loaded in parallel. in such embodiments, shift register 415 may include a plurality of D flip-flops which may be loaded in parallel and serially shift outputs to exclusive-or unit 410. block 417 represents storage units of shift register 415 according to embodiments. as shown, storage unit 417 may be coupled to p0[0] p3[0] at the MIC0 output of each stage of the four processing stages 330. furthermore, the phase to be loaded into storage unit 417 is selected by a stage selection signal se _ sel. in embodiments, the selected stage may be coupled by a multiplexer for receiving the stages to the elements represented by the block, and the selected stage counter may be coupled to receive a selected stage counter for receiving a corresponding MIC output from MIC 7342, although the other stages may be coupled to receive a corresponding MIC output from MIC 363 counter for receiving stage 38415.

Fig. 4C further includes a counter circuit for generating a partial enable signal including partial enable signals 4, 5, 7 which may form, by combination, a corresponding global enable signal EN. of bits r1[0], as shown, the counter circuit including a counter 420 and a plurality of index values associated with respective ones of the K × n data bits inp [ i ] in embodiments, the current output value i of the counter 420 may be represented as sets of bits (shown as X, Y, Z in fig. 4C) and logic a-422C for receiving bits X, Y, Z, and each of and a-422C has an input and a non-input combined in a corresponding manner, so that each of the counter portions 149 a-t and 422C has an inverted count value of bits r 2, p-t-.

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 r 1.

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 FEC check circuit 332 may be initialized by first receiving the CRC codewords r0 and r1 from the transmitter, and then progressively updating the multiple error correction syndrome values initialized by the received CRC codewords r0 and r1 according to the sets of data bits received in sequence.

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-r 0 "is used as a five-bit error correction mask and the symbol position index value containing the error-coded symbols is determined from the vector r1"/r0", where the division is a division in a finite field GF (32.) the error correction operation to calculate the error code index value r1"/r0 "and the exclusive-or operation to apply the error correction mask to the codeword mt may be performed after the deserialization step, where the symbol position index value t is pos-1, where pos is an integer form of r1"/r0", in as a non-limiting example, after calculation of pos r1"/r0", a bit-by-error correction barrel shifter is performed by applying a bit mask r0" to the values of the selected sets of data bits.

More specifically, the above decoding operation may be described by the following pseudo code:

Figure BDA0002313310270000151

as described above, the symbol position index value (represented as b in the following equation 4) is obtained by dividing r1 by r 0':

Figure BDA0002313310270000152

FIG. 5A is a block diagram of embodiments of an error correction circuit 560 connected to the FEC check circuit 510 according to embodiments in embodiments, the error correction circuit 560 may correspond to "error correction" 360 of FIG. 3. As shown, the FEC check circuit 510 sequentially obtains 150 data bits of the 30 decoded five-bit data codewords and 10 bits of the received CRC codewords r0 and r 1. subsequently, the FEC check circuit 510 progressively updates a plurality of error correction syndrome values. in embodiments, the FEC check circuit first initializes each error correction syndrome value therein to a static value (all zeros), then generates local CRC codewords r0', r1' according to the received data bits, and in a final progressive update, generates error correction syndrome values r0 "and r1" by performing two XOR operations on r0 ⊕ r0' and r1 ⊕ r1' from the transmitter, respectively, or, as described above, may also receive the initial error correction syndrome values r and r1 ⊕ r 5848 ' in an interval, and then determine whether the error correction syndrome value of the error correction circuit 510 is equal to the final error correction syndrome value obtainable by performing an XOR operation on the error correction circuit 56, the error correction syndrome value obtained by performing an XOR operation before the error correction circuit proceeds from the error correction circuit 56, the error correction syndrome generator 510, the error correction circuit by performing an additional error correction operation on the error correction syndrome value of the error correction syndrome generator 510, and the error correction circuit proceeds directly after the error correction circuit proceeds to generate the error correction syndrome value of the error correction circuit proceeds to generate a gradual update step of an error correction syndrome generator 56, if no error correction code r 367, the error correction circuit proceeds to the error correction circuit proceeds as described earlier step of an error correction code r 367, the error correction unit of anThe XOR of the selected symbols does not change, whereas if r1 "is" 00000 "this indicates that there is an error in the received CRC codeword r0 or r1, so the error correction circuit can ignore this situation and not correct the data bits, if neither the error correction syndrome value r0" nor r1 "is zero, the five-bit symbol position index value x [0] 0 for finding the error-containing symbol position is identified by implementing r1"/r0 "as described above]~x[4]Thus, the position of the sets of data bits of the symbol containing errors is determined in FIG. 5A, by finding the bit form of the inverse of r0 ″

Figure BDA0002313310270000171

Thus obtaining r1"/r 0". in , the above conversion 520 may be accomplished using a lookup table, after which the conversion may be accomplished using a reduction technique to combine r1 "with r1

Figure BDA0002313310270000172

Multiply 525 to find the symbol position index value x 0 of the codeword of the error data]~x[4]. As described above, the symbol position index value x [0]]~x[4]The decimal form of (c) can be expressed as pos, and in the above example, 1. ltoreq. pos.ltoreq.30.

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 registers 565 for correction by modifying the selected groups of data bits fig. 5B shows of sets of registers 565 according to embodiments as shown, registers 565 include a th register 530 containing the sequentially succeeding groups of data bits corresponding to the received data, a second register 535 containing a bit error correction mask r0" for correcting groups of data bits at positions determined by the symbol position index value bits x 0-x 4 among the received data to prevent other bits among the received data from being changed, wherein the and second registers may be xor-corrected to generate groups of corrected data in a third register 540, which may then be output by the system in the example of fig. 5B, the error correction mask r0 "may be determined by xor operations on the symbols m positions corresponding to the symbol position bits 3884 corresponding to the error correction bits of the m groups of error correction mask r groups of data bits corresponding to the symbol position error correction values, which may be determined by the system to correct errors in the m positions of the symbols 463 groups of data bits corresponding to the error correction mask r 0.

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:

Figure BDA0002313310270000181

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 division block 515 of the error correction circuit 560, as shown, according to embodiments, the logic circuitry is configured to calculate the x [ k ] portion of the symbol position index value pos of the error data codeword, as shown in fig. 6, the logic circuitry includes a memory element 605 storing the current value (shown in this example as x [0]), wherein the updating of the x [0] value may be performed by exclusive-or 610 of the current value of x [0] with selected bit combinations of the error correction syndrome values r0 "and r1", in embodiments, the process is hard-coded by a multiplexer 615 connected to the network network 620, and the bit combinations of the error correction syndrome values r0 "and r1" are progressively selected by a selection signal (e.g. a simple count value), in at least 2 embodiments, the logical combination sequence selected by the selection signal and updated by x [0] provided to the block may be performed by other predetermined logic processing circuits, or other logic processing circuits, in addition to the aforementioned progressive processing of the bit sequence generated by exclusive-or by a logic processing circuit .

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 multi-input comparator 320 detecting five data results MIC 0-MIC 4 and receive clocks CK, line signal W0~W5After being equalized by a Continuous Time Linear Equalizer (CTLE)310, the obtained data is provided to MICs 320 as described in Shokrollahi II to generate sensed data values MIC 0-MIC4. in addition to this, CTLE 310 (not shown) may be applied to line W6And W7As shown in FIG. 3, the sets of MICs 320 include five comparator circuits, where each MIC corresponds to only one pair of lines W0~W5Each MIC may implement a respective linear combination operation defined by a respective subchannel among a plurality of mutually orthogonal subchannels, each subchannel may be defined by a receiver matrix, as described in Shokrollahi II, hi fig. 3, line W6And W7 is used for carrying differential clock signal, and the receiving clock CK is operated on the line W6And W7The upper differential comparator 340. Other embodiments may not pass through a dedicated W6And W7A differential clock signal is carried, and instead a clock is transmitted (e.g., as the output signal MIC4) in dedicated subchannels among the above-described mutually orthogonal subchannels, or a clock signal may be extracted from the detected data outputs MIC0 to MIC4 using transition information (i.e., data-inferred clock recovery).

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 method 700 according to embodiments, where the method 700 includes receiving a sequence of codewords having m symbols at step 702, and forming sets of n comparator outputs, where n is an integer greater than or equal to 3, at step 704, respectively, generating n-bit syndrome codewords at step 706 based on the received data codewords, generating sets of n-bit local CRC codewords at step 708, based on (1) the sets of local CRC computed values determined from the received n-bit data codewords and (2) the received CRC codewords, wherein the syndrome values indicate whether error correction syndromes exist, and where 35712 exists, determining error correction syndromes within a combination of the n-bit error correction syndromes for the error correction codewords based on bit error correction syndromes of of the syndrome codewords, wherein the error correction syndromes are determined from a combination of the n-bit error correction codewords.

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 method 800 according to embodiments, as shown, the method 800 includes decoding 802, by a vector signaling code receiver, a preset number of vector signaling codewords received in sequence to obtain a sequence of groups of data bits, wherein symbols for each vector signaling codeword are received in parallel over multiple lines, then progressively updating 804, by an FEC check circuit, a plurality of error correction syndrome values according to the sequence of each group of data bits and according to a check matrix, after decoding a last vector signaling codeword among the preset number of received vector signaling codewords and finally progressively updating the plurality of error correction syndrome values, sequentially modifying data bits in the group of data bits by selecting 806 group of data bits from the sequence of groups of data bits according to a symbol position index value determined by the plurality of error correction syndrome values and modifying 808 selected according to a bit correction mask determined by a -th error correction syndrome value among the plurality of error correction syndrome values.

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 r 1". for example, the CRC calculation may include performing a logical XOR operation on a five-bit data codeword m13 with a five-bit binary expanded modular multiplication result of an integer j 13. the r 5 expansion syndrome value may be stored with a subsequent R78.

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 r 1. the index notation sequence inp [ ] denotes the currently processed input data, where inp [0 … 4] is the bit of m0, inp [5 … 9] is the bit of m1, … …, inp [145 … 149] is the bit of m29, ⊕ denotes the boolean exclusive or operator.

Figure BDA0002313310270000251

Figure BDA0002313310270000271

Figure BDA0002313310270000281

Figure BDA0002313310270000291

Figure BDA0002313310270000301

Figure BDA0002313310270000311

Figure BDA0002313310270000321

Figure BDA0002313310270000331

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.

Figure BDA0002313310270000341

Figure BDA0002313310270000351

Figure BDA0002313310270000361

Figure BDA0002313310270000371

Figure BDA0002313310270000381

Figure BDA0002313310270000391

Figure BDA0002313310270000401

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

45页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:语音信号处理装置、语音信号处理方法和语音信号处理程序

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!