MULTI-STAGE ENCODING AND MULTI-STAGE DECODING OF INFORMATION BITS

20250047411 ยท 2025-02-06

    Inventors

    Cpc classification

    International classification

    Abstract

    The present disclosure relates to a multi-stage encoder comprising m sub-encoders for encoding K information bits by means of m component codes, each component code being of length N, in a codeword having a total length of mN, wherein each of m, K and N is an integer, wherein mN and KN, and wherein the encoder is configured to: store the K information bits into a message u; divide the message u into m sub-information vectors u.sup.(i), i=1, . . . , m of length K.sup.(1), . . . , K.sup.(m), respectively, wherein K.sup.(1)+ . . . +K.sup.(m)=K; encode, by means of the m sub-encoders, each of the m sub-information vectors u.sup.(i) into m sub-codewords c.sup.(1), . . . , c.sup.(m); map the m sub-codewords c.sup.(1), . . . , c.sup.(m) into N symbols taken from 2.sup.m constellation points of a modulation format to form a vector x; label each of the N symbols into a string of m bits; and transmit the vector x through a communication channel.

    Claims

    1. A multi-stage encoder comprising m sub-encoders for encoding K information bits by means of m component codes, each component code being of length N, in a codeword having a total length of mN, wherein each of m, K and N is an integer, wherein mN and KN, and wherein the encoder is configured to: store the K information bits into a message u; divide the message u into m sub-information vectors u.sup.(i), i=1, . . . , m of length K.sup.(1), . . . , K.sup.(m), respectively, wherein K.sup.(1)+ . . . +K.sup.(m)=K; encode, by means of the m sub-encoders, each of the m sub-information vectors u.sup.(i) into m sub-codewords c.sup.(1), . . . , c.sup.(m); map the m sub-codewords c.sup.(1), . . . , c.sup.(m) into N symbols taken from 2.sup.m constellation points of a modulation format to form a vector x; label each of the N symbols into a string of m bits; and transmit the vector x through a communication channel.

    2. The encoder of claim 1, wherein the encoder is configured to label each of the N symbols into the string of m bits as follows: if a first constellation point A has coordinates (, ), determine a sign S.sub.A of the first constellation point A; assign a first bit value to a label of the point A as 0 or 1 depending on the sign S.sub.A; then, for i=1, . . . , m1 determine coordinates of a second constellation point A.sup.i=(.sup.i, .sup.i) on the basis of i+1 and a i.sup.th bit value, wherein the 1.sup.st bit value is the first bit value; determine a sign S.sub.Ai of the second constellation point A.sup.i; determine a (i+1).sup.th bit value on the basis of sign S.sub.Ai; and assign the (i+1).sup.th bit value to the label of the point A.

    3. The encoder of claim 2, wherein the coordinates (, ) and (.sup.i, .sup.i) are Cartesian coordinates.

    4. The encoder of claim 2, wherein the encoder is further configured to determine the sign S.sub.A of the first constellation point A on the basis of the following formula: s A = sign ( ( [ + + d ] 2 d - d ) 2 + ( [ - ] 2 d - d ) 2 - ( [ + ] 2 d - d ) 2 - ( [ - + d ] 2 d - d ) 2 ) , wherein d is a distance of the constellation points.

    5. The encoder of claim 2, wherein, for i=1, the encoder is configured to calculate the coordinates (.sup.1, .sup.1) of the second constellation point A.sup.1 on the basis of the following formula: 1 = { + 2 if a = 0 , i is even + 2 if a = 0 , i is odd - 2 if a = 1 , i is even + 2 if a = 1 , i is odd , 1 = { - + d 2 if a = 0 , i is even - - d 2 if a = 0 , i is odd + + d 2 if a = 1 , i is even + - d 2 if a = 1 , i is odd wherein a represents a value of a previously assigned bit.

    6. The encoder of claim 1, wherein the constellation points are of a 2.sup.m quadrature amplitude modulation bi-dimensional modulation format, where m is an even number.

    7. A multi-stage decoder comprising m sub-decoders, the decoder being configured to: receive, over a communication channel (302), a vector y comprising a set of N symbols, wherein each of m and N is an integer and mN, wherein each received symbol y.sub.i.sup.(l) corresponds to one of a set of constellation points of a bi-dimensional modulation format, wherein the set of constellation points is divided into two subsets of constellation points including a first subset assigned to a bit of value 0 and a second subset assigned to a bit of value 1, such that a minimum distance d in the same subset is maximized, and wherein the vector y has coordinates (, ) and components y.sub.i.sup.(l), i=1, . . . , N, and l=1, . . . , m; determine a log-likelihood-ratio custom-character on the basis of a respective received symbol y.sub.i.sup.(l); determine a bit value on the basis of the log-likelihood-ratio l.sub.i.sup.(l) by means of a l-level sub-decoder; obtain a new symbol y.sub.i.sup.(l+1) for each symbol y.sub.i.sup.(l) on the basis of the bit value and by performing a transformation on the symbol y.sub.i.sup.(l), wherein the transformation comprises a rotation and a shift; determine a next log-likelihood-ratio custom-character on the basis of the new symbol y.sub.i.sup.(l+1); determine a next bit value on the basis of the next log-likelihood-ratio custom-character; and decode the vector y on the basis of the bit value and the next bit value.

    8. The decoder of claim 7, wherein the constellation points are of a 2.sup.m quadrature amplitude modulation bi-dimensional modulation format, where m is an even number.

    9. The decoder of claim 7, wherein the decoder is configured to generate a decision grid as a Cartesian plane partition, wherein a center of a square of the decision grid represents a constellation symbol.

    10. The decoder of claim 7, wherein the decoder is further configured to calculate the new symbol y.sub.i.sup.(l+1) on the basis of the received symbol y.sub.i.sup.(l)=(, ), wherein (,) are coordinates of the received symbol y.sub.i.sup.(l), wherein, if l is odd, then: If the received symbol y.sub.i.sup.(l) has been decoded as a 0, then y i ( l + 1 ) = ( + 2 , - + d 2 ) ; If the received symbol y.sub.i.sup.(l) has been decoded as a 1, then y i ( l + 1 ) = ( - 2 , + + d 2 ) , and wherein, if l is even, then: If the received symbol y.sub.i.sup.(l) has been decoded as a 0, then y i ( l + 1 ) = ( + 2 , - - d 2 ) ; If the received symbol y.sub.i.sup.(l) has been decoded as a 1, then y i ( l + 1 ) = ( - 2 , + - d 2 ) .

    11. The decoder of claim 7, wherein the decoder is further configured to calculate the log-likelihood-ratio custom-character as: i ( l ) ( [ + + d ] 2 d - d ) 2 + ( [ - ] 2 d - d ) 2 - ( [ + ] 2 d - d ) 2 - ( [ - + d ] 2 d - d ) 2 4 2 , wherein [.Math.].sub.2d represents a modulo 2d truncation and represents a channel variance.

    12. A method for a multi-stage encoder comprising m sub-encoders for encoding K information bits by means of m component codes, each of length N, in a codeword having a total length of mN, wherein each of m, K and N is an integer, wherein mN and KN, and wherein the method comprises: storing the K information bits into a message u; dividing the message u into m sub-information vectors u.sup.(i), i=1, . . . , m of length K.sup.(1), . . . , K.sup.(m), respectively, wherein K.sup.(1)+ . . . +K.sup.(m)=K; encoding, by means of the m sub-encoders, each of the m sub-information vectors u.sup.(i) into m sub-codewords c.sup.(1), . . . , c.sup.(m); mapping the m sub-codewords c.sup.(1), . . . , c.sup.(m) into N symbols taken from 2.sup.m constellation points of a modulation format to form a vector x; labelling each of the N symbols into a string of m bits; and transmitting the vector x through a communication channel.

    13. The method of claim 12, wherein the step of labelling each of the N symbols into a string of m bits comprises: if a first constellation point A has coordinates (, ), determining a sign S.sub.A of the first constellation point A; assigning a first bit value to a label of the point A as 0 or 1 depending on the sign S.sub.A; then, for i=1, . . . , m1 determining coordinates of a second constellation point A.sup.i=(.sup.i, .sup.i) on the basis of i+1 and a i.sup.th bit value, wherein the 1st bit value is the first bit value; determining a sign S.sub.Ai of the second constellation point A.sup.i; determining a (i+1).sup.th bit value on the basis of sign S.sub.Ai; and assigning the (i+1).sup.th bit value to the label of the point A.

    14. The method of claim 13, wherein the coordinates (, ) and (.sup.i, .sup.i) are Cartesian coordinates.

    15. The method of claim 13, wherein the step of determining the sign S.sub.A of the first constellation point A comprises: determining the sign S.sub.A of the first constellation point A on the basis of the following formula: s A = sign ( ( [ + + d ] 2 d - d ) 2 + ( [ - ] 2 d - d ) 2 - ( [ + ] 2 d - d ) 2 - ( [ - + d ] 2 d - d ) 2 ) , wherein d is a distance of the constellation points.

    16. The method of claim 13, wherein the method further comprises, for i=1, calculating the coordinates (.sup.1, .sup.1) of the second constellation point A.sup.1 on the basis of the following formula: 1 = { + 2 if a = 0 , i is even + 2 if a = 0 , i is odd - 2 if a = 1 , i is even + 2 if a = 1 , i is odd , 1 = { - + d 2 if a = 0 , i is even - - d 2 if a = 0 , i is odd + + d 2 if a = 1 , i is even + - d 2 if a = 1 , i is odd wherein a represents a value of a previously assigned bit.

    17. The method of claim 12, wherein the constellation points are of a 2.sup.m quadrature amplitude modulation bi-dimensional modulation format, where m is an even number.

    Description

    BRIEF DESCRIPTION OF THE DRAWINGS

    [0088] The above described aspects and implementation forms of the present disclosure will be explained in the following description of specific embodiments in relation to the enclosed drawings, in which:

    [0089] FIG. 1 shows a schematic representation of an exemplary system comprising an encoder and a decoder;

    [0090] FIG. 2 shows a schematic representation of an exemplary system comprising an encoder and a decoder;

    [0091] FIG. 3 shows a schematic representation of a system comprising an encoder and a decoder according to an embodiment of this disclosure;

    [0092] FIG. 4 shows a labelling for a constellation according to an embodiment of this disclosure;

    [0093] FIG. 5 shows a labelling and a de-modulation example according to an embodiment of this disclosure;

    [0094] FIG. 6 shows a schematic representation of a checkerboard structure of a decision grid with constellation points according to an embodiment of this disclosure;

    [0095] FIG. 7 shows boundaries of different constellations over the decision grid according to an embodiment of this disclosure;

    [0096] FIG. 8 shows a labelling for a constellation according to an embodiment of this disclosure;

    [0097] FIG. 9 shows a labelling for a constellation according to an embodiment of this disclosure;

    [0098] FIG. 10 shows a method for a multi-stage encoder according to an embodiment of this disclosure; and

    [0099] FIG. 11 shows a method for a multi-stage decoder according to an embodiment of this disclosure.

    DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

    [0100] FIG. 3 shows a schematic representation of a system 300 comprising an encoder 301 and a decoder 303 according to embodiments of this disclosure, respectively.

    [0101] The multi-stage encoder 301 comprises m sub-encoders for encoding K information bits by means of m component codes. Each component code is of length N, in a codeword having a total length of mN, wherein each of m, K and N is an integer, and wherein mN and KN.

    [0102] The encoder 301 is configured to store the K information bits into a message u. Further, the encoder 301 is configured to divide the message u into m sub-information vectors u.sup.(i), i=1, . . . , m of length K.sup.(1), . . . , K.sup.(m), respectively, wherein K.sup.(1)+ . . . +K.sup.(m)=K. Then, the encoder 301 is configured to encode, by means of the m sub-encoders, each of the m sub-information vectors u.sup.(i) into m sub-codewords c.sup.(1), . . . , c.sup.(m), and to map the m sub-codewords c.sup.(1), . . . , c.sup.(m) into N symbols taken from 2.sup.m constellation points of a modulation format to form a vector x. Then, the encoder 301 is configured to label each of the N symbols into a string of m bits. Finally, the encoder 310 is configured to transmit the vector x through a communication channel 302.

    [0103] The encoder 301 may be further configured to label each of the N symbols into the string of m bits as follows: if a first constellation point A has coordinates (, ), the encoder 301 is configured to determine a sign S.sub.A of the first constellation point A, and to assign a first bit value to a label of the point A as 0 or 1 depending on the sign S.sub.A. Then, for i=1, . . . , m1, the encoder 301 is configured to determine coordinates of a second constellation point A.sup.i=(.sup.i, .sup.i) on the basis of i+1 and a i.sup.th bit value, wherein the 1.sup.st bit value is the first bit value, to determine a sign S.sub.Ai of the second constellation point A.sup.i, to determine a (i+1).sup.th bit value on the basis of sign S.sub.Ai, and to assign the (i+1).sup.th bit value to the label of the point A.

    [0104] In order to enable a low-complexity de-mapping at the receiver side, specifically the decoder 303, a labelling method can be used at the transmitting side, specifically the encoder 301 side. For example, given a constellation point, in the following, it is described how to assign to the constellation point a string of m bits. In particular, given a constellation point A with Cartesian coordinates (, ), its first bit value is assigned by checking the sign of A:

    [00010] s A = sign ( ( [ + + d ] 2 d - d ) 2 + ( [ - ] 2 d - d ) 2 - ( [ + ] 2 d - d ) 2 - ( [ - + d ] 2 d - d ) 2 )

    [0105] In the above formula, if s.sub.A is positive, the assigned bit is a 0, otherwise it is a 1. This formula is valid for all the bit levels.

    [0106] Next, for i=1, the coordinates of the second constellation point A.sup.1 can be calculated on the basis of both the bit value and the position of next bit to be calculated. If i represents the next bit position and a represents the value of the previous calculated bit, the Cartesian coordinates (.sup.1, .sup.1) of point A.sup.1 can be calculated as follows:

    [00011] 1 = { + 2 if a = 0 , i is even + 2 if a = 0 , i is odd - 2 if a = 1 , i is even + 2 if a = 1 , i is odd , 1 = { - + d 2 if a = 0 , i is even - - d 2 if a = 0 , i is odd + + d 2 if a = 1 , i is even + - d 2 if a = 1 , i is odd

    [0107] After moving, the sign s.sub.A1 is evaluated, in order to assign the value of the next bit, and then point A.sup.2 is calculated, and so on. The process ends when all the l bit values are assigned.

    [0108] To summarize, the proposed SP labelling for QAM constellation permits a low-complexity de-mapping for MLC decoding. The labelling can be stored for future transmissions.

    [0109] As an example, let us take a 16-QAM constellation and use the above-described method to retrieve the labelling depicted in FIG. 4. To begin with, let us consider the constellation point A depicted in FIG. 5(a), which has Cartesian coordinates

    [00012] ( - d 2 , 3 2 d ) ,

    where d is the distance of the constellation points. For this point:

    [00013] s A = sign ( ( [ 3 2 d - d 2 + d ] 2 d - d ) 2 + ( [ 3 2 d + d 2 ] 2 d - d ) 2 - ( [ 3 2 d - d 2 ] 2 d - d ) 2 - ( [ 3 2 d + d 2 + d ] 2 d - d ) 2 ) = + 1

    [0110] So the first bit is a 0. Afterwards, the encoder 301 can be configured to calculate the Cartesian coordinates of A.sup.1. In this case, a=0 and i=2, hence

    [00014] A 1 = ( 1 , 1 ) = ( + 2 , - + d 2 ) = ( d 2 , 3 2 d ) .

    [0111] This point is depicted in FIG. 5(b). In this FIG. 5(b), the achievable constellation points are only the 8 depicted, since each constellation point can be reached by two different 16-QAM constellation points. Now, in order to calculate the second bit of the labelling, the encoder 301 can be configured to calculate:

    [00015] s A 1 = sign ( ( [ 3 2 d + d 2 + d ] 2 d - d ) 2 + ( [ 3 2 d - d 2 ] 2 d - d ) 2 - ( [ 3 2 d + d 2 ] 2 d - d ) 2 - ( [ 3 2 d - d 2 + d ] 2 d - d ) 2 ) = - 1

    [0112] So the second bit is 1. In order to calculate the Cartesian coordinates of A.sup.2, a=1 and i=3, the encoder 301 can be configured to calculate:

    [00016] A 2 = ( 2 , 2 ) = ( 1 - 1 2 , 1 + 1 + d 2 ) = ( - d 2 , d 2 ) .

    [0113] Proceeding in this way, point A is labelled as 0111, as confirmed in FIG. 4. Similarly, considering the constellation point B depicted in FIG. 5(a), having Cartesian coordinates

    [00017] ( d 2 , - d 2 ) : s B = sign ( ( [ - d 2 + d 2 + d ] 2 d - d ) 2 + ( [ - d 2 - d 2 ] 2 d - d ) 2 - ( [ - d 2 + d 2 ] 2 d - d ) 2 - ( [ - d 2 - d 2 + d ] 2 d - d ) 2 ) = - 1

    [0114] So, having a=1 and i=2, then:

    [00018] B 1 = ( 1 , 1 ) = ( - 2 , + + d 2 ) = ( d 2 , d 2 )

    as depicted in FIG. 5(b). To find the value of the second bit, the encoder 301 can be configured to calculate:

    [00019] s B 1 = sign ( ( [ d 2 + d 2 + d ] 2 d - d ) 2 + ( [ d 2 - d 2 ] 2 d - d ) 2 - ( [ d 2 + d 2 ] 2 d - d ) 2 - ( [ d 2 - d 2 + d ] 2 d - d ) 2 ) = + 1

    [0115] So, the second bit is a 0. Since a=0 and i=3:

    [00020] B 2 = ( 2 , 2 ) = ( 1 + 1 2 , 1 - 1 - d 2 ) = ( d 2 , - d 2 ) .

    [0116] Proceeding with the proposed method, the point B is labelled as 1010.

    [0117] Once the vector x is obtained, it is transmitted over the communication channel 302 to the multi-stage decoder 303.

    [0118] The multi-stage decoder 303 comprises m sub-decoders. The decoder 303 is configured to receive, over the communication channel 302, a vector y comprising a set of N symbols, wherein each of m and N is an integer and mN. Each received symbol y.sub.i.sup.(l) corresponds to one of a set of constellation points of a bi-dimensional modulation format, wherein the set of constellation points is divided into two subsets of constellation points including a first subset assigned to a bit of value 0 and a second subset assigned to a bit of value 1, such that a minimum distance d in the same subset is maximized, and wherein the vector y has coordinates (, ) and components y.sub.i.sup.(l), i=1, . . . , N, and l=1, . . . , m.

    [0119] The decoder 303 is further configured to determine a log-likelihood-ratio custom-character on the basis of a respective received symbol y.sub.i.sup.(l), and to determine a bit value on the basis of the log-likelihood-ratio custom-character by means of a l-level sub-decoder. Further, the decoder 303 is configured to obtain a new symbol y.sub.i.sup.(l+1) for each symbol y.sub.i.sup.(l) on the basis of the bit value and by performing a transformation on the symbol y.sub.i.sup.(l), wherein the transformation comprises a rotation and a shift. Then, the decoder 303 is configured to determine a next log-likelihood-ratio custom-character on the basis of the new symbol y.sub.i.sup.(l+1), and to determine a next bit value on the basis of the next log-likelihood-ratio custom-character. Finally, the decoder 303 is configured to decode the vector y on the basis of the bit value and the next bit value.

    [0120] The above proposed SP labelling strategy reduces the LLRs calculation complexity at the decoder 303 (or generally the receiver side). The same constellation can be kept at every decoding level, while the received symbols are altered on the basis of the decisions taken during the decoding. In practice, after the decoding of a component code of a certain level, instead of deleting half of the constellation points, it is proposed to move the point representing the received symbol. In this way, the decoder 303 may not have to keep track of the sub-constellation points of every decoding level, but may simply modify the received symbol on the basis of the decoding result, while keeping always the same constellation. Of course, the number of constellation points is halved at every decoding level, however, only the boundary of the constellation changes, while the overall structure of the 0/1 checkboard structure remains the same (see FIG. 6).

    [0121] To start with, a decision grid may be created, namely a Cartesian plane partition having a checkboard structure. The centre of a square of the grid may represent a constellation symbol, which can be used to find the nearest constellation point. The structure of the proposed decision grid is depicted in FIG. 6, where dark grey area represent 0 and white area represent 1. Moreover, in FIG. 7, the boundaries of different QAM constellations, or alternatively for different decoding levels, are highlighted: the boundary of a level l constellation is given by a 2.sup.m-l QAM for a m levels MLC.

    [0122] Starting from a 2.sup.m-QAM bi-dimensional constellation, where m is even, with a minimum distance d, the following described how to move the received symbol y.sub.i=y.sub.i.sup.(1) at first level in order to obtain the new symbol y.sub.i.sup.(2) for the decoding of the second level code. Moving rules depend on the decision taken by the decoder 303: [0123] If the symbol y.sub.i.sup.(1) has been decoded as a 0, the point is first scaled by multiplying it by

    [00021] 1 2 , rotated clockwise by 45 and, when, shifted upwards by d/2. [0124] If the symbol y.sub.i.sup.(1) has been decoded as a 1, the point is first scaled by multiplying it by

    [00022] 1 2 , rotated counter clockwise by 45 and, then, shifted upwards by d/2.

    [0125] Following these rules, each component of the received vector y=y.sup.(1) can be moved, obtaining a new vector y.sup.(2) that can be used in the calculation of the LLRs for the decoding of the second level code. After the decoding, the points in y.sup.(2) will be moved again to obtain the vector y.sup.(3) to be used in next decoding step. The rules for the second level decoding are slightly different: overall, moving rules for even and odd levels are different. However, for levels of the same parity, the rules are always the same. In this case: [0126] If the symbol y.sub.i(2) has been decoded as a 0, the point is first scaled by multiplying it by

    [00023] 1 2 , shifted rightward by d/2, then, shifted downwards by d/2 and, finally, rotated clockwise by 45. [0127] If the symbol y.sub.i.sup.(2) has been decoded as a 1, the point is first scaled by multiplying it by

    [00024] 1 2 , shifted leftward by d/2, then shifted downwards by d/2 and, finally, rotated counterclockwise by 45.

    [0128] To summarize, the general rules to calculate the point or new symbol y.sub.i.sup.(l+1) from the previous level point or respective received symbol y.sub.i.sup.(l)=(, ) are the following:

    [0129] If l is odd, then: [0130] If the symbol y.sub.i.sup.(l) has been decoded as a 0, the point is first scaled by multiplying it by

    [00025] 1 2 , rotated clockwise by 45 and, then, shifted upwards by d/2, namely the new symbol is given by:

    [00026] y i ( l + 1 ) = ( + 2 , - + d 2 ) . [0131] If the symbol y.sub.i.sup.(l) has been decoded as a 1, the point is first scaled by multiplying it by

    [00027] 1 2 ,

    rotated counterclockwise by 45 and, then, shifted upwards by d/2, namely the new symbol is given by:

    [00028] y i ( l + 1 ) = ( - 2 , + + d 2 ) .

    [0132] If l is even, then: [0133] If the symbol y.sub.i.sup.(l) has been decoded as a 0, the point is first scaled by multiplying it by

    [00029] 1 2 , shifted rightward by

    [00030] d ( 2 ) l , then shifted downwards by d/2 and, finally, rotated clockwise by 45, namely the new symbol is given by:

    [00031] y i ( l + 1 ) = ( + 2 , - - d 2 ) . [0134] If the symbol y.sub.i.sup.(l) has been decoded as a 1, the point is first scaled by multiplying it by

    [00032] 1 2 , shifted leftward by

    [00033] d ( 2 ) l , then shifted downwards by d/2 and finally rotated clockwise by 45, namely the new symbol is given by:

    [00034] y i ( l + 1 ) = ( - 2 , + - d 2 ) .

    [0135] It is worth noticing that level rules may be swapped without changing the overall method, while obtaining a different labelling. For example, the rule for 0 can be applied if the symbol y.sub.i.sup.(l) has been decoded as a 1 and vice-versa. The proposed moving rules impose a labelling on the original QAM constellation. The constellation symbol to bit string mapping can be performed e.g. by running a hard-decision decoder following the moving rules and using the decision grid to assign bit values. FIGS. 4, 8 and 9 represent some embodiments of the proposed disclosure, namely the SP labelling for QAM constellations of different sizes induced by the above moving rules. In particular, FIG. 4 shows an example of SP labelling for a 16-QAM constellation, FIG. 8 shows an example of a SP labelling for a 4-QAM constellation and FIG. 9 shows an example of SP labelling for a 64-QAM constellation.

    [0136] In the following, a method for calculating the LLRs is presented. In this example, a decision grid is used, which is always the same and does not depend on the coding level. In fact, if the procedure to change the position of the received point or symbol described previously is applied, then the overall structure of the SP grid remains the same. At each level, the only thing that changes is the boundary of the constellation. If the point or symbol is inside the boundary, the low complexity LLR calculation method proposed in the following can be applied, otherwise the classical method based on finding the nearest constellation point can be used. The number of grid points included in the boundary depends on the decoding level, namely decoding level l includes 2.sup.l grid points. The shape of the boundary is given by the contour of a QAM constellation of 2.sup.l points.

    [0137] The decision grid has a checkerboard 0/1 structure, for example, resembles a checkboard having squares of side d. In the following, a decision grid giving the value of 0 to the square centered in point (d/2,d/2) is created. It is worth noticing that a different choice on the value provides a different labelling, however, without changing the overall idea. The described decision grid is depicted in FIG. 6. This design permits to use the same decision grid at every level, and to have a low-complexity formulation of LLR calculation. In fact, if the received point lays inside the level boundary, then the nearest constellation point can be calculated by mapping the received point to the center of the grid. For the points laying inside the boundaries of the decision grids depicted in FIG. 7, if y.sub.i.sup.(l)=(,), then, its LLR custom-character can be calculated as follows:

    [00035] i ( l ) ( [ + + d ] 2 d - d ) 2 + ( [ - ] 2 d - d ) 2 - ( [ + ] 2 d - d ) 2 - ( [ - + d ] 2 d - d ) 2 4 2

    [0138] In the above formula, [.Math.].sub.2d represents modulo 2d truncation. If the point lies outside the boundary, the common approximation described previously can be used. However, since the grid is the same at each level, only one set of constellation points should be stored at each level, reducing the storage requirements of the de-mapper.

    [0139] At the decoder 303, the proposed low-complexity de-mapper can be used. At level l, the symbol y.sub.i.sup.(l) may be used to calculate the LLR custom-character using the proposed decision grid mechanism. When all symbols LLRs are calculated, they may be given to the decoder of component code for level l. After component code decoding, a bit, representing hard-decision on the l-th bit of the symbol, is associated to each symbol y.sub.i.sup.(l). This bit is used, along with the parity of l, to calculate the new symbol y.sub.i.sup.(l+1), and the procedure is repeated until l=m.

    [0140] For example, at the decoder 303, let us suppose that d=2 and that a single point y having cartesian coordinates (1.77,2.40) has been received over an AWGN channel with variance .sup.2=0.7. This point is depicted in FIG. 5(a). In order to perform the demodulation of the first bit, if y.sub.1.sup.(l)=y, its LLR custom-character can be calculated as:

    [00036] 1 ( 1 ) ( [ - 2.4 - 1.77 + 2 ] 4 - 2 ) 2 + ( [ - 2.4 + 1.77 ] 4 - 2 ) 2 - ( [ - 2.4 - 1.77 ] 4 - 2 ) 2 - ( [ - 2.4 + 1.77 + 2 ] 4 - 2 ) 2 2.8 = - 0.64 .

    [0141] The LLR is negative. This value is given to the level-1 decoder, returning a value of 1. Now, the received point can be moved to:

    [00037] y = y 1 ( 2 ) = ( - 2 , + + d 2 ) = ( - 1.77 + 2.4 2 , - 1.77 - 2.4 + 2 2 ) = ( 0.31 , - 1.08 )

    [0142] As depicted in FIG. 5(b), its LLR can be evaluated as:

    [00038] 1 ( 1 ) ( [ - 1.08 + 0.31 + 2 ] 4 - 2 ) 2 + ( [ - 1.08 - 0.31 ] 4 - 2 ) 2 - ( [ - 1.08 + 0.31 ] 4 - 2 ) 2 - ( [ - 1.08 - 0.31 + 2 ] 4 - 2 ) 2 2.8 = - 0.9 .

    [0143] Again, the LLR is negative. After level-2 decoding, the second bit is evaluated as 1, and the point can be moved to:

    [00039] y = y 1 ( 3 ) = ( - 2 , + - d 2 ) = ( 0.31 + 1.08 2 , 0.31 - 1.08 - 2 2 ) = ( 0.69 , 1.38 ) .

    [0144] The demodulation process proceeds in this way until the level-4 code has been decoded.

    [0145] This SP labelling for QAM constellation permits a low-complexity de-mapping for MLC decoding. This is due to both using the same decision grid at each decoding level and calculation LLRs through a simple formula, not requiring to find the nearest constellation point. The performance of the LLR calculation is provably equivalent to the state-of-the-art minmax approach. A straight forward application for the proposed method is in the modulation of multi-level polar codes.

    [0146] In this disclosure, a novel QAM labelling method is proposed which is able to solve the two drawbacks discussed in a previous section. The proposed labelling has two peculiar features. First, the same sub-constellation is used at a given decoding level for all symbols, independently of the decisions taken on the already decoded bits. More precisely, a decision grid is imposed by the proposed labelling, which remains the same for each level independently from the decisions taken at the previous levels. This feature permits to avoid keeping track of de-mapper branching, namely on the sub-constellation of every partially decoded symbol. Second, the proposed labelling ensures a checkerboard 0/1 structure at every level for the leftmost bit. In practice, the leftmost bit symbol of the unique sub-constellation at a given level is the same for all the sub-constellations at every level. If only the leftmost symbol of a sub-constellation is taken into account, the same SP labelling is used at every level, where the number of points is halved at every decoding level. This permits to keep the LLR calculation complexity small by reducing the number of comparisons for LLR calculation.

    [0147] In other words, these two results are obtained by reversing the common de-mapping technique: while a standard de-mapper changes constellations while keeping the received symbol fixed, it is proposed, in this disclosure, to keep fix the constellation while changing the position of the received symbol. In practice, a received symbol is represented by a point in a Cartesian system, and de-mapping consists on finding the closest constellation point depicted in the same system. When a decision is taken on a bit of the received symbol, it is proposed to move the symbol through rotations and translations in order to find its place in the next level unique sub-constellation. These operations are simple to execute on hardware, resulting in a simpler de-mapping method compared to the state-of-the-art.

    [0148] FIG. 10 shows a schematic representation of a method 1000 for a multi-stage encoder 301 according to an embodiment.

    [0149] The multi-stage encoder 301 comprises m sub-encoders for encoding K information bits by means of m component codes, each of length N, in a codeword having a total length of mN. Each of m, K and N is an integer, wherein mN and KN. The method 1000 comprises a step 1001 of storing the K information bits into a message u, and a step 1002 of dividing the message u into m sub-information vectors u.sup.(i), i=1, . . . , m of length K(1), . . . , K(m), respectively, wherein K(1)+ . . . +K(m)=K. The method 1000 further comprises a step 1003 of encoding, by means of the m sub-encoders, each of the sub-information vectors u(i) into m sub-codewords c(1), . . . , c(m), and a step 1004 of mapping the m sub-codewords c(1), . . . , c(m) into N symbols taken from 2.sup.m constellation points of a modulation format to form a vector x. The method 1000 further comprises a step 1005 of labelling each of the N symbols into a string of m bits, and a step 1006 of transmitting the vector x through a communication channel.

    [0150] FIG. 11 shows a schematic representation of a method 1100 for a multi-stage decoder 303 according to an embodiment.

    [0151] The multi-stage decoder 303 comprises m sub-decoders. The method 1100 comprises a step 1101 of receiving 1101, over a communication channel 302, a vector y comprising a set of N symbols. Each of m and N is an integer and mN. Further, each received symbol yi(l) corresponds to one of a set of constellation points of a bi-dimensional modulation format, wherein the set of constellation points is divided into two subsets of constellation points including a first subset assigned to a bit of value 0 and a second subset assigned to a bit of value 1, such that a minimum distance d in the same subset is maximized. The vector y has coordinates (, ) and components yi(l), i=1, . . . , N, and l=1, . . . , m. Moreover, the method 1100 comprises a step 1102 of determining a log-likelihood-ratio custom-character on the basis of a respective received symbol yi(l), and a step 1103 of determining 1103 a bit value on the basis of the log-likelihood-ratio custom-character by means of a l-level sub-decoder. Further, the method 1100 comprises a step 1104 of obtaining a new symbol yi(l+1) for each symbol yi(l) on the basis of the bit value and by performing a transformation on the symbol yi(l), wherein the transformation comprises a rotation and a shift. The method 1100 also comprises a step 1105 of determining a next log-likelihood-ratio custom-character on the basis of the new symbol yi(l+1), a step 1106 of determining a next bit value on the basis of the next log-likelihood-ratio custom-character, and a step 1107 of decoding the vector y on the basis of the bit value and the next bit value.

    [0152] The present disclosure has been described in conjunction with various embodiments as examples as well as implementations. However, other variations can be understood and effected by those persons skilled in the art and practicing the claimed matter, from the studies of the drawings, this disclosure and the independent claims. In the claims as well as in the description the word comprising does not exclude other elements or steps and the indefinite article a or an does not exclude a plurality. A single element or other unit may fulfill the functions of several entities or items recited in the claims. The mere fact that certain measures are recited in the mutual different dependent claims does not indicate that a combination of these measures cannot be used in an advantageous implementation.