The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Polar codes are a class of error correcting codes, and can be employed to achieve the capacity of various communication channels. Construction of polar codes relies on a specific recursive encoding procedure. The recursive encoding procedure synthesizes a set of virtual channels from a plurality of usages of a transmission channel. The synthesized virtual channels tend to become either noiseless or completely noisy when the code length goes to infinity. This phenomenon is known as channel polarization. In their original construction, polar codes only allow code lengths that are powers of two. Puncturing techniques can be employed to modify polar codes in order to achieve any code length. In puncturing, one or more coded bits are selected and not transmitted.
Aspects of the disclosure provide a method for polar code puncturing. The method can include receiving a mother polar code including a sequence of coded bits, the sequence of coded bits having indices {0, . . . , N−1} and including at least a first block of coded bits having indices {0, . . . , i−1}, a second block of coded bits having indices {i, . . . ,i+k−1}, a third block of coded bits having indices {i+k, i+k+k−1}, interleaving the second block of coded bits with the third block of coded bits to form a rearranged sequence of coded bits including the N coded bits, and extracting the last M coded bits from the rearranged sequence of coded bits to generate a punctured code having a length of M.
In an embodiment, i=N/4, and i+k=N/2. In one example, the mother polar code is generated based on a generator matrix GN having a form of GN=, where denotes an n-th Kronecher product of a basis matrix
An embodiment of the method can further include receiving a polar code generated based on a generator matrix GN having a form of GN=BN, wherein BN denotes a bit-reversal permutation matrix, and F denotes an n-th Kronecher product of a basis matrix
and performing a bit-reversal permutation to the received polar code to generate the mother polar code. Another embodiment of the method can further include storing the rearranged sequence of coded bits in a buffer. Accordingly, the last M coded bits of the rearranged sequence of coded bits can be read from the buffer to generate the punctured code.
Aspects of the disclosure provide an apparatus for polar code puncturing. The apparatus can include an interleaving circuit and a bit selector circuit. The interleaving circuit can be configured to receive a mother polar code including a sequence of coded bits, the sequence of coded bits having indices {0, . . . , N−1} and including at least a first block of coded bits having indices {0, . . . , i−1}, a second block of coded bits having indices {i, . . . , i+k−1}, a third block of coded bits having indices {i+k, i+k+k−1}, and interleave the second block of coded bits with the third block of coded bits to form a rearranged sequence of coded bits including the N coded bits. The bit selector circuit can be configured to extract the last M coded bits from the rearranged sequence of coded bits to generate a punctured code having a length of M.
Aspects of the disclosure provide a second method for polar code puncturing. The method can include receiving a mother polar code including a sequence of coded bits generated from a polar encoder that encodes a sequence of input bits having indices {0, . . . , N−1} to generate the mother polar code according to a polar graph, wherein the mother polar code has a length of N, and N is 2 to the n-th power, and generating a punctured code including the sequence of coded bits excluding P number of punctured coded bits, wherein P=2q+p, q<=n−2, q is the largest exponent so that 0<=p<=2q−1. A first portion of the punctured coded bits can include coded bits in the polar graph directly connected to input bits having indices included in an index set A={0, . . . , 2q−1}.
Aspects of the disclosure provide a second apparatus for polar code puncturing. The apparatus can include a bit selector circuit. The bit selector circuit can be configured to receive a mother polar code including a sequence of coded bits generated from a polar encoder that encodes a sequence of input bits having indices {0, 1 . . . , N−1} to generate the mother polar code according to a polar graph, wherein the mother polar code has a length of N, and N is 2 to the n-th power. The bit selector can be further configured to generate a punctured code including the sequence of coded bits excluding P number of punctured coded bits, wherein P=2q+p, q<=n−2, q is the largest exponent so that 0<=p<=2q−1. A first portion of the punctured coded bits includes coded bits in the polar graph directly connected to input bits having indices included in an index set A={0, . . . , 2q−1}.
Various embodiments of this disclosure that are proposed as examples will be described in detail with reference to the following figures, wherein like numerals reference like elements, and wherein:
In one example, the wireless communication system 100 is a mobile communication network compliant with one of various wireless communication standards, for example, developed by the 3rd Generation Partnership Project (3GPP). The mobile device 110 can be a mobile phone, a lap top computer, a tablet computer, and the like. The base station 120 can include one or more antennas. The antennas can be employed to receive or transmit wireless signals to communicate with a plurality of mobile devices including the mobile device 110. Accordingly, the based station 120 can receive data from the mobile device 110 and transfer the data to another mobile device or another communication network, or vice versa.
In one example, the UL channel encoder 111 at the mobile device 110 is configured to perform channel coding with polar codes for transmission of control information from the mobile device 110 to the base station 120. The control information can be uplink control information generated at a physical layer or an upper layer of a protocol stack of the mobile device 110. As a result, blocks of uplink control information are each encoded into a polar code. In addition, the UL channel encoder 111 is configured to employ polar code puncturing techniques described in this disclosure to adjust lengths of the polar codes in order to match coded bits with allocated transmission resources. As an example, the transmission resources can be resource elements in a time-frequency resource grid of an orthogonal frequency division multiplexing (OFDM) modulation system. The UL channel decoder 121 at the base station 120 is configured to perform channel decoding as a counterpart of the UL channel encoder 111.
In operation, the mobile device 110 generates control information, such as the uplink control information, and performs a channel coding process for transmission of the control information. During the channel coding process, a block of information bits 113 of the control information can be received at the UL channel encoder 111. The UL channel encoder 111 can then employ a polar encoder to encode the block of information bits 113 into a polar code. Subsequently, the UL channel encoder 111 can employ the polar code puncturing techniques to extract a certain number of coded bits from the polar code according to allocated transmission resources. A punctured code 132 resulted from the puncturing operation can then be obtained and transmitted to the base station 120. At the UL channel decoder 121, the punctured code 132 can be received and processed, and decoded bits 123 corresponding to the information bits 113 can accordingly be generated.
The DL channel encoder 122 at the base station 120 and the DL channel decoder 112 at the mobile device 110 have similar functions and structures as the UL channel encoder 111 and the DL channel decoder 121, respectively, however, operating in an opposite direction. In operation, a block of information bits 124 can be generated at the base station 120 and encoded into a polar code at the DL channel encoder 122. After a polar code puncturing operation, a punctured code 134 can be extracted from the polar code. The punctured code 134 can then be received and processed at the DL channel decoder 112. Accordingly, decoded bits 114 corresponding to the information bits 124 can be obtained.
The apparatus 200 can be a mobile device, or a base station. The apparatus 200 can be configured to transmit data to a remote device, such as a mobile device or base station, through a wireless channel. The channel encoder 240 is configured to perform a channel coding process to encode to-be-transmitted data. The modulator 230 is configured to further process the encoded data to generate modulated signals. For example, interleaving, quadrature amplitude modulation (QAM) or quadrature phase shift keying (QPSK) modulation, antenna mapping, transmission resource mapping, and the like, can be performed at the modulator 230. The modulated signal can subsequently be transmitted to a remote device.
In one example, the polar encoder 210 is configured to encode information bits 201 into polar codes. Generally, polar codes can be constructed based on a specific recursive encoding procedure. During the recursive encoding procedures, a set of N virtual channels can be synthesized from N usages of a transmission channel W, where N denotes the code length of the polar codes. A successive cancellation (SC) decoder, for example, can be employed to reverse the recursive encoding procedure at a receiver end. When the code length N becomes larger, due to the channel polarization effect, a part of the bit channels becomes better with a gradually increased reliability, while the other part of the bit channels becomes worse with a gradually decreased reliability. The former bit channels can be referred to as good channels, while the latter bit channels can be referred to as bad channels. In one example, the polar encoder 210 uses a polar code length of N=1024 bits for encoding UL control information and a polar code length of N=512 bits for encoding DL control information.
Accordingly, an encoding strategy is to transmit information bits over the good channels while assigning fixed bit (referred to as frozen bits) to the bad channels. Specifically, in one example, reliabilities of the number of N bit channels can be calculated based on a channel condition of the transmission channel W. Based on the calculated reliabilities, the most reliable bit channels can be used for transmission of information bits while the least reliable bit channels can be set to a fixed value, for example, zero.
A polar code can be obtained by applying a linear transformation on a data vector (input bits vector) that contains both information bits and frozen bits. Specifically, the transformation can be represented as the following expression,
x
0
N−1
=u
0
N−1
G
N
=u
0
N−1
B
N
(1),
where x0N−1 denotes a polar code vector, ur denotes an input bits vector, BN denotes a bit-reversal permutation matrix, denotes a Kronecker product, denotes n-th Kronecher product of a basis matrix
N denotes the polar code length which is a power of 2, and n=log2N. In addition, GN is a square matrix and represents a generator matrix of the polar codes.
The input bits vector u0N−1=(u0, u1, . . . , uN−1) can include N input bits each having an index from 0 to N−1, referred to as an input bit index. With respect to the generator matrix GN, each input bit and the respective input bit index correspond to a row in the generator matrix GN. In addition, each bit channel or synthesized channel corresponds to a row in the generator matrix GN. Accordingly, each input bit corresponds to a bit channel. Thus, the input bit indices are also used for indexing the bit channels and the rows in the generator matrix in this detailed description.
In an example, a polar code has a codeword length of N=8. The input bits vector is u07=(u0, u1, . . . , u7). The input bits includes information bits with a length of K=4, and frozen bits with a length of F=4. Indices of the information bits are included in an information bits index set, {3, 5, 6, 7}, while indices of the frozen bits are included in a frozen bits index set, {0, 1, 2, 4}. Assuming the information bits set are {i1, i2, i3, i4}, and the frozen bits are set to 0, the input bits can accordingly be represented as follows,
u
0
7=(u0, u1, . . . , u7)=(0, 0, 0, i1, 0, i2, i3, i4).
At the polar encoder 210, positions for information bits and frozen bits among the input bits positions can first be determined. For example, reliabilities of bit channels for the polar encoding process can first be determined. The reliabilities can be calculated on line based on an estimated channel condition. Alternatively, reliabilities can be calculated off line for different channel conditions and stored in a memory, and retrieved according to a current estimated channel condition. In addition, the polar encoder 210 can receive a P number of frozen bit positions 204 determined at the rate matching module 220. Each of the received frozen bit positions can correspond to a punctured coded bit.
Assume the input bits length (the polar code length) for the polar coding is N corresponding to N input bits positions, and information bits length is K. Accordingly, the polar encoder 210 can then exclude the P frozen bit positions from the N input bits positions. Subsequently, the polar encoder 210 can select K positions among the left N-P input bits positions for information bits. The selected K positions correspond to bit channels having the highest reliabilities among bit channels corresponding to the left N-P input bits positions. Finally, the left N-P-K input bits positions can be determined to be the fixed bits position.
Based on the determined information bits and frozen bits positions, the polar encoder 210 can map the information bits to the input vector of the polar encoder 210. Subsequently, the input vector can be encoded into a polar code 202 based on a generator matrix GN. The polar code 202 has a length of N, and is later punctured at the rate matching module 220. Accordingly, the polar code 202 is referred to as a mother polar code or a mother code 202, and a code generated from the mother code 202 after the puncturing operation is referred to as a punctured code. The code length N of the mode code 202 is referred to as a mother code length.
The rate matching module 220 receives the mother code 202 and performs a puncturing process to generate a punctured code 203. The puncture controller 222 is configured to determine to-be-punctured bit positions 205 in the mother code 202. In one example, the determination process is based on the generator matrix GN, the mother code length N, and a punctured code length M. In one example, the punctured code length M is deteiinined at a component in the apparatus 200, for example, according to a channel condition of the transmission channel or allocation of transmission resources. In addition, the puncture controller 222 is also configured to determine the frozen bit positions 204. For polar codes, puncturing operations can affect reliabilities of bit channels. When an output bit in the mother code 202 is punctured, a bit channel associated with the punctured output bit becomes a bad channel. An input bit corresponding to this bad channel cannot be decoded at the receiver side. Thus, the input bit can be determined to be a frozen bit among input bits.
The bit selector 224 is configured to receive the mother code 202 and extract un-punctured bits from the mother code 202 to form the punctured code 203. The extraction can be based on information of to-be-punctured bit positions 205 received from the puncture controller 222. In one example, the to-be-punctured bit position information is represented as a puncture pattern. The puncture pattern can be expressed by a binary vector. For example, zeros in the puncture pattern vector can represent punctured bits positions, while ones can represent un-punctured bits positions. Further details of functions and structures of the rate matching module 220 are described below.
While the rate matching module 220 in
The polar graph 300A includes two input bits u0 and u1, represented by two circle 321-322, and two output bits x0 and x1, represented by two circles 341-342. The polar graph 300A illustrates an encoding process represented by the following expression,
At the same time, the polar graph 300A can illustrate a channel polarization process. Specifically, squares 301 and 302 can represent two virtual bit channels, an upper channel 301 and a lower channel 302, corresponding to the encoding process. The input bit u0 is transmitted through the upper channel 301; however, the transmission of u0 is interfered by the input bit u1. Accordingly, reliability of the upper channel 301 for transmission of the input bit u0 is decreased. In contrast, the input bit u1 is transmitted via the lower channel 302, however, the transmission of u1 is assisted by the upper channel 301 because part of u1 is transmitted via the upper channel 301. As a result, the upper channel 301 is degraded while the lower channel 302 is enhanced.
The polar graph 300B includes four input bits u0-u3, and four output bits x0-x3. The polar graph 300B illustrates an encoding process represented by the following expression,
As shown, the polar graph 300B uses the polar graph 300A as a building block for constructing the polar graph 300B. The polar graph 300B includes a first stage 361 and a second stage 362. Each stage 361-362 includes an upper block 371 or 373 and a lower block 372 or 374, respectively. The first stage upper block 371 uses upper channels of the second stage 362, while the first stage lower block 372 uses lower channels of the second stage 362. Thus, four bit channels are formed by the flowing four pairs of sub-bit channels shown in
Based on the above construction, eight bit channels are formed. For example, one of the eight bit channels is formed by concatenating three sub-bit channels 311, 312 and 313. Another one of the eight bit channels is formed by concatenating three sub-bit channels 314, 315 and 316. Each of the eight bit channels initiates from an input bits and ends at an output channel. Accordingly, an input bit associated with the respective bit channel is used for referring the respective bit channel. For example, the bit channel of 311-312-313 starts from the input bits u1, thus is referred to as bit channel u1.
When an output bit is connected with an input bit through one of the eight bit channels u0-u7, it is said the output bit is directly connected to the respective input bits. For example, the output bit x4 is directly connected to the input bit u1, while the output bit x3 is directly connected to the input bit u6. In addition, as shown in
The bit channels u0-u7 have polarized properties due to the polarization effect. Generally, for a given channel condition for transmitting the polar codes constructed based on a polar graph, upper bit channels associated with input bits near the top of the polar graph have worse reliabilities while lower bit channels associated with input bits near the bottom of the polar graph have better reliabilities. The lower bit channels' positions in the polar graph, the better the reliabilities of those bit channels. Thus, the lower input bits are preferred to be used as information bits while the upper input bits are used as frozen bits. An input bit used as an information bit is referred to as a good bit while an input bit used as a frozen bit is referred to as a bad bit. As an example, in
This first conventional puncturing strategy confines the puncturing impact to upper channels at the input side of the first stage blocks. As shown, in one example, the to-be-punctured bit length P equals 4, and accordingly the output bits x0-x3 are selected and punctured. As a result, the input bits u0, u2, u4, and u6, which are directly connected to the punctured output bits x0, x2, x1 and x3, respectively, through the bit channels u0, u2, u4, and u6, are impacted. Specifically, because the punctured bits are not transmitted, the bit channels corresponding to the punctured bits become unusable. Consequently, the input bits u0, u2, u4, and u6 cannot be decoded and are used as frozen bits.
Disadvantage of the first conventional puncturing strategy is that good bits, such as input bits u4 and u6, are dropped even with low to medium puncturing ratios. A puncturing ratio is defined as the ratio of a punctured bits length to a mother polar code length. When a transmission channel for transmission of polar codes has a low signal-to-noise ratio (SNR), a low code rate (the ratio between input bits length and punctured code length) can be adopted. For example, the low code rate adopted can be 1/5, 1/3, or 2/5. In this scenario, a number of information bits is relative fewer than with a high code rate, and good bit channels become critical for reliable transmission of the information bits. Therefore, performance of this first conventional puncturing strategy may suffer from early good bit loss leading to inferior performance for low code rate transmission.
Compared with the first conventional puncturing strategy, the second conventional puncturing strategy preserves good bits close to the bottom of the polar graph. However, for a high code rate adapted for a transmission channel with a higher SNR, such as a code rate 5/6 or 8/9, puncturing of good bits, such as input bits u4-u5, degrades the coding performance of the second conventional puncturing strategy.
According to an aspect of the disclosure, a strategy for the first puncturing technique is to consider impacts at both input bit side and output bit side when selecting to-be-punched bit channels. A bit channel connected to a to-be-punctured output bit is referred to as a to-be-punctured bit channel, and an input bit connected to a to-be-punctured bit channel is referred to as a to-be-punctured input bit. Thus, the strategy of the first puncturing technique can include: at the output bit side, preferably selecting to-be-punctured output bits that are positioned at upper channels of upper output blocks, while at the input bit side, preferably selecting upper input bits as to-be-punctured input bits.
In one example, a mother polar code length is N=2n, and a to-be-punctured bits length is M. M can be expressed in the following form,
M=2q+p,
where q<=n−2, and q is the largest exponent so that 0<=p<=2q−1. For example, for M=13, M can be expressed as M=23+5, where q=3 and p=5. Accordingly, based on the strategy of the first puncturing technique, a puncturing process implementing the first polar code puncturing technique can include the following steps:
At a first step, a first portion of 2q to-be-punctured output bits can be determined Specifically, the 2q to-be-punctured output bits can be selected to be the output bits directly connected to the input bits having indices included in the input bit index set A={0, . . . , 2q−1}. An example is shown in
At a second step, a second portion of the remaining p to-be-punctured output bits can be determined. Specifically, the p to-be-punctured output bits can be selected to be the output bits directly connected to the input bits having indices included in the input bit index set B={2q+q-bit bit reversal of 0, . . . , (p−1)}={2q+q-bit bit reversal of 0, 2q+q-bit bit reversal of 1, . . . , 2q+q-bit bit reversal of (p−1)}. Each element of the index set B equals a sum of 2q and one of a q-bit bit reversal of 0, . . . , (p−1). For example, in the example of the first step, q=2 and p=2. Accordingly, the q-bit bit reversal of 0, . . . , (p−1) is the 2-bit bit reversal of {00, 01}, or in the bit-reversed form, {00, 10}. Thus, the index set B equals {22+“00”, 22+“10”}={4, 6}, or {0100, 0110} in the n-bit binary form. Therefore, the input bits corresponding to the index set B are u4 and u6. By performing a 4-bit bit-reversal operation on the index set B, indices of the second portion of p to-be-punctured output bits can be determined to be {0010, 0110} corresponding to the output bits x2 and x6. At a third step, the input bits having indices included in the index set A∪B can be determined to be frozen bits.
Accordingly, a puncturing process implementing the second technique can include the following steps:
At a first step, the same operation as the first step of the first puncturing technique can be performed to determine a first portion of the to-be-punctured output bits. Using the same example as in
At a second step, when the code rate is above a threshold, the original second step of the first technique can be maintained and performed; when the code rate is below the threshold, the to-be-punctured bits are determined to be the output bits directly connected to the input bits having indices included in an input bit index set,
The first part of the index set B′, {2q+0, 2q+1, . . . , 2q+(p/2−1)}, includes p/2 number of input bits indices and corresponds to input bits adjacent to the to-be-punctured input bits u0-u3. The second part of the index set B′, {2n−1+0, 2n−1+1, . . . , 2n−1+(p/2−1)}, includes the other p/2 number of input bits indices and corresponds to input bits starting from the input bit of index 2n−1 and going downwards. In various example, when p/2 is not an integer, a floor or ceiling function can be employed to map p/2 to a closest integer.
At S1010, a set of parameters for determining to-be-punctured coded bits in a mother polar code can be received, for example, at the puncture controller 222 in
At S1020, a first portion of to-be-punctured coded bits is determined based the parameters, for example, by the puncture controller 222. In one example, the first portion of to-be-punctured coded bits is coded bits directly connected to input bits having the lowest indices. Specifically, the to-be-punctured coded bits length P can be represented in the form of P=2q+p, where q<=n−2, and q is the largest exponent so that 0<=p<=2q−1. Accordingly, there is 2q<=2n−2=N/4. With respect to the polar graph corresponding to the generator matrix GN, the first portion of to-be-punctured coded bits can be determined to be the coded bits that are directly connected to input bits having indices included in an input bit index set A={0, . . . , 2q−1}. Directly connection between an input bit and an output bit in the polar graph means the input bit and the output bit are connected via a virtual bit channel of the polar graph. For a generator matrix having a form of GN=BN, an index of an output bit directly connected to an input bit can be obtained be bit-reversing a binary index of this input bit.
At S1030, a second portion of to-be-punctured coded bits can be determined for example, by the puncture controller 222. In one example, among the second portion of p to-be-punctured coded bits, p/2 to-be-punctured bits are coded bits directly connected to p/2 input bits that are distributed in a partition of input bits having indices starting from N/2. Specifically, with respect to the polar graph corresponding to the generator matrix GN, the second portion of to-be-punctured coded bits can be determined to be the coded bits that are directly connected to input bits having indices included in an input bit index set B={2p+(0, . . . , p/2−1)}U{2n−1+(0, . . . , p/2−1)}={2q+0, 2q+1, . . . , 2q+(p/2−1)}U{2n−1+1, . . . , 2n−1+(p/2−1)}. Elements in the first part of the index set B, {2q+(0, . . . , p/2−1)}, are the input bits adjacent to the first portion of to-be-punctured coded bits determined at S1020. Elements in the second part of the index set B, {2n−1+(0, . . . , p/2−1)}, are the input bits starting from the input bit having an index of 2n−1=N/2 and going downward in the polar graph. In one example, the number of 2q input bits equals N/4. Accordingly, the input bits of the first part of the index set B have indices in {N/4+(0, . . . , p/2−1)}, while the input bits of the second part of the index set B have indices in {N/2+(0, . . . , p/2−1)}. Accordingly, the 2q input bits corresponding to the 2q to-be-puncture output bits are included in the first one-fourth of the N input bits, while the input bits of the first and second parts of the index set B are distributed in the second and third one-fourth of the N input bits.
At S1040, a mother code with length N generated from a polar encoder can be received, for example, at the bit selector 224 in
At S1050, a punctured code can be generated based on results of determinations at S1020 and S1030. For example, position information can be received from the puncture controller 222. The position information can be in the form of a sequence of indices indicating the to-be-punctured bits. Alternatively, the position information can be in a form of a binary pattern vector using zeros and ones indicating positions to be punctured. Based on the position information, the bit selector 224 can exclude the un-punctured bits from the mother code to output a punctured code. The process 1000 proceeds to S1099, and terminates at S1099.
The second type of polar graphs and generator matrices is equivalent to the first type of polar graphs and generator matrices in terms of property of polar codes generated respectively. The difference between the two types of coding manners is that for a same set of input bits, two sequences of output bits generated by the two types of encodings are arranged in a different order. Specifically, performing a bit-reversal permutation operation to one output sequence results in the other output sequence.
Accordingly, the polar code puncturing techniques described with reference to the first type of polar graphs are also applicable to polar graphs of the second type. For example, in the first and second puncturing techniques, to-be-punctured coded bits are determined with reference to indices of input bits that are directly connected to the to-be-punctured coded bits. However, reasoning for selection of those input bits is independent of what types of polar graphs are employed. Thus, using input bit indices to describe puncturing selections is a universal way over the two types of polar graphs. Specifically, for the second type of polar graphs, corresponding to an input bit, an output bit, which is directly connected to the input bit, is connected to the input bit by a horizontal line indicating a bit channel. Accordingly, an index of the output bit is the same as that of the respective input pit. Therefore, the first and second polar code puncturing techniques are applicable for both the first and second type of polar graphs and generator matrices.
Accordingly, at S1010 of the process 1000, information of the generator matrix can include type information of the generator matrix. Based on the type of the generator matrix, indices of to-be-puncture output bits can be obtained. For example, for a first type generator matrix having a form of GN=BN, to-be-punctured output bits indices can be obtained by bit-reversing indices of respective input bits directly connected to the to-be-punctured output bits. In contrast, for a second type generator matrix having a form of GN=, to-be-punctured output bits indices are the same as that of input bits directly connected to the to-be-punctured output bits. Alternatively, in one example, the rate matching module 220 in
The process 1200 corresponds to a special case of the process 1000 in
In
Further, corresponding to the above determination process where the first portion of to-be-punctured input bits correspond to the first input block TO, a rearrangement operation can be employed in order to facilitate extraction of the to-be-punctured output bits 1221, 1222, and 1223. Specifically, the output bits 1202 are rearranged into the rearranged output bits 1203. As shown, the output bits 1222-1223 in the output blocks B1 and B2 are interleaved with each other at the rearranged output bits 1203. Consequently, output bits in the two parts of to-be-punctured output bits 1222 and 1223 become contiguous to each other in an interleaved way forming a block of to-be-punctured coded bits 1232. Thus, a consecutive range 1233 having a length of P including the block B01231 and the block 1232 can be formed. The consecutive range 1233 includes the to-be-punctured output bits. As a result, in one example, when the rearranged output bits 1203 are stored in a memory, an extraction of output bits to form a punctured code becomes reading a consecutive range 1234 of output bits from the memory, leading to a simplified extraction operation.
Based on the above process 1200, the third polar code puncturing technique can be derived. Specifically, in one example of the third puncturing technique, when the number of to-be-punctured output bits, P, is smaller than the size of block B0 in the rearranged output bits 1203, the first P number of output bits in block B0 is punctured. In contrast, when the number of to-be-punctured output bits, P, is greater than the size of block B0, the first P number of output bits in the rearranged output bits 1203 can be punctured. Thus, the arrangement of output bits as shown at 1203 in
At S1310, a mother polar code is received. The mother code can be generated from a polar encoder based on a generator matrix GN= of the second type. Alternatively, for a polar code generated from a first type generator matrix having a form of GN=BN, a bit-reversal permutation can be performed to transform the polar code of the first type to the received mother code of the second type. The received mother code can include a sequence of coded bits. The sequence of coded bits can have indices in an index set {0, . . . , N−1}. In addition, the sequence of coded bits can include at least a first block having indices {0, . . . , i−1}, a second block having indices {i, i+k−1}, a third block having indices {i+k, i+k+k−1}. The second and third block both have a length of k.
At S1320, the second and third blocks are interleaved with each other to form a rearranged sequence of coded bits. For example, the rearranged sequence can be stored in a buffer.
At S1330, the last M coded bits are extracted from the rearranged sequence of coded bits to generate a punctured code having a length of M. For example, the last M coded bits can read from the buffer. The process 1300 proceeds to S1399 and terminates at S1399.
Specifically, the rate matching module 1420 can include a bit-reversal module 1422, an inter-leaver 1423, a rearranged output bits buffer 1425 and a bit selector 1424. The rate matching module 1420 is configured to receive a mother code 1402 of length N and accordingly generate a punctured code 1430 of length M. The bit-reversal module 1422 is configured to perform a bit-reversal permutation on the received mother code 1402 to generate a reordered mother code when the received mother code 1402 is generated based on a polar graph of the second type. The inter-leaver 1423 is configured to interleave two blocks of coded bits in the mother code 1402 or the reordered mother code to generate a sequence of rearranged output bits. The rearranged output bits buffer 1425 is configured to store the rearranged output bits corresponding. The bit selector 1424 is configured to exclude un-punctured output bits from the rearranged output bits buffer 1425 to generate the punctured code 1403.
In operation, the polar encoder 1410 performs polar encoding. In one example, the polar encoding is based on a first type of generator matrix having a form of GN=BN. Accordingly, the bit-reversed module 1422 can receive the mother code 1402 of the first type, and perform a bit-reversal permutation operation to reorder the mother code 1402. Alternatively, in another example, when the polar encoder 1410 performs polar encoding based on a second type of generator matrix having a form of GN=, no bit-reversal permutation operation is performed to the mother code 1402.
Subsequently, the inter-leaver 1423 can perform an interleaving operation. For example, the original mother code 1402 or the reordered mother code can include a sequence of output bits. The sequence of output bits can include at least a first, second and third successive blocks. The first block can include the first A number of output bits in the sequence. The second and third blocks can have a same length and each include B number of output bits in the sequence. Accordingly, the rate matching module 1420 can interleave the second and third blocks. As a result, a rearranged sequence can be created and stored into the rearranged output bits buffer 1425. The bit selector 1424 can subsequently read the last M number of output bits from the rearranged output bits buffer 1425 and output the M number of output bits as the punctured code 1403.
In various embodiments, the channel encoder 240 and 1440 in
While the rate matching module 1420 in
While aspects of the present disclosure have been described in conjunction with the specific embodiments thereof that are proposed as examples, alternatives, modifications, and variations to the examples may be made. Accordingly, embodiments as set forth herein are intended to be illustrative and not limiting. There are changes that may be made without departing from the scope of the claims set forth below.
This present disclosure claims the benefit of U.S. Provisional Application No. 62/335,858, “Rate Matching Design for Polar Codes” filed on May 13, 2016, and U.S. Provisional Application No. 62/455,054, “Unified Polar Code Rate-Matching Design” filed on Feb. 6, 2017, which are incorporated herein by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
62455054 | Feb 2017 | US | |
62335858 | May 2016 | US |