FORWARD ERROR CORRECTION WITH VARIABLE CODING RATE
20190334558 ยท 2019-10-31
Assignee
Inventors
- Luca Razzetti (Vimercate, IT)
- Giancarlo Gavioli (Vimercate, IT)
- Carlo COSTANTINI (Vimercate, IT)
- Davide CATTANEO (Vimercate, IT)
Cpc classification
H03M13/6516
ELECTRICITY
H04L1/00
ELECTRICITY
H03M13/114
ELECTRICITY
H04L1/005
ELECTRICITY
H03M13/1145
ELECTRICITY
H03M13/458
ELECTRICITY
International classification
H03M13/45
ELECTRICITY
Abstract
The application is related to a forward error correction mechanism in an optical coherent communication system (CS) comprising a FEC encoder (FE) and a FEC decoder (FD) on the basis of a low density parity check, LDPC, code. The FEC encoder encodes blocks of client bits into codewords by adding parity bits calculated by applying a FEC code to the client bits. Besides, the FEC decoder decodes each codeword by applying thereto an iterative message-passing algorithm, each iteration of the message-passing algorithm comprising evaluating a parity-check matrix defining the FEC code. At the FEC encoder, the coding rate of the FEC code may be varied by varying the number of client/information bits per codeword and/or the number of parity bits per codeword. At the FEC decoder, the parity-check matrix is evaluated column by column at each iteration of the message-passing algorithm. The decoder may be a belief propagation decoder. The computational complexity of the FEC decoder is advantageously weakly dependent and, in some cases, totally independent of the coding rate.
Claims
1. A method for implementing a forward error correction (FEC) mechanism in an optical coherent communication system (CS), said method comprising: a) at a FEC encoder (FE) of said system (CS), encoding blocks of n client bits to be transmitted into codewords of n+k bits by adding k parity bits calculated by applying a FEC code to said n client bits; and b) at a FEC decoder (FD) of said system (CS), decoding each codeword by applying thereto an iterative message-passing algorithm, each iteration of said message-passing algorithm comprising evaluating a parity-check matrix defining said FEC code, wherein step a) comprises varying a coding rate of said FEC code by varying said number n of client bits per codeword and/or by varying said number k of parity bits per codeword; and wherein step b) comprises, at each iteration of said message-passing algorithm, evaluating said parity-check matrix column by column.
2. The method according to claim 1, wherein step a) comprises reducing said coding rate from a maximum starting value R.sub.0, obtained by encoding blocks of n.sub.0 client bits into codewords of n.sub.0+k.sub.0 bits by adding k.sub.0 parity bits, to a new value R.sub.N<R.sub.0, obtained by encoding blocks of n.sub.N client bits into codewords of n.sub.N+k.sub.N bits by adding k.sub.N parity bits.
3. The method according to claim 2, wherein step a) comprises reducing said coding rate from said maximum starting value R.sub.0 to said new value R.sub.N<R.sub.0 by reducing the number of client bits per codeword from n.sub.0 to n.sub.N<n.sub.0.
4. The method according to claim 3, wherein step a) comprises applying an information shortening technique.
5. The method according to claim 2, wherein step a) comprises reducing said coding rate from said maximum starting value R.sub.0 to said new value R.sub.N<R.sub.0 by increasing the number of parity bits per codeword from k.sub.0 to k.sub.N>k.sub.0.
6. The method according to claim 3 or 4, wherein step a) comprises reducing said coding rate from said maximum starting value R.sub.0 to said new value R.sub.N<R.sub.0 by increasing the number of parity bits per codeword from k.sub.0 to k.sub.N>k.sub.0, and selecting n.sub.N and k.sub.N so that the number of bits per codeword is kept constant, namely n.sub.0+k.sub.0=n.sub.N+k.sub.N.
7. The method according to claim 5 or 6, wherein step a) comprises applying a code expanding technique.
8. The method according to any of the preceding claims, wherein at step b) said iterative message-passing algorithm is a belief propagation algorithm.
9. The method according to claim 8, wherein at step b) said belief propagation algorithm is a min-sum algorithm.
10. The method according to claim 8 or 9, wherein at step b) said message-passing algorithm comprises a number S2 of iterations, each iteration of said message-passing algorithm comprising, for each codeword: receiving a priori probabilities I.sub.v for said client bits and said parity bits of said codeword, v being an index ranging from 1 to n+k; receiving extrinsic information L.sub.cv(i1) for said client bits and said parity bits of said codeword as calculated at a preceding iteration of said message-passing algorithm, v being an index ranging from 1 to n+k and c being an index ranging from 1 to k.
11. The method according to claim 10, wherein at step b) each intermediate iteration of said message-passing algorithm comprises: calculating updated extrinsic information L.sub.cv(i) for said client bits and said parity bits of said codeword based on said a priori probabilities I.sub.v and said extrinsic information L.sub.cv(i1) calculated at said preceding iteration of said message-passing algorithm, v being an index ranging from 1 to n+k and c being an index ranging from 1 to k; and forwarding said a priori probabilities I.sub.v and said updated extrinsic information L.sub.cv(i) to a next iteration of said message-passing algorithm.
12. The method according to claim 11, wherein said calculating said updated extrinsic information L.sub.cv(i) comprises, for each one of n+k variable nodes representing a client bit or a parity bit of said codeword in a Tanner graph representing said FEC code: identifying a set M(v) of check nodes connected with said variable node in said Tanner graph; and calculating said updated extrinsic information L.sub.cv(i) as updated contents of variable-to-check messages L.sub.cv(i) from said variable node to the check nodes of said set M(v) by: for each check node of said set M(v), calculating a content of a check-to-variable message R.sub.cv(i) from said check node to said variable node based on contents of variable-to-check messages L.sub.cv(i1) from a set N(c) of variable nodes connected with said check node in said Tanner graph, as calculated at said preceding iteration of said message-passing algorithm; and calculating said updated contents of said variable-to-check messages L.sub.cv(i) from said variable node to the check nodes of said set M(v) based on said a priori probabilities I.sub.v and said contents of said check-to-variable messages R.sub.cv(i) from the check nodes of said set M(v) to said variable node.
13. The method according to claim any of claims 10 to 12, wherein at step b) a last iteration of said message-passing algorithm comprises: calculating a posteriori probabilities L.sub.v(i) for at least said client bits of said codeword, v being an index ranging from 1 to n+k; and forwarding said a posteriori probabilities L.sub.v(i) to a hard decision block using said a posteriori probabilities L.sub.v(i) for taking a decision 0 or 1 for each client bit of said codeword.
14. The method according to claim 13, wherein said calculating said a posteriori probabilities L.sub.v(i) comprises, for each one of n variable nodes representing a client bit of said codeword in said Tanner graph representing said FEC code: identifying a set M(v) of check nodes connected with said variable node in said Tanner graph; and calculating said a posteriori probabilities L.sub.v(i) by: for each check node of said set M(v), calculating a content of a check-to-variable message R.sub.cv(i) from said check node to said variable node based on contents of variable-to-check messages L.sub.cv(i1) from a set N(c) of variable nodes connected with said check node in said Tanner graph, as calculated at said preceding iteration of said message-passing algorithm; and calculating said a posteriori probabilities L.sub.v(i) based on said a priori probabilities I.sub.v and said contents of said check-to-variable messages R.sub.cv(i) from the check nodes of said set M(v) to said variable node.
15. An optical coherent communication system (CS) comprising: an optical transmitter (TX) comprising a FEC encoder (FE) configured to encode blocks of n client bits to be transmitted into codewords of n+k bits by adding k parity bits calculated by applying a FEC code to said n client bits; and an optical coherent receiver (RX) comprising a FEC decoder (FD) configured to decode each codeword by applying thereto an iterative message-passing algorithm, each iteration of said message-passing algorithm comprising evaluating a parity-check matrix defining said FEC code, wherein said FEC encoder (FE) is configured to vary a coding rate of said FEC code by varying said number n of client bits per codeword and/or by varying said number k of parity bits per codeword; and wherein said FEC decoder (FD) is configured to, at each iteration of said message-passing algorithm, evaluate said parity-check matrix column by column.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0071] Embodiments of the invention will be better understood by reading the following detailed description, given by way of example and not of limitation, to be read with reference to the accompanying drawings, wherein:
[0072]
[0073]
[0074]
[0075]
[0076]
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS OF THE INVENTION
[0077]
[0078] The communication system CS preferably comprises an optical transmitter TX, an optical coherent receiver RX and an optical link OL connecting the optical transmitter TX and the optical coherent receiver RX.
[0079] The optical transmitter TX is preferably configured to transmit a number M of client channels on the optical link OL, e.g. using a WDM (Wavelength Division Multiplexing) technique. For each client channel, the optical transmitter TX preferably comprises a cascade of components including a FEC encoder, a modulator and a laser source. For simplicity, in
[0080] The optical coherent receiver RX is configured to receive the M client channels from the optical link OL. For each client channel, the optical coherent receiver RX preferably comprises a cascade of components including an analog unit, an analog-to-digital converter and a digital unit. The digital unit is typically implemented as a DSP chip comprising at least a demodulator and a FEC decoder. For simplicity, in
[0081] At the transmitter TX, the FEC encoder FE is configured to apply a FEC code (preferably, an LDPC code) to the stream of client bits to be transmitted on its client channel. The stream of bits (client bits and parity bits) output by the FEC encoder FE is then fed to the modulator cascaded with the FEC encoder FC (not shown in
[0082] At the receiver RX, the analog unit (not shown in
[0083] By referring again to the FEC encoder FE, the FEC encoder FE is preferably configured to encode blocks of n client bits into codewords of n+k bits by adding k parity bits calculated according to k parity checks. The coding rate of the LDPC coding applied by the FEC encoder FC is therefore R=n/(n+k), as per equation [2] above.
[0084] Preferably, the coding rate of the FEC code applied by the FEC encoder FE is adjustable by adjusting the number of client bits per codeword and/or the number of parity bits per codeword. In particular, the coding rate of the FEC code applied by the FEC encoder FE is adjustable in a range having an upper limit R.sub.0 by: [0085] (i) reducing the number of client bits per codeword from a maximum value n.sub.0 to a new value n.sub.N<n.sub.0; and/or [0086] (ii) increasing the number of parity bits per codeword from a minimum value k.sub.0 to a new value k.sub.N>k.sub.0.
[0087] Preferably, the reduction of the number of client bits per codeword from n.sub.0 to the new value n.sub.N<n.sub.0 is performed by applying the known information shortening technique. Further, according to preferred embodiments, the increase of the number of parity bits per codeword from k.sub.0 to k.sub.N>k.sub.0 is performed by applying the known code expanding technique.
[0088] According to a first embodiment, the codeword rate of the LDPC code applied by the FEC encoder FE is reduced from R.sub.0 to R.sub.N by reducing the number of client bits per codeword from n.sub.0 to the new value n.sub.N<n.sub.0 by applying the known information shortening technique, without any constraint on the codeword length. The codeword length accordingly varies with the coding rate. In particular, when the coding rate is reduced from R.sub.0 to R.sub.N by reducing the number of client bits per codeword from n.sub.0 to n.sub.N, the codeword length is also reduced from (n.sub.0+k.sub.0) to (n.sub.N+k.sub.0).
[0089] According to this first embodiment, the coding rate may be varied in a range 0.6-0.8. For achieving still lower coding rates, the codeword length shall be kept constant, as it will be described in detail herein after.
[0090] As to the FEC decoder FD, it preferably comprises a number S2 of cascaded decoding blocks, each block being configured to perform a respective iteration of a message-passing algorithm, preferably a belief propagation algorithm. By way of non limiting example, the FEC decoder FD shown in
[0091] All decoding blocks DEC1, DEC2, DEC3 of the FEC decoder FD preferably have a same structure, which is schematically depicted in
[0092] The decoding block DECi preferably comprises a channel memory unit CM, a check node memory unit CNM and a processing unit PU.
[0093] The channel memory unit CM is preferably unidirectionally connected with the processing unit PU, while the check node memory unit CNM is preferably connected with the processing unit PU according to a feedback configuration.
[0094] The channel memory unit CM is preferably connected to a first input and to a first output of the decoding block DECi. The check node memory unit CNM is preferably connected to a second input of the decoding block DECi, while the processing unit PU is connected to a second output of the decoding block DECi.
[0095] Under the assumption that the FEC encoder FE is applying an LDPC code providing codewords with n client bits and k parity bits, the decoding block DECi implementing the i.sup.th iteration of the decoding algorithm preferably receives from the preceding decoding block: [0096] a priori probabilities I.sub.v (or channel probabilities) of all the codeword bits (client bits and parity bits) of a codeword as provided by the demodulator preceding the FEC decoder FD, v being an index ranging from 1 to n+k; and [0097] extrinsic information L.sub.cv(i1) for all the codeword bits as calculated by the preceding decoding block (namely, at the previous iteration of the algorithm), v being an index ranging from 1 to n+k and c being an index ranging from 1 to k. At the first decoding block DEC1, no extrinsic information is received (the FEC decoding is not started yet).
[0098] The decoding block DECi preferably stores the a priori probabilities I.sub.v in the channel memory unit CM and the extrinsic information L.sub.cv(i1) in the check node memory unit CNM.
[0099] Then, if DECi is not the last decoding block of the FEC decoder, its processing unit PU preferably uses the a priori probabilities I.sub.v and the extrinsic information L.sub.cv(i1) in order to calculate updated extrinsic information L.sub.cv(i) for the codeword bits. The decoding block DECi then preferably sends to the next decoding block: [0100] the a priori probabilities I.sub.v of the codeword bits; and [0101] the updated extrinsic information L.sub.cv(i) of the codeword bits. Otherwise, if DECi is the last decoding block of the FEC decoder FD, its processing unit PU preferably uses the a priori probabilities I.sub.v and the extrinsic information L.sub.cv(i1) in order to calculate a posteriori probabilities L.sub.v(i) for the codeword bits, in particular for the client bits of the codeword. The a posteriori probabilities L.sub.v(i) are then forwarded to a hard decision block.
[0102] According to a preferred embodiment, the a priori probabilities, extrinsic information and a posteriori probabilities of the codeword bits are expressed in terms of LLR, and the belief propagation algorithm implemented by the decoding block DECi is the known min-sum algorithm (MSA). Alternatively, the known sum-product algorithm (SPA) may be used.
[0103] In order to calculate the updated extrinsic information L.sub.cv(i) or the a posteriori probabilities L.sub.v(i) of the codeword bits, the processing unit PU of the decoding block DECi preferably scans the parity-check matrix defining the LDPC coding applied by the FEC encoder FE column by column.
[0104] More particularly, with reference to the flow chart of
[0105] Firstly, the processing unit PU preferably identifies the set M(v) of check nodes connected with the variable node v.sup.th in the Tanner graph (step 401).
[0106] Then, the processing unit PU preferably calculates the content of check-to-variable messages R.sub.cv(i) to be sent from the check nodes of the set M(v) to the variable node v.sup.th (step 402). According to a preferred embodiment, the content of the check-to-variable messages R.sub.cv(i) to be sent from check node c.sup.th of the set M(v) to the variable node v.sup.th is calculated according to the following equation:
where sgn() is the sign function, N(c) is the set of variable nodes connected with the check node c.sup.th in the Tanner graph, n is an index ranging within the set N(c) and L.sub.cn(i) with nEN(n) are the contents of variable-to-check messages (namely, the extrinsic information) sent by the variable nodes of the set N(c) to the check node c.sup.th at the i.sup.th iteration. If the processing unit PU is performing the first iteration of the decoding algorithm (namely, it is included in the decoding block DEC1), the contents of the variable-to-check messages L.sub.cn(0) to be used at step 402 are preferably initialized at the respective a priori probabilities I.sub.n, with n ranging in the set of variable nodes N(c) and n#v.
[0107] At step 402 the processing unit PU also preferably stores the calculated check-to-variable messages R.sub.cv(i) in the check node memory unit CNM.
[0108] Then, if DECi is not the last decoding block of the FEC decoder (403), its processing unit PU preferably calculates the content of variable-to-check messages L.sub.cv(i) (extrinsic information) to be sent from the variable node v.sup.th to the check nodes of the set M(v) (step 404). According to preferred embodiments, the content of the variable-to-check messages L.sub.cv(i) to be sent from variable node v.sup.th to check node c.sup.th of the set M(v) is calculated according to the following equation:
where I.sub.v is the a priori probability of the client bit or parity bit associated with variable node v.sup.th, is a scaling factor, m is an index ranging within the set of check nodes M(v) and R.sub.mv(i) are the contents of the check-to-variable messages sent by the check nodes of the set M(v) to the variable node v.sup.th as calculated at step 402.
[0109] At step 404 the processing unit PU also preferably stores the calculated extrinsic information L.sub.cv(i) in the check node memory unit CNM.
[0110] Otherwise if DECi is the last decoding block of the FEC decoder (403), its processing unit PU preferably calculates an a posteriori probability L.sub.v(i) of the codeword bit associated with the variable node v.sup.th (step 405). According to preferred embodiments, the updated a posteriori probability L.sub.v(i) is calculated according to the following equation:
[0111] Steps 401-405 are preferably iterated for each variable node of the Tanner graph, namely for each single bit of the codeword, independently of whether it is a client bit or a codeword bit. Hence, steps 401-405 are iterated n+k times, starting from an initial value 1 of the index v (step 400) and increasing it (step 406) until v=n+k (step 407).
[0112] Then, the algorithm iteration performed by the decoding block DECi ends. At the end of the algorithm iteration performed by the decoding block DECi, updated extrinsic information L.sub.cv(i) (intermediate decoding block) or a posteriori probability L.sub.v(i) (last decoding block) have been calculated by the processing unit PU for each codeword bit.
[0113] If DECi is not the last decoding block of the FEC decoder, the decoding block DECi may then send the calculated extrinsic information L.sub.cv(i) of the codewords bits to the next decoding block, which processes them by performing a further algorithm iteration similar to that shown in
[0114] If the decoding block DECi is instead the last decoding block of the FEC decoder (see block DEC3 in
[0115] As mentioned above, according to the first embodiment the coding rate of the LDPC code applied by the FEC encoder FE may be decreased from R.sub.0 to a lower value R.sub.N by reducing the number of client bits per codeword from n.sub.0 to n.sub.N using the known information shortening technique.
[0116] As to FEC decoder FD, the number of operations to be computed for each received codeword by each decoding block DECi (namely, at each iteration of the belief propagation algorithm) equals n+k, namely the number of codeword bits, each operation corresponding to a respective column of the parity-check matrix. The FEC decoder FD is therefore advantageously agnostic of the ratio between number of client bits and number of parity bits in the codewords and its variations related to changes in the coding rate.
[0117] Hence, the FEC decoder FD may be advantageously adapted to work at any coding rate with few changes in its configuration, without the need to change hardware and without any change in its power consumption.
[0118] In particular, as the coding rate is reduced from R.sub.0 to R.sub.N, in order to reconfigure the FEC decoder FD to operate at the new coding rate R.sub.N, in each decoding block DECi the addressing of the channel memory unit CM by the processing unit PU shall be changed as a function of the new codeword length, so that the processing unit PU may properly retrieve therefrom the a priori probabilities of each received codeword. On the other hand, in fixed client bitrate scenarios, as the coding rate is reduced from R.sub.0 to R.sub.N, the processing frequency of the processing unit PU adapts to the new line bitrate. As to the check node memory unit CNM of each decoding block DECi, its length depends exclusively on the number k of parity checks, and thus it does not change when the coding rate is reduced using the information shortening technique. Advantageously, these are the only changes needed in the configuration of the FEC decoder FD in order to enable it working at different coding rates.
[0119] As to the computational complexity of the FEC decoder FD, it can be expressed as:
where T is the codeword period, R is the coding rate of the LDPC code, f.sub.C is the client bitrate and f.sub.L is the line bitrate. The complexity of the FEC decoder FD therefore advantageously depends on the line bitrate f.sub.L.
[0120] Hence, as the coding rate is reduced from its maximum value R.sub.0 to R.sub.N using information shortening, the computational complexity of the FEC decoder FD scales with the coding rate as follows:
where f.sub.C0 and f.sub.L0 are the client bitrate and line bitrate at the original coding rate R.sub.0, whereas f.sub.CN and f.sub.LN are the client bitrate and line bitrate at the new, decreased coding rate R.sub.N<R.sub.0.
[0121] From equation [11] it is apparent that the computational complexity of the FEC decoder FD is independent or weakly dependent of the coding rate. This is because the computational complexity scales with the line bitrate f.sub.L, which is independent of the coding rate in fixed line bitrate scenarios and is weakly dependent of the coding rate in fixed client bitrate scenarios.
[0122] In particular, in scenarios where the client bitrate f.sub.C is fixed, the increase of the parity bitrate f.sub.P due to the decrease of the coding rate from R.sub.0 to R.sub.N results in an increased line rate from f.sub.L0 to f.sub.LN. However, when the coding rate is decreased from R.sub.0 to a certain value R.sub.N, the line bitrate f.sub.L is affected much less than the parity bitrate f.sub.P. Hence, by comparing equation [6] with equation [11], it is apparent that the computational complexity of the FEC decoder FD depends on the coding rate much more weakly than a row-layered FEC decoder.
[0123] In scenarios where the line rate f.sub.L is fixed (as in
[0124]
[0125]
[0126] Moreover, it shall be noticed that the calculation of check-to-variable messages and variable-to-check messages shown in
[0127] Therefore, in addition to having a computational complexity which weakly scales (or does not scale at all, if the line bitrate f.sub.L is fixed) with the coding rate, the FEC decoder FD also exhibits a computational complexity whose absolute value is comparable to that of a row-layered FEC decoder.
[0128] In the embodiment described above, the coding rate is reduced from R.sub.0 to R.sub.N by reducing the number of client bits per codeword from n.sub.0 to n.sub.N with no constrains on the resulting codeword length, which accordingly decreases from n.sub.0+k.sub.0 to n.sub.N+k.sub.0. The Applicant has noticed that this allows varying the coding rate in a range 0.6-0.8. However, for obtaining still lower coding rates (lower than 0.6, e.g. 0.5), the codeword length becomes short and some known limitations of the decoder performance (coding gain) inherent to the use of short codewords arise.
[0129] In order to reach coding rates lower than 0.6 while overcoming such limitations, according to a second embodiment of the present invention the coding rate of the LDPC code applied by the FEC encoder FE at the transmitter TX is varied while keeping the codeword length constant.
[0130] At this purpose, according to the second embodiment, the coding rate is adjusted by combining a reduction of the number of client bits per codeword from n.sub.0 to n.sub.N and an increase of the number of parity bits per codeword from k.sub.0 to k.sub.N, with the constraint that n.sub.0+k.sub.0=n.sub.N+k.sub.N.
[0131] Preferably, the number of client bits per codeword is reduced by applying the known information shortening technique, while the number of parity bits per codeword is increased by applying the known code expanding technique.
[0132] The FEC decoder according to the second embodiment has the same structure as the FEC decoder FD shown in
[0133] Therefore, also according to the second embodiment, FEC encoding with variable coding rate is combined with a FEC decoding evaluating the parity-check matrix column by column. Since the number of columns in the parity-check matrix depends on the codeword length, when the coding rate is changed while keeping the codeword length fixed the FEC decoder performs exactly the same number of operations per codeword period, at each iteration of the decoding algorithm. Hence, also according to the second embodiment the complexity of the FEC decoder scales with the coding rate as per equation [11] above.
[0134] Also this second embodiment may be applied either at a fixed line rate scenario or to a fixed client bitrate scenarios.