Concatenated and sliding-window polar coding
10312947 ยท 2019-06-04
Assignee
Inventors
Cpc classification
H03M13/09
ELECTRICITY
International classification
H03M13/00
ELECTRICITY
H03M13/39
ELECTRICITY
H03M13/29
ELECTRICITY
Abstract
Methods for encoding and decoding Polar codes are provided, together with apparatuses for performing the methods. An encoding method combines first and second sequences of information bits and CRC bits and a plurality of frozen bits into an input vector. The input vector is multiplied by a generator matrix for a Polar code to produce a concatenated codeword. A decoding method receives such a codeword and produces a decoded vector by generating successive levels of a decision tree. For a first number of levels of the decision tree, paths beyond a first maximum number of most probable paths are discarded. For a second number of levels of the decision tree, paths beyond a second maximum number of most probable paths are discarded. In some cases, the decoding method may have improved performance compared to some decoding methods for non-concatenated codewords.
Claims
1. A method for encoding and transmitting a first codeword comprising: with an encoder, processing K.sub.1 information bits to produce a u.sub.1-bit error-detecting code (EDC), wherein the K.sub.1 information bits are information bits of a first message; processing K.sub.2 information bits to produce a u.sub.2-bit EDC, wherein the K.sub.2 information bits are leading information bits of a second message; producing an input vector for polar encoding, the input vector including a first sequence of input bits, a second sequence of input bits, and a plurality of frozen hits, wherein the first sequence of input hits comprises the k.sub.1 information hits and the u.sub.2-bit EDC, the second sequence of input hits comprises the 1<2 information bits and the u.sub.2-bit EDC, Polar encoding the input vector to produce the first codeword; and Polar encoding the second message to produce a second codeword; with a transmitting device, transmitting, at a first power, the first codeword over a physical channel, the polar encoding being performed to improve a reliability of transmission of the input bits over the physical channel; with the transmitting device, transmitting, at a second power level, the second codeword, wherein the first power level is higher than the second power level.
2. The method of claim 1, wherein Polar encoding comprises multiplying the input vector by a generator matrix for a Polar code and wherein the generator matrix is an m-fold Kronecker product matrix G.sub.2.sup.m, where
3. The method of claim 1, wherein the u.sub.1-bit EDC and the u.sub.2-bit EDC are cyclic redundancy codes (CRC).
4. The method of claim 1, further comprising: with the encoder, processing a sequence of K.sub.3 information bits to produce a u.sub.3-bit EDC, wherein the produced input vector further comprises a third sequence of input bits, and the third sequence of input bits comprises the sequence of K.sub.3 information bits and the u.sub.3-bit EDC.
5. The method of claim 1, wherein the second message contains K3 information bits after the K2 information bits, and a u3-bit EDC generated from the K2 and the K3 information bits in combination.
6. The method of claim 1, further comprising with the transmitting device, transmitting the first codeword prior to transmitting the second codeword.
7. The method of claim 1, further comprising with the transmitting device, transmitting the first codeword in temporal proximity to transmitting the second codeword.
8. The method of claim 1, wherein the method is performed by a base station and wherein the first codeword is transmitted to a user equipment.
9. The method of claim 1 further comprising with the encoder, placing at least one of the u.sub.1-bit EDC or u.sub.2-bit EDCs is placed in bit positions of the input vector that satisfy a desired reliability criteria.
10. The method of claim 1 further comprising: placing the u.sub.1-bit EDC and K.sub.1 information bits in bit positions of a first group of bit positions of the input vector and placing the u.sub.2-bit EDC and K.sub.2 information bits in bit positions of a second group of bit positions of the input vector, wherein at least one of the u.sub.1-bit EDC and u.sub.2-bit EDC is placed in bit positions that satisfy a reliability criterion.
11. The method of claim 10 wherein the u.sub.1-bit EDC is placed in bit positions in the first group with a highest reliability and the K.sub.1 information bits are placed with a highest remaining reliability in the first group and wherein the u.sub.2-bit EDC is placed in bit positions of the second group with a highest reliability and the K.sub.2 information bits are placed in bit positions with a highest remaining reliability in the second group.
12. An apparatus comprising: an encoder configured to produce a first codeword by: processing K.sub.1 information bits to produce a u.sub.1 bit error-detecting, code (EDC), wherein the K.sub.1 information bits are information bits of a first message; processing K.sub.2 information bits to produce a u.sub.2-bit EDC, wherein the K.sub.2 information bits are leading information bits of a second message; producing an input vector for polar encoding, the input vector including comprising a first sequence of input bits, a. second sequence of input bits, and a plurality of frozen bits, wherein the first sequence of input bits comprises the K.sub.1 information bits and the ui-bit EDC, the second sequence of input bits comprises the K.sub.2 information bits and the u.sub.2-bit EDC, and Polar encoding the input vector to produce the first codeword; Polar encoding, the second message to produce a second codeword; and a transmitting device for transmitting, at a first power, the first codeword over a physical channel, the polar encoding being performed to improve a reliability of transmission of the input bits over the physical channel, and for transmitting, at a second power level, the second codeword, wherein the first power level is higher than the second power level.
13. The apparatus of claim 12, wherein the encoder is further configured to Polar encode by multiplying the input vector by a generator matrix for a Polar code, wherein the generator matrix is an m-fold Kronecker product matrix G.sub.2.sup.m, where
14. The apparatus of claim 12, wherein the u.sub.1-bit EDC and the u.sub.2-bit EDC are cyclic redundancy codes (CRC).
15. The apparatus of claim 12 wherein the encoder is further configured to: process a sequence of K.sub.3 information bits to produce a u.sub.3-bit EDC, wherein the produced input vector further comprises a third sequence of input bits, and the third sequence of input bits comprises the sequence of K.sub.3 information bits and the u.sub.3-bit EDC.
16. The apparatus of claim 12, wherein the second message contains K3 information bits after the K2 information bits, and a u3-bit EDC generated from the K2 and the K3 information bits in combination.
17. The apparatus of claim 12, wherein the transmitting device is further configured to transmit the first codeword prior to transmitting the second codeword.
18. The apparatus of claim 12, wherein the transmitting device is further configured to transmit the first codeword in temporal proximity to transmitting the second codeword.
19. The apparatus of claim 12 wherein the apparatus is implemented in a base station and wherein the transmitting device is configured to transmit the first codeword to a User Equipment (UE) device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Embodiments of the invention will be described in greater detail with reference to the accompanying drawings, in which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
DETAILED DESCRIPTION
(25)
(26)
Shown in 102 and the 3-fold Kronecker product matrix G.sub.2
104. This approach can be continued to produce m-fold Kronecker product matrix G.sub.2
.
(27) A Polar code can be formed from a Kronecker product matrix based on matrix G.sub.2. For a Polar code having codewords of length N=2.sup.m, the generator matrix for the Polar code is G.sub.2. An example using Kronecker product matrix G.sub.2
to produce codewords of length 8 is depicted in
204 as indicated at 200. (Alternatively, codeword x may be formed by the product of a Kronecker product matrix G.sub.2.sup.T
and input vector u as a column vector.) The input vector u is composed of frozen bits and information bits. In the specific example, N=8, so the input vector u is an 8 bit vector, and the codeword x is an 8-bit vector. The input vector has frozen bits in positions 0, 1, 2, and 4, and has information bits at positions 3, 5, 6, and 7. An example implementation of an encoder that generates codewords is indicated at 212, where the frozen bits are all set to 0. In the example encoder 212, the circle plus symbol represents modulo 2 addition. For the example of
(28) In Channel Polarization: A Method for Constructing Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels by E. Arikan, IEEE Transactions on Information Theory, vol. 55, no. 7 (July 2009) [Arikan], a theory relating to channel polarization of Polar codes was proved in section IV. Channel polarization is an operation which produces N synthetic channels from N independent copies of a binary-input discrete memoryless channel (B-DMC) such that, with increasing values of N, the new synthetic channels are polarized in the sense that their mutual information is either close to 0 (completely noisy channels) or close to 1 (perfectly noiseless channels). In other words, some bit positions of an input vector provided to an encoder will experience a completely noisy channel, i.e., have a relatively low reliability/low possibility to be correctly decoded when considered independently of other synthetic channels. Some bit positions of an input vector provided to an encoder will experience a very clean channel, i.e., have high possibility/high reliability to be correctly decoded when considered independently of other synthetic channels. In some cases, the reliability of a synthetic channel when considered independently of other synthetic channels may be referred to as the capacity of the synthetic channel. A specific example of a Polar code was described earlier in which the code is based on the m-fold Kronecker product of a specific matrix G.sub.2. The use of this generator matrix results in channel polarization. More generally, any generator matrix that produces a channel polarization effect will be referred to herein as a Polar code generator matrix.
(29) In Polar code construction, an attempt is made to put the information bits in the more reliable positions of an input vector, and to put frozen bits (i.e., bits already known to both encoder and decoder) in the more unreliable positions of the input vector. However, when information is transmitted over a physical channel, the reliability of a given bit position is also a function of the characteristics of the physical channel, such as the signal-to-noise ratio (SNR) and the bit error rate of the physical channel. In most applications, the frozen bits can be set to any value so long as the frozen bits sequence is known to both the encoder and the decoder. In conventional applications, the frozen bits are all set to zero.
(30) Error-detecting code (EDC) bits can be included in the input vector to assist in decoding. In exemplary embodiments, a cyclic redundancy check (CRC) code is used as the EDC code, However, it should be understood that other EDC codes may also be used in some embodiments, such as Fletcher checksums, and that error-correcting codes may be used as EDCs. For descriptive simplicity, the embodiments described in this specification will be described using a CRC code as the EDC code.
(31) CRC bits are generated based on the information bits being transmitted. CRC bits are generally placed in the more reliable positions in the input vector, although CRC bits may also be placed in other positions in the input vector. CRC bits may be added to improve Polar code performance for short to moderate codeword lengths. For a very long codeword length Polar encoder, CRC bits may not be needed to further improve Polar code reliability, but are included to aid in decoding. During encoding, an N-bit input vector is formed from K information bits, a u-bit CRC, and (NKu) frozen bits. An example is depicted in
(32) An example implementation of a Polar encoder including CRC bits is depicted in schematic form in
(33) The input vector used by an encoder to produce a codeword is sometimes referred to as a message. A codeword may be transmitted over a channel, and a receiver may, in turn, receive a received word. Due to channel effects such as the transmitted codeword being subjected to noise, the received word may not be identical to the transmitted codeword. A decoder attempts to decode the received word to determine information bits in the originally transmitted message.
(34) During decoding of a codeword encoded from an input vector, the locations and values of frozen bits in the input vector are treated as known. For descriptive simplicity, bits of the input vector that are not known to the decoder in advance will be referred to as unknown bits. For example, the information bits and the CRC bits are unknown bits. A characteristic of some Polar decoders is that the unknown bits are decoded sequentially, for example the Polar decoding algorithm may be based on successive cancellation. Once a particular decision has been made regarding how an unknown bit is to be decoded, that bit does not, in such Polar decoders, have the chance to be changed or corrected, and the decoder moves on to decoding the next unknown bit. In other words, there is no going back. A bit that was set at step i cannot be changed at step j>i. In addition, knowledge of the value of subsequent frozen bits is not taken into account, i.e., subsequent frozen bits, even though known to the decoder, will not help decode the current unknown bit.
(35) In Arikan, a successive-cancellation algorithm is described for decoding Polar codes. Another type of Polar decoding algorithm with greater space efficiency and lower time complexity, referred to as a List decoder, is described in List Decoding of Polar Codes by Tal and Vardy, Proceedings of the 2011 IEEE international Symposium on Information Theory, pp. 1-5 (July 2011). In a List decoder, successive levels of a binary decision tree are generated, each level corresponding to a decision on a respective unknown bit. Each path in the decision tree from the root node to leaf nodes represents a possible partial decoded sequence of unknown bits and has a corresponding likelihood. The decision tree is generated in a breadth-first manner. During generation of the decision tree, at each level of the decision tree where the number of paths grows beyond a set threshold L, the L paths having the highest likelihood are identified, and the remaining paths are discarded, if the codeword includes encoded CRC bits for the previous information bits, once the decision tree is generated, each of the surviving paths that correspond to the decoded information bits is checked against the CRC bits represented in each of the surviving paths. The decoder then outputs as a decoded vector the information bits in the surviving path that passes the CRC check. If more than two paths pass the CRC check, the decoder selects for output the path that passes the CRC check and has the highest likelihood, that is, the survivor that passes the CRC check with the highest likelihood according to a metric. If no path passes the CRC check, or if the codeword does not include encoded CRC bits, the decoder selects for output the path that has the highest likelihood that is, the survivor with the highest likelihood according to a metric.
(36)
(37) In some communication applications, codewords are transmitted over a channel in units referred to as blocks. Blocks may be transmitted sequentially or in parallel. Some example block sizes are 1024 bits (1K), 2048 bits (2K), 4096 bits (4K), and 8192 bits (8K), although other block sizes are possible. In some communication applications, it is desirable for block sizes to not exceed certain sizes due to processing latency issues.
(38)
(39) The first sequence of input bits 650 is processed by a Polar encoding process to generate a first codeword 622 of length N. The second sequence of input bits 652 is processed by a Polar encoding process to generate a second codeword 624 of length N. The Polar encoding process for the first sequence of input bits 650 comprises a step 640 of inserting frozen bits into the first sequence of input bits 650 to produce a first input vector 690 of length N, and then multiplying 660 the first input vector 690 by a Polar code generator matrix, as described above with respect to
(40)
(41) The concatenated sequence 754 is processed by a Polar encoding process to generate a codeword 720 of length N. The Polar encoding process comprises a step 740 of inserting frozen bits into the concatenated sequence 754 to produce an input vector 790 of length N, and then multiplying 760 the input vector by a Polar code generator matrix, as described below with respect to
(42) In some embodiments, K.sub.1 and K.sub.2 are equal and u.sub.1 and u.sub.2 are equal. In such embodiments, the Polar encoding is referred to herein as symmetric concatenated Polar coding, or alternatively as symmetric block-combined Polar coding. The codeword 720 is referred to herein as a symmetric concatenated codeword, or alternatively as a symmetric block-combined codeword. Although
(43)
(44) The method then proceeds to step 804, where an input vector of size N, where N is a power of 2, is produced by combining all of the following: a first sequence of input bits that includes the K.sub.1 information bits and the u.sub.1-bit EDC, a second sequence of input bits that includes the K.sub.2 information bits and the u.sub.2-bit EDC, and a plurality of frozen bits for a Polar code. The input vector is produced so that the first sequence of input bits occurs in the input vector prior to the second sequence of input bits. The positions of the bits of the u.sub.1-bit EDC within the first sequence of input bits, the positions of the bits of the u.sub.2-bit EDC within the second sequence of input bits, and the locations of the frozen bits are design choices that must be known to both the encoder and the decoder. In some embodiments, the positions of the u.sub.1bit EDC and the u.sub.2-bit EDC are predetermined or selected based on one or more computations of transmission reliability of synthetic channels of the Polar code corresponding to individual bit positions of the input vector. The computations may be made based on one or more assumptions about expected physical channel characteristics, such as assumed SNRs and/or assumed erasure probabilities in a BEC channel model. As such, the bit positions selected based on these computations may not be optimal for an actual physical channel being used for communication. In some embodiments, the EDCs are placed in individual bit positions of the input vector that correspond to synthetic channels meeting a reliability criterion. For example, in some embodiments, one or more of the EDCs are placed in individual bit positions of the input vector that correspond to synthetic channels computed to have at least a specified level of reliability under one or more assumed physical channel conditions. In some embodiments, the information bits are also placed in individual bit positions of the input vector that meet a reliability criterion. For example, the information bits may be placed in individual bit positions of the input vector that correspond to synthetic channels computed to have the highest remaining reliability under the one or more assumed physical channel conditions after the EDC bits have been placed. The frozen bits may be placed in individual bit positions of the input vector that are computed to have a low level of reliability under the assumed physical channel conditions.
(45) At step 808, the input vector is multiplied by a Polar code generator matrix to produce a codeword of length N. Finally, the codeword is either transmitted over a physical channel or stored at step 810.
(46)
(47) The x-axis of the graph of
(48) A point is plotted on the graph of
(49) In the example depicted in
(50) As noted previously, more than two sequences of input bits may be concatenated and then encoded into a combined codeword.
(51) The concatenated sequence 1056 is processed by a Polar encoding process to generate a codeword 1020 of length N. The Polar encoding process comprises a step 1040 of inserting frozen bits into the concatenated sequence 1056 to produce an input vector 1090 of length N, and then multiplying 1060 the input vector 1090 by a Polar code generator matrix, as described previously above, for example with respect to
(52) In some embodiments, not all of K.sub.1, K.sub.2, and K.sub.3 are equal. In such embodiments, the Polar encoding is referred to herein as asymmetric concatenated Polar coding, or alternatively as asymmetric block-combined Polar coding. The codeword 1020 produced is referred to herein as an asymmetric concatenated codeword, or alternatively as an asymmetric block-combined codeword. In some embodiments, K.sub.1 differs from K.sub.2. In some embodiments, K.sub.1, K.sub.2, and K.sub.3 all differ from each other. In some embodiments, K.sub.1+K.sub.2 is equal to K.sub.3 and u.sub.1+u.sub.2 is equal to u.sub.3. In an example embodiment where K.sub.1+K.sub.2 is equal to K.sub.3, the first sequence of input bits 1050 and the second sequence of input bits 1052 is generated by partitioning a sequence of K.sub.1+K.sub.2 information bits prior to calculating CRCs 1012 and 1014.
(53) In some cases, asymmetric concatenated Polar coding may facilitate distributing CRC bits in bit positions in the input vector that better satisfy a reliability criterion than symmetric concatenated Polar coding. Although
(54)
(55) During generation of the decision tree, for each of the first K.sub.1+u.sub.1+1 levels 1150 beginning with root node 1102, when the number of possible paths has grown greater than L.sub.1=32, the L.sub.1 paths having the highest likelihood have been identified, and the remaining paths have been discarded. At level K.sub.1+u.sub.1 (1110), the sequence of K.sub.1 information bits represented in each of the surviving paths has been evaluated against the u.sub.1-bit CRC in that path. The last node in the surviving path that passed this CRC check is shown as node 1112. Accordingly, the path from root node 1102 to node 1112 contains the decoded sequence of K.sub.1 information bits. The other paths at level K.sub.1+u.sub.1 (1110) are discarded.
(56) For each of the subsequent K.sub.2+u.sub.2 levels 1160 beginning with node 1112, when the number of possible paths has grown greater than L.sub.2=16, the L.sub.2 paths having the highest likelihood have been identified, and the remaining paths have been discarded. At level K.sub.1+u.sub.1+K.sub.2+u.sub.2 (1120), the sequence of K.sub.2 information bits represented in each of the surviving paths has been evaluated against the u.sub.2-bit CRC in that path. The last node in the surviving path that passed this CRC check is shown as node 1122. Accordingly, the path from node 1112 to node 1122 contains the decoded sequence of K.sub.2 information bits.
(57) It should be understood that the values of L.sub.1 and L.sub.2 illustrated in
(58)
(59)
(60) At step 1204, successive levels of a binary decision tree are generated, each level corresponding to a decision on a respective bit, where each path in the decision tree represents a possible partial decoded non-frozen bit sequence and has a corresponding likelihood.
(61) During the decision tree generation, at step 1206, for a first K.sub.1+u.sub.1 levels of the decision tree after the root, when a number of paths in the decision tree grows beyond a threshold L.sub.1, all but the most probable L.sub.1 paths are discarded. At step 1208, when level K.sub.1+u.sub.1 of the decision tree has been generated, the u.sub.1-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing a first sequence of K.sub.1 decoded bits to include in a decoded vector, and all other paths are discarded.
(62) In step 1210, for a second K.sub.2+u.sub.2 levels of the decision tree, when a number of paths in the decision tree grows beyond a threshold L.sub.2), all but the most probable L.sub.2 paths are discarded. At step 1212, when level K.sub.1+u.sub.1+K.sub.2+u.sub.2 of the decision tree has been generated, the u.sub.2-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing a second sequence of K.sub.2 decoded bits to include in the decoded vector, and all other paths are discarded.
(63) In some embodiments, L.sub.1 and L.sub.2 are equal. In some embodiments, L.sub.1 is greater than L.sub.2. In some embodiments, K.sub.1 is equal to K.sub.2.
(64) In some embodiments, where the input vector used for encoding the codeword also included a third sequence of input bits having K.sub.3 information bits and a u.sub.3-bit CRC, and where the second sequence of input bits occured in the input vector prior to the third sequence of input bits, the decoding method may continue generating the decision tree. For a third K.sub.3+u.sub.3 levels of the decision tree, when a number of paths in the decision tree grows beyond a threshold L.sub.3, all but the most probable L.sub.3 paths are discarded. When level K.sub.1+u.sub.1+K.sub.2+u.sub.2+K.sub.3+u.sub.3 of the decision tree has been generated, the u.sub.3-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing a third sequence of K.sub.3 decoded bits to include in the decoded vector.
(65) In some embodiments, L.sub.1 is equal to L.sub.2 and L.sub.2 is greater than L.sub.3. In some embodiments, L.sub.1 is greater than L.sub.2 and L.sub.2 is greater than L.sub.3.
(66) Some decoder embodiments output the decoded vector once the received word has been fully decoded. Other embodiments output each portion of the decoded vector as soon as each portion has been determined. For example, the first sequence of K.sub.1 decoded bits may be output after level K.sub.1+u.sub.1 of the decision tree has been generated and the CRC check for that level has been performed. Likewise, the second sequence of K.sub.2 decoded bits may be output after level K.sub.1+u.sub.1+K.sub.2+u.sub.2 of the decision tree has been generated and the CRC check for that level has been performed.
(67) In some embodiments, some decoding steps are performed in parallel.
(68) At step 1304, the received word is processed by generating first and second binary decision trees. The first and second binary decision trees are generated at least partly in parallel. In particular, at least a portion of the steps 1306 to 1308 and the steps 1310 to 1314 described below are performed in a manner that overlaps at least partly in time.
(69) During generation of the first decision tree, at step 1306, for a first K.sub.1+u.sub.1 levels of the first decision tree after the root of the first decision tree, when a number of paths in the first decision tree grows beyond a threshold L.sub.1, all but the most probable L.sub.1 paths are discarded. At step 1308, when level K.sub.1+u.sub.1 of the decision tree has been generated, the u.sub.1-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing a first sequence of K.sub.1 decoded bits to include in a decoded vector.
(70) During generation of the second decision tree, at step 1310, for a first R.sub.1 levels of the second decision tree after the root of the second decision tree, when a number of paths in the second decision tree grows beyond a threshold L.sub.2, all but the most probable L.sub.2 paths are discarded. At step 1312, for a subsequent R.sub.2 levels of the second decision tree, when a number of paths in the decision tree grows beyond a threshold L.sub.3, all but the most probable L.sub.3 paths are discarded. In some embodiments, at level K.sub.1+u.sub.1, the u.sub.1-bit CRC represented in each surviving path of the second decision tree is used to discard surviving paths not passing a CRC check with the u.sub.1-bit CRC, provided that at least one surviving path passes the CRC check. At step 1314, when level K.sub.1+u.sub.1+K.sub.2+u.sub.2 of the second decision tree has been generated, the u.sub.2-bit CRC represented in each respective surviving path of the second decision tree is used to determine a path of the surviving paths representing a second sequence of K.sub.2 bits to include in the decoded vector after the first sequence of K.sub.1 bits.
(71) In the method shown in
(72) In some embodiments, L.sub.2 is less than L.sub.3. That is, the second decision tree generation process can be said to start by retaining fewer survivors at early levels of the second decision tree and then ramp up to retaining more survivors at later levels. In some embodiments. R.sub.2 is equal to (K.sub.2+u.sub.2R.sub.1). That is, the ramp up occurs for the levels of the second decision tree that represent decisions for the K.sub.2 information bits and the u.sub.2-bit CRC.
(73) In some embodiments, the ramp up is performed in several stages. For example, the process of generating the second decision tree may begin with L=2, then transition to L=4, then transition to L=8. In some embodiments, a Polar decoder generates more than two decision trees in parallel, with the decision trees having differing configurations of ramp up stages.
(74)
(75)
(76) In a first stage 1422, the K.sub.1 information bits 1402 are decoded by generating the binary decision tree with a breadth threshold of L=8. That is, for a first K.sub.1+u.sub.1 levels of the decision tree after the root, when a number of paths in the decision tree grows beyond a threshold L=8, all but the most probable L paths are discarded. When level K.sub.1+u.sub.1 of the decision tree has been generated, the u.sub.1-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing the K.sub.1 decoded bits to include in a decoded vector, and all other paths are discarded.
(77) In a subsequent stage 1424, the decoder continues in the same manner to decode the K.sub.2 information bits 1404 by generating successive levels of the binary decision tree with a breadth threshold of L=4. The decoder then continues on in the same manner in a subsequent stage 1426 to decode the K.sub.3 information bits 1406 by generating successive levels of the binary decision tree with a breadth threshold of L=4. Finally, the decoder then continues on in the same manner in a subsequent stage 1428 to decode the K.sub.4 information bits 1408 by generating successive levels of the binary decision tree with a breadth threshold of L=2. In the illustrated example of sequential decoding, the processing latency 1470 for decoding all of the encoded information bits includes the time to perform stages 1422, 1424, 1426, and 1428 in sequence. It should be understood that the specific values of L selected for stages 1422, 1424, 1426, and 1428 are design choices, and that other values may be selected, for example based on desired accuracy and/or latency characteristics for the decoder.
(78)
(79) In a first set of operations 1432, the K.sub.1 information bits 1402 are decoded by generating a first binary decision tree with a breadth threshold of L=8. That is, for a first K.sub.1+u.sub.1 levels of the decision tree after the root, when a number of paths in the first decision tree grows beyond a threshold L=8, all paths except the most probable L paths are discarded. When level K.sub.1+u.sub.1 of the first decision tree has been generated, the u.sub.1-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing the K.sub.1 decoded bits to include in a decoded vector.
(80) In a second set of operations 1434, the K.sub.1 information bits 1402 are decoded in a ramp-up stage 1480 by generating a second binary decision tree with a breadth threshold where L is less than 4 for at least a portion of the first K.sub.1+u.sub.1 levels of the decision tree after the root. The second binary decision tree generation continues after the u.sub.1-bit CRC for the K.sub.1 information bits is checked and a surviving path is selected. The K.sub.2 information bits 1404 are subsequently decoded with the second decision tree using a breadth threshold of L=4. When level K.sub.1+u.sub.1+K.sub.2+u.sub.2 of the second decision tree has been generated, the u.sub.2-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing the K.sub.2 decoded bits to include in the decoded vector.
(81) In a third set of operations 1436, the K.sub.1 information bits 1402 and the K.sub.2 information bits 1404 are decoded in a ramp-up stage 1482 by generating a third binary decision tree with a breadth threshold where L is less than 4 for at least a portion of the first K.sub.1+u.sub.1+K.sub.2+u.sub.2 levels of the decision tree after the root. The third binary decision tree generation continues after the u.sub.2-bit CRC for the K.sub.2 information bits is checked and a surviving path is selected. The K.sub.3 information bits 1406 are subsequently decoded with the third decision tree using a breadth threshold of L=4. When level K.sub.1+u.sub.1+K.sub.2+u.sub.2+K.sub.3+u.sub.3 of the second decision tree has been generated, the u.sub.3-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing the K.sub.3 decoded bits to include in the decoded vector.
(82) In a fourth set of operations 1438, the K.sub.1 information bits 1402, the K.sub.2 information bits 1404, and the K.sub.3 information bits 1406 are decoded in a ramp-up stage 1484 by generating a fourth binary decision tree with a breadth threshold where L is less than 2 for at least a portion of the first K.sub.1+u.sub.1+K.sub.2+u.sub.2+K.sub.3+u.sub.3 levels of the decision tree after the root. The fourth binary decision tree generation continues after the u.sub.3-bit CRC for the K.sub.3 information bits is checked and a surviving path is selected. The K.sub.4 information bits 1408 are subsequently decoded with the third decision tree using a breadth threshold of L=2. When level K.sub.1+u.sub.1+K.sub.2+u.sub.2+K.sub.3+u.sub.3+K.sub.4+u.sub.4 of the second decision tree has been generated, the u.sub.4-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing the K.sub.4 decoded bits to include in the decoded vector.
(83) In the illustrated example of parallel decoding, the processing latency 1472 for decoding all of the encoded information bits includes the time to perform operations 1432, 1434, 1436, and 1438 in parallel. In the illustrated example, the processing latency 1472 is less than the processing latency 1470 shown in
(84)
(85) First, second, third, and fourth threads perform a first set of operations 1932, a second set of operations 1934, a third set of operations 1936, and a fourth set of operations 1938, respectively. If early termination is not performed, the sets of operations 1932, 1934, 1936, 1938 proceed as discussed above with respect to operations 1432, 1434, 1436, and 1438, respectively, of
(86) However, in some instances, early termination of some threads may be possible. This is because some information bits are decoded by more than one thread, some threads performing List-type decoding for the same information bits at different levels of complexity. For example, in the illustrated example, the first thread attempts to decode the K.sub.1 information bits 1402 using a breadth threshold of L=8. Attempts are also made to decode the K.sub.1 information bits 1402 by the second thread using L=4, by the third thread using L=2, and by the fourth thread using L=1. A particular thread may be early terminated by one of the higher numbered threads if any one of the higher numbered threads performs a CRC check that indicates that information bits being decoded by the particular thread have been successfully decoded.
(87) For example, if the fourth thread performs the CRC check 1996 and determines that the K.sub.1 information bits 1402 have been successfully decoded by the fourth thread, the fourth thread may cause the first thread to be terminated at time 1946. If the third thread performs the CRC check 1994 and determines that the K.sub.1 information bits 1402 have been successfully decoded by the third thread, the third thread may cause the first thread to be terminated at time 1944. If the second thread performs the CRC check 1992 and determines that K.sub.1 information bits 1402 have been successfully decoded by the second thread, the second thread may cause the first thread to be terminated at time 1942. If no early termination is performed, the decoded bits to include in the decoded vector corresponding to the. K.sub.1 information bits 1402 are not determined until CRC check 1990 has been completed by the first thread.
(88) Although specific examples of early termination are shown in
(89) In some embodiments, certain information bits may be repeated across more than one message being encoded into more than one codeword. In other words, another type of concatenation of information bits involves concatenating information bits across more than one message, thereby resulting in concatenating information bits across more than one codeword. By repeating certain information bits, it may be possible to reduce the error rate when communicating over a channel, improve the performance of a decoder, and/or reduce the complexity of the decoder.
(90)
(91) The first sequence of input bits 1554 comprises an original sequence of input bits 1550, the original sequence consisting of K.sub.1 information bits 1502 and a u.sub.1-bit CRC 1512 computed based on the K.sub.1 information bits 1502. The first sequence of input bits 1554 also comprises copied information bits 1520. The copied information bits 1520 are a duplicate of a subset 1506 of the second sequence of information bits 1504. The copied information bits 1520 consist of K.sub.2 information bits. Finally, the first sequence of input bits also comprises a u.sub.2-bit CRC 1522 computed based on the K.sub.2 information bits.
(92) The second sequence of input bits 1552 consists of K.sub.2+K.sub.3 information bits 1504 and a u.sub.3-bit CRC 1514 computed based on the K.sub.2+K.sub.3 information bits 1504. The K.sub.2 leading information bits 1506 of the K.sub.2+K.sub.3 information bits 1504 are identical to the copied information bits 1520. K.sub.3 information bits 1508 occur after the K.sub.2 leading information bits 1506 in the K.sub.2+K.sub.3 information bits 1504.
(93) In other words, the leading K.sub.2 information bits of the second sequence of input bits 1552 have been copied into the first sequence of input bits 1554. An encoder which copies a subset of information bits to be encoded in a successor codeword to a sequence of information bits to be encoded in a predecessor codeword is referred to herein as a sliding-window Polar encoder. Codes encoded with such an encoder are referred to herein as sliding-window Polar codes.
(94) The first sequence of input bits 1554 is processed by a Polar encoding process to generate a first codeword 1530 of length N. The second sequence of input bits 1552 is processed by a Polar encoding process to generate a second codeword 1532 of length N. The Polar encoding process for the first sequence of input bits 1554 comprises a step 1540 of inserting frozen bits into the first sequence of input bits 1554 to produce a first input vector 1590 of length N, and then multiplying 1560 the first input vector 1590 by a Polar code generator matrix to produce the first codeword 1530. The Polar encoding process for the second sequence of input bits 1552 comprises a step 1542 of inserting frozen bits into the second sequence of input bits 1552 to produce a second input vector 1592 of length N, and then multiplying 1562 the second input vector 1592 by a Polar code generator matrix to produce the second codeword 1532.
(95) In an example embodiment, K.sub.1 is equal to K.sub.2+K.sub.3 and u.sub.1 is equal to u.sub.3. In such an embodiment, more information bits are encoded in codeword 1530 than codeword 1532, resulting in a lower coding rate for codeword 1530. To compensate, in some embodiments, a power level at which codeword 1530 is transmitted is higher relative to a baseline power level and/or relative to a power level at which codeword 1532 is transmitted. Because some information bits encoded into codeword 1532 are also encoded in codeword 1530, an error rate for a given SNR for codeword 1532 after a decoding process may be improved, as explained below with respect to
(96) In some embodiments, the first codeword 1530 and the second codeword 1532 are generated by the same apparatus, for example a base station in communication with a user equipment (UE) device. However, the first codeword 1530 and the second codeword 1532 may also be generated by different apparatuses.
(97) In the example use case illustrated in
(98) The second base station 1612 transmits, over a backhaul connection to the first base station 1610, the leading K.sub.2 information bits of the sequence of K.sub.2+K.sub.3 information bits. The first base station 1610 then encodes the K.sub.1 and K.sub.2 information bits into the first codeword in the manner described above with respect to the first codeword 1530 of
(99) Turning now to decoding, suppose that first and second received words based on first and second sliding-window Polar coded codewords, respectively, are received, where the second codeword is successor of the first codeword. The first received word may be decoded by the methods explained above and illustrated, for example, in
(100) At step 1702, a second received word based on a second codeword is received, the second codeword containing a plurality of bits produced by multiplying a second input vector by a Polar code generator matrix, where the second input vector contained a third sequence of input bits and a plurality of frozen bits for the Polar code. The third sequence of input bits used for producing the second codeword contained the K.sub.2 information bits followed by K.sub.3 information bits and a u.sub.3-bit CRC. The positions of the bits of the u.sub.3-bit CRC within the third sequence of input bits and the locations of the frozen bits are known to both the encoder and the decoder.
(101) At step 1704, the u.sub.2-bit CRC is used to determine whether the K.sub.2 information bits in the first received word were successfully decoded. If the K.sub.2 information bits in the first received word were not successfully decoded, then the first received word is discarded and the second received word is decoded with a conventional Polar decoding technique, for example as described in steps 1204, 1206, and 1208 of
(102) At step 1708, successive levels of a second binary decision tree are generated, each level corresponding to a decision on a respective bit, where each path in the second decision tree represents a possible partial decoded non-frozen bit sequence and has a corresponding likelihood. During the generation of the second binary decision tree, the K.sub.2 information bits are treated as frozen bits.
(103) During the generation of the second binary decision tree, at step 1710, for K.sub.3+u.sub.3 levels of the second decision tree after the root, when a number of paths in the decision tree grows beyond a threshold L.sub.3, all but the most probable L.sub.3 paths are discarded. At step 1712, when level K.sub.3+u.sub.3 of the second decision tree has been generated, the u.sub.3-bit CRC represented in each respective surviving path is used to determine a path of the surviving paths representing a third sequence of K.sub.3 decoded bits, which are then included at step 1714 as the K.sub.3 bits after the initial K.sub.2 bits in the second decoded vector. All other paths are discarded.
(104) Since the decoding technique for the second received word makes use of information from the first received word, the decoder is referred to herein as a sliding-window Polar decoder.
(105) Because the described sliding-window Polar decoding technique may be able to treat the K.sub.2 information hits as frozen bits, and because bit positions further along an input vector tend to correspond to synthetic channels having higher reliability, in some cases a smaller value of L.sub.3 may be used in a sliding-window Polar decoder (compared to some Polar decoders that do not make use of information from the first received word) without substantially reducing the decoder's block error rate. In some cases, smaller values of L.sub.3 may result in improved decoding latency and/or improved decoding efficiency. In some embodiments, L.sub.1 is greater than L.sub.2. In some embodiments, L.sub.1 is greater than L.sub.3. In some embodiments, differing value of least one of L.sub.1, L.sub.2, and/or L.sub.3 may be used in the decoder depending on a power level at which the first codeword was transmitted and/or a power level at which the second codeword was transmitted.
(106) Turning now to example apparatuses for implementing the methods described above,
(107)
(108) In some embodiments, a non-transitory computer readable medium comprising instructions for execution by a processor may be provided to control the operation of encoder 1804 in
(109) The previous description of some embodiments is provided to enable any person skilled in the art to make or use an apparatus, method, or processor readable medium according to the present disclosure. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles of the methods and devices described herein may be applied to other embodiments. Thus, the present disclosure is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.