5.1a.1 General descriptions of channel coding functions
3GPP45.003GSM/EDGE Channel codingRelease 17TS
5.1a.1.1 Header
a) Parity bits
Given a block of N bits, {h(0),…,h(N-1)}, eight header parity bits {p(0),p(1),…,p(7)} are defined in such a way that in GF(2) the binary polynomial:
h(0)D8+N-1 +…+ h(N-1)D8 + p(0)D7 +…+ p(7), when divided by:
D8 + D6 + D3 + 1, yields a remainder equal to:
D7 + D6 + D5 + D4 + D3 + D2 + D + 1.
In case an eTFI field (see 3GPP TS 44.060) is included the three eTFI bits {et(0),et(1),et(2)} are added bit-wise modulo 2 to the last three parity bits {p(5), p(6),p(7)}. This results in the eight modified header parity bits {pt(0),…,pt(7)} defined as:
pt(k) = p(k) or k=0,…,4
pt(k) = et(k-5) + p(k) for k=5,…,7
The parity bits are added after the block of N bits, the result being a block of N+8 bits, {b(0),…,b(N+7)}, in case an eTFI field is not included, defined as:
b(k) = h(k) for k = 0,1,…,N-1
b(k) = p(k‑N) for k = N,…,N+7
In case an eTFI field is included, p(k) is replaced by pt(k) in the above operation.
b) Tail-biting convolutional encoder
Given the block of N+8 bits, {b(0),…,b(N+7)}, the six last bits are added before the block of N+8 bits, the result being a block of N+14 bits {c(‑6),…,c(0),c(1),…,c(N+7)} with six negative indexes:
c(k) = b(N+8+k) for k = -6,…,-1
c(k) = b(k) for k = 0,1,…,N+7
This block of N+14 bits {c(-6),…,c(0),c(1),…,c(N+7)} is encoded with the 1/3 rate convolutional mother code defined by the polynomials:
G4 = 1 + D2 + D3 + D5 + D6
G7 = 1 + D + D2 + D3 + D6
G5 = 1 + D + D4 + D6
This results in a block of 3(N+8) coded bits {C(0),…,C(3(N+8)-1)} defined by:
C(3k) = c(k) + c(k‑2) + c(k‑3) + c(k‑5) + c(k‑6)
C(3k+1) = c(k) + c(k‑1) + c(k‑2) + c(k‑3) + c(k‑6)
C(3k+2) = c(k) + c(k‑1) + c(k‑4) + c(k‑6) for k = 0,1,…,N+7
5.1a.1.2 Data encoded with convolutional code
a) Parity bits
Given a block of N bits, {i(0),…,i(N-1)}, twelve data parity bits {p(0),p(1),…,p(11)} are defined in such a way that in GF(2) the binary polynomial:
i(0)D12+N-1 +…+ i(N-1)D12 + p(0)D11 +…+ p(11), when divided by:
D12 + D11 + D10 + D8 + D5 + D4 + 1, yields a remainder equal to:
D11 + D10 + D9 + D8 + D7 + D6 + D5 + D4 + D3 + D2 + D + 1.
The parity bits are added after the block of N bits, the result being a block of N+12 bits, {b(0),…,b(N+11)}, defined as:
b(k) = i(k) for k = 0,1,…,N-1
b(k) = p(k‑N) for k = N,…,N+11
b) Convolutional encoding
Given the block of N+12 bits, {b(0),…,b(N+11)}, six tail bits equal to 0 are added to the block of N+12 bits, the result being a block of N+18 bits {c(0),…,c(N+17)}:
c(k) = b(k) for k = 0,1,…,N+11
c(k) = 0 for k = N+12,…,N+17 (tail bits)
This block of N+18 bits {c(0),…,c(N+17)} is encoded with the 1/3 rate convolutional mother code defined by the polynomials:
G4 = 1 + D2 + D3 + D5 + D6
G7 = 1 + D + D2 + D3 + D6
G5 = 1 + D + D4 + D6
This results in a block of 3(N+18) coded bits, {C(0),…,C(3(N+18)-1)}, defined by:
C(3k) = c(k) + c(k‑2) + c(k‑3) + c(k‑5) + c(k‑6)
C(3k+1) = c(k) + c(k‑1) + c(k‑2) + c(k‑3) + c(k‑6)
C(3k+2) = c(k) + c(k‑1) + c(k-4) + c(k-6) for k = 0,1,…,N+17; c(k) = 0 for k < 0
5.1a.1.3 Data encoded with turbo code
Given a block of N bits, {i(0),…,i(N-1)}, the following steps are taken:
5. 1a.1.3.1 Parity bits
Parity bits are added as defined in subclause 5.1a.1.2, the result being a block of N+12 bits, {b(0),…,b(N+11)}.
5.1a.1.3.2 Turbo encoding
The block of K=N+12 bits is encoded with a Turbo code. The input bits to the Turbo coder are defined as:
xi =b(i-1) for i=1,…,K
The output bits from the Turbo coder are defined as:
C(3i-3) = xi
C(3i-2) = zi
C(3i-1) = z‘i for i=1,…,K
and
C(3K+2i-2) = xK+i
C(3K+2i-1) = zK+i
C(3K+2i+4) = x‘K+i
C(3K+2i+5) = z‘K+i for i=1,2,3
where zi, z‘i and x‘i are defined below.
The scheme of Turbo coder is a Parallel Concatenated Convolutional Code (PCCC) with two 8-state constituent encoders and one Turbo code internal interleaver. The coding rate of Turbo coder is 1/3. The structure of Turbo coder is illustrated in figure 2a.
The transfer function of the 8-state constituent code for PCCC is:
G(D) = ,
where
G8(D) = 1 + D2 + D3,
G9(D) = 1 + D + D3.
The initial value of the shift registers of the 8-state constituent encoders shall be all zeros when starting to encode the input bits.
Output from the Turbo coder is
x1, z1, z‘1, x2, z2, z‘2, …, xK, zK, z‘K,
where x1, x2, …, xK are the bits input to the Turbo coder i.e. both first 8-state constituent encoder and Turbo code internal interleaver, and K is the number of bits, and z1, z2, …, zK and z‘1, z‘2, …, z‘K are the bits output from first and second 8-state constituent encoders, respectively.
The bits output from Turbo code internal interleaver are denoted by x‘1, x‘2, …, x‘K, and these bits are to be input to the second 8-state constituent encoder.
Figure 2a: Structure of rate 1/3 Turbo coder (dotted lines apply for trellis termination only)
5.1a.1.3.3 Trellis termination for Turbo coder
Trellis termination is performed by taking the tail bits from the shift register feedback after all information bits are encoded. Tail bits are padded after the encoding of information bits.
The first three tail bits shall be used to terminate the first constituent encoder (upper switch of figure 2a in lower position) while the second constituent encoder is disabled. The last three tail bits shall be used to terminate the second constituent encoder (lower switch of figure 2a in lower position) while the first constituent encoder is disabled.
The transmitted bits for trellis termination shall then be:
xK+1, zK+1, xK+2, zK+2, xK+3, zK+3, x‘K+1, z‘K+1, x‘K+2, z‘K+2, x‘K+3, z‘K+3.
5.1a.1.3.4 Turbo code internal interleaver
The Turbo code internal interleaver consists of bits-input to a rectangular matrix with padding, intra-row and inter-row permutations of the rectangular matrix, and bits-output from the rectangular matrix with pruning. The bits input to the Turbo code internal interleaver are denoted by , where K is the integer number of the bits.
The following subclause specific symbols are used in subclauses 5.1a.1.3.4.1 to 5.1a.1.3.4.3:
K Number of bits input to Turbo code internal interleaver
R Number of rows of rectangular matrix
C Number of columns of rectangular matrix
p Prime number
v Primitive root
Base sequence for intra-row permutation
qi Minimum prime integers
ri Permuted prime integers
Inter-row permutation pattern
Intra-row permutation pattern of i-th row
i Index of row number of rectangular matrix
j Index of column number of rectangularmatrix
k Index of bit sequence
5.1a.1.3.4.1 Bits-input to rectangular matrix with padding
The bit sequence input to the Turbo code internal interleaver is written into the rectangular matrix as follows.
(1) Determine the number of rows of the rectangular matrix R, such that:
.
The rows of rectangular matrix are numbered 0, 1, …, R – 1 from top to bottom.
(2) Determine the prime number to be used in the intra-permutation, p, and the number of columns of rectangular matrix, C, such that:
if (481 K
530) then
p = 53 and C = p.
else
Find minimum prime number p from table 0 such that
,
and determine C such that
.
end if
The columns of rectangular matrix are numbered 0, 1, …, C – 1 from left to right.
Table 0: List of prime number p and associated primitive root v
|
p |
v |
p |
v |
p |
v |
p |
v |
p |
v |
|---|---|---|---|---|---|---|---|---|---|
|
7 |
3 |
47 |
5 |
101 |
2 |
157 |
5 |
223 |
3 |
|
11 |
2 |
53 |
2 |
103 |
5 |
163 |
2 |
227 |
2 |
|
13 |
2 |
59 |
2 |
107 |
2 |
167 |
5 |
229 |
6 |
|
17 |
3 |
61 |
2 |
109 |
6 |
173 |
2 |
233 |
3 |
|
19 |
2 |
67 |
2 |
113 |
3 |
179 |
2 |
239 |
7 |
|
23 |
5 |
71 |
7 |
127 |
3 |
181 |
2 |
241 |
7 |
|
29 |
2 |
73 |
5 |
131 |
2 |
191 |
19 |
251 |
6 |
|
31 |
3 |
79 |
3 |
137 |
3 |
193 |
5 |
257 |
3 |
|
37 |
2 |
83 |
2 |
139 |
2 |
197 |
2 |
||
|
41 |
6 |
89 |
3 |
149 |
2 |
199 |
3 |
||
|
43 |
3 |
97 |
5 |
151 |
6 |
211 |
2 |
(3) Write the input bit sequence into the R
C rectangular matrix row by row starting with bit y1 in column 0 of row 0:
where yk = xk for k = 1, 2, …, K and if RC
K, the dummy bits are padded such that
for k = K + 1, K + 2, …, R
C. These dummy bits are pruned away from the output of the rectangular matrix after intra-row and inter-row permutations.
5.1a.1.3.4.2 Intra-row and inter-row permutations
After the bits-input to the RC rectangular matrix, the intra-row and inter-row permutations for the R
C rectangular matrix are performed stepwise by using the following algorithm with steps (1) – (6):
(1) Select a primitive root v from table 0 in section 5.1a.1.3.4.1, which is indicated on the right side of the prime number p.
(2) Construct the base sequence for intra-row permutation as:
, j = 1, 2,…, (p – 2), and s(0) = 1.
(3) Assign q0 = 1 to be the first prime integer in the sequence , and determine the prime integer qi in the sequence
to be a least prime integer such that g.c.d(qi, p – 1) = 1, qi > 6, and qi > q(i – 1) for each i = 1, 2, …, R – 1. Here g.c.d. is greatest common divisor.
(4) Permute the sequence to make the sequence
such that
rT(i) = qi, i = 0, 1, …, R – 1,
where is the inter-row permutation pattern defined as the one of the four kind of patterns, which are shown in table 0a, depending on the number of input bits K.
Table 0a: Inter-row permutation patterns for Turbo code internal interleaver
|
Number of input bits K |
Number of rows R |
Inter-row permutation patterns <T(0), T(1), …, T(R – 1)> |
|
(40 |
5 |
<4, 3, 2, 1, 0> |
|
(160 |
10 |
<9, 8, 7, 6, 5, 4, 3, 2, 1, 0> |
|
(2281 |
20 |
<19, 9, 14, 4, 0, 2, 5, 7, 12, 18, 16, 13, 17, 15, 3, 1, 6, 11, 8, 10> |
|
K = any other value |
20 |
<19, 9, 14, 4, 0, 2, 5, 7, 12, 18, 10, 8, 13, 17, 3, 1, 16, 6, 15, 11> |
(5) Perform the i-th (i = 0, 1, …, R – 1) intra-row permutation as:
if (C = p) then
, j = 0, 1, …, (p – 2), and Ui(p – 1) = 0,
where Ui(j) is the original bit position of j-th permuted bit of i-th row.
end if
if (C = p + 1) then
, j = 0, 1, …, (p – 2). Ui(p – 1) = 0, and Ui(p) = p,
where Ui(j) is the original bit position of j-th permuted bit of i-th row, and
if (K = RC) then
Exchange UR-1(p) with UR-1(0).
end if
end if
if (C = p – 1) then
, j = 0, 1, …, (p – 2),
where Ui(j) is the original bit position of j-th permuted bit of i-th row.
end if
(6) Perform the inter-row permutation for the rectangular matrix based on the pattern ,
where T(i) is the original row position of the i-th permuted row.
5.1a.1.3.4.3 Bits-output from rectangular matrix with pruning
After intra-row and inter-row permutations, the bits of the permuted rectangular matrix are denoted by y‘k:
The output of the Turbo code internal interleaver is the bit sequence read out column by column from the intra-row and inter-row permuted R C rectangular matrix starting with bit y‘1 in row 0 of column 0 and ending with bit y‘CR in row R – 1 of column C – 1. The output is pruned by deleting dummy bits that were padded to the input of the rectangular matrix before intra-row and inter row permutations, i.e. bits y‘k that corresponds to bits yk with k > K are removed from the output. The bits output from Turbo code internal interleaver are denoted by x‘1, x‘2, …, x‘K, where x‘1 corresponds to the bit y‘k with smallest index k after pruning, x‘2 to the bit y‘k with second smallest index k after pruning, and so on. The number of bits output from Turbo code internal interleaver is K and the total number of pruned bits is:
R C – K.
5.1a.1.3.5 Turbo code puncturing
This section defines the generation of the puncturing sequences for Turbo coded schemes. The process is defined in 6 parts.
Section 5.1a.1.3.5.1 describes the notation used.
Section 5.1a.1.3.5.2 defines setup of the length parameters based on the properties of each Modulation and Coding scheme.
Section 5.1a.1.3.5.3 defines the modification of the parameters to handle the support of a PAN field.
Section 5.1a.1.3.5.4 defines calculation of the loop parameters explicitly used in the puncturing loop.
Section 5.1a.1.3.5.5 defines the puncturing loop operation.
Section 5.1a.1.3.5.6 gives a usage example for DAS-5.
5.1a.1.3.5.1 Notation
The following notation is used to denote the variables used in sub-sections of Section 5.1a.1.3.5.
fraction of systematic bits not transmitted in P1; defined per DAS/DBS
stream 1 Vector of output bits from Turbo encoder, selected as 1,4,7,…
stream 2 Vector of output bits from Turbo encoder, selected as 2,5,8,…
stream 3 Vector of output bits from Turbo encoder, selected as 3,6,9,…
number of bits in stream
number of data bits of each BSN transmitted after puncturing, with no PAN field present
number of data bits of each BSN transmitted after puncturing, with PAN field present
logical Boolean to indicate logical XOR with P1 to map previously transmitted bits
Puncturing sequence version, r is the version number, 1,2, or 3
Number of puncturing sequences for a BSN, either 2 or 3
Internal variable used for parameter calculations is the PS number (1,2,or3) is type 1,2 or 3
Internal variable used for parameter calculations is the PS number (1,2,or3) is type 1,2, or 3
5.1a.1.3.5.2 Puncturing Loop parameter setup
This section defines the calculation of the initial parameters for the puncturing sequences. There are 2 types of puncturing for P2; the type to be used is defined per Modulation and Coding scheme in its definition.
5.1a.1.3.5.2.1 P1 – first puncturing version
Set the parameter values as
, , .
,
,
.
5.1a.1.3.5.2.2 P2 – second puncturing version – Type 1
Set the parameter values as
, ,
,
,
.
5.1a.1.3.5.2.3 P2 – second puncturing version – Type 2
Set the parameter values as
, ,
,
,
5.1a.1.3.5.2.4 P3 – third puncturing version
Set the parameter values as for P1 with a fixed swap = 0.3 as depicted below.
, , .
,
,
.
5.1a.1.3.5.3 PAN Parameters Handling
This section deals with the treatment of the loop to handle the inclusion of the PAN field.
Set , ,
where r is the puncturing sequence number, 1,2 or 3.
If PAN is not included, then set
, ,
This has the effect of neutralising the part of the loop that punctures out the extra bits to leave space for the PAN field.
If PAN is included, then set
,
,
5.1a.1.3.5.4 Puncturing Loop Parameter Calculation
The parameters eplus, eminus,, e2plus and e2minus are as defined in Table 0a using the parameters calculated in Section 5.1a.1.3.5.3.
Table 0a: Rate Matching Loop Parameters
|
eplus |
eminus |
e2plus |
e2minus |
|
|
Stream 1 |
||||
|
Stream 2 |
||||
|
Stream 3 |
Also eini , e2ini are calculated for the stream 1 bits as
NOTE: Given two integer numbers a and b, a mod b is defined as a – floor(a/b)*b if b is inequal to 0, where floor(a/b) rounds a/b to the nearest integer towards minus infinity. By convention, a mod 0 is a.
Similarly, the values of , are calculated for stream 2 and stream 3 bits.
For P3 puncturing scheme, the values of and shall be calculated with ‘r’ equal to 1 for all the streams.
5.1a.1.3.5.5 Puncturing Loop
This section describes the puncturing loop. The operation of the loop is based on the parameter setup and calculation described in Section 5.1a.1.3.5.3. In order to generate a puncturing sequence , the puncturing loop is run for each stream 1,2 and 3 using the parameters calculated in 5.1a.1.3.5.4.
Regardless of the presence of the PAN field, the P1 puncturing vector without PAN field is used explicitly in the generation of P2, both Types 1 and 2. For this purpose, the generated puncturing vector of P1 is denoted as variable , . A logical value of indicates the bit is not punctured, and 0 if punctured. For puncturing versions P1 and P3 (if relevant), for all values of m.
e = eini;
e2 = e2ini;
m=1;
while ( m <= N )
if xor(T(m), ~flip)
e = e – e_minus;
if (e <= 0)
puncture the bit
e = e + e_plus;
else
e2 = e2 – e2_minus;
if (e2 <= 0)
puncture the bit
e2 = e2 + e2_plus;
endif,
endif,
else
if (~flip)
puncture the bit
endif
endif,
m = m + 1;
end while
5.1a.1.3.5.6 Usage Example, 2 puncturing versions
This section gives a usage example for DAS-5, using the parameters defined for DAS-5 in Section 5.1a.16.4.
The parameter values used for rate matching are swap=0.05, =466,=1248 and =1172. Using these parameters, we calculate the following parameters using the equations in section 5.1a.1.3.5.2.1:
,
,
,
.
Assuming PAN field is not included, then
, , , , .
Placing these values in Table 0a gives values as follows:
[e_ini_s,e_plus_s,e_minus_s] = [466,466,23]
[e_ini_p1,e_plus_p1,e_minus_p1] = [466,932,128]
[e_ini_p2,e_plus_p2,e_minus_p2] = [466,466,63]
[e2_ini_s,e2_plus_s,e2_minus_s] = [443,443,0]
[e2_ini_p1,e2_plus_p1,e2_minus_p1] = [402,804,0]
[e2_ini_p2,e2_plus_p2,e2_minus_p2] = [403,403,0]
For P1, flip=0 and T(m)=0 for every m. So, the first ten puncture pattern bits for each stream are
For stream 1 bits: 1 1 1 1 1 1 1 1 1 1
For stream 2 bits: 1 1 1 0 1 1 1 1 1 1
For stream 3 bits: 1 1 1 1 1 1 1 0 1 1
For the P2, Type 1 in this case as , the parameters are calculated in a similar manner using the equation in section 5.1a.1.3.5.2.2:
[e_ini_s,e_plus_s,e_minus_s] = [222,443,0]
[e_ini_p1,e_plus_p1,e_minus_p1] = [804,804,148]
[e_ini_p2,e_plus_p2,e_minus_p2] = [202,403,76]
[e2_ini_s,e2_plus_s,e2_minus_s] = [222,443,0]
[e2_ini_p1,e2_plus_p1,e2_minus_p1] = [656,656,0]
[e2_ini_p2,e2_plus_p2,e2_minus_p2] = [164,327,0]
For P2, flip=1, and T(m) vector is the output from P1. Therefore the first ten puncture pattern bits are
For stream 1 bits: 1 1 1 1 1 1 1 1 1 1
For stream 2 bits: 1 1 1 1 1 1 0 1 1 1
For stream 3 bits: 1 1 0 1 1 1 1 1 0 1
5.1a.1.3.5.7 Usage Example, 3 puncturing versions
This section gives a usage example for DAS-12, using the parameters defined for DAS-12 in Section 5.1a.23.4.
5.1a.1.3.5.7.1 Without PAN
The parameter values used for rate matching are swap=0.0, =67,=700 and =674. Using these parameters, we calculate the following parameters using the equations in section 5.1a.1.3.5.2.1:
,
,
,
.
Assuming PAN field is not included, then
, , , , .
Placing these values in Table 0a gives values as follows:
[e_ini_s,e_plus_s,e_minus_s] = [674, 674,0]
[e_ini_p1,e_plus_p1,e_minus_p1] = [674,1348,1322]
[e_ini_p2,e_plus_p2,e_minus_p2] = [674, 674,661]
[e2_ini_s,e2_plus_s,e2_minus_s] = [674, 674,0]
[e2_ini_p1,e2_plus_p1,e2_minus_p1] = [13,26,0]
[e2_ini_p2,e2_plus_p2,e2_minus_p2] = [13,13,0]
For P1, flip=0 and T(m)=0 for every m. So, the first ten puncture pattern bits for each stream are
For stream 1 bits: 1 1 1 1 1 1 1 1 1 1
For stream 2 bits: 0 0 0 0 0 0 0 0 0 0
For stream 3 bits: 1 0 0 0 0 0 0 0 0 0
For the P2, Type 2 is used in this case as. The parameters are calculated in a similar manner using the equation in section 5.1a.1.3.5.2.3
[e_ini_s,e_plus_s,e_minus_s] = [0,0,0]
[e_ini_p1,e_plus_p1,e_minus_p1] = [221,1322,622]
[e_ini_p2,e_plus_p2,e_minus_p2] = [441,661,311]
[e2_ini_s,e2_plus_s,e2_minus_s] = [0,0,0]
[e2_ini_p1,e2_plus_p1,e2_minus_p1] = [117,700,0]
[e2_ini_p2,e2_plus_p2,e2_minus_p2] = [234,350,0]
For P2, flip=0, and T(m) vector is the output from P1. Therefore the first ten puncture pattern bits are
For stream 1 bits: 0 0 0 0 0 0 0 0 0 0
For stream 2 bits: 0 1 0 1 0 1 0 1 0 1
For stream 3 bits: 0 1 0 1 0 1 0 1 0 1
For the P3, the parameters are calculated in a similar manner using the equation in section 5.1a.1.3.5.2.4 (with a fixed swap = 0.3), where the ‘r’ value in calculating and in subsection 5.1a.1.3.5.4 is equal 1.
[e_ini_s,e_plus_s,e_minus_s] = [674, 674,202]
[e_ini_p1,e_plus_p1,e_minus_p1] = [674,1348,1120]
[e_ini_p2,e_plus_p2,e_minus_p2] = [674, 674,560]
[e2_ini_s,e2_plus_s,e2_minus_s] = [472,472,0]
[e2_ini_p1,e2_plus_p1,e2_minus_p1] = [114,228,0]
[e2_ini_p2,e2_plus_p2,e2_minus_p2] = [114, 114,0]
For P3, flip=0, and T(m)=0 for every m. swap is 30%. Therefore, the first ten puncture pattern bits are
For stream 1 bits: 1 1 1 0 1 1 0 1 1 1
5.1a.1.3.5.7.2 With PAN
In case of PAN inclusion, all the parameters are the same except those that specified below:
[e2_ini_s,e2_plus_s,e2_minus_s] = [674, 674,0]
[e2_ini_p1,e2_plus_p1,e2_minus_p1] = [13,26,26]
[e2_ini_p2,e2_plus_p2,e2_minus_p2] = [13,13,13]
For P1, flip=0 and T(m)=0 for every m. So, the first ten puncture pattern bits for each stream are
For stream 1 bits: 1 1 1 1 1 1 1 1 1 1
For stream 2 bits: 0 0 0 0 0 0 0 0 0 0
For stream 3 bits: 0 0 0 0 0 0 0 0 0 0
For the P2, Type 2 is used in this case as. The parameters are calculated in a similar manner using the equation in section 5.1a.1.3.5.2.3
[e2_ini_s,e2_plus_s,e2_minus_s] = [0,0,0]
[e2_ini_p1,e2_plus_p1,e2_minus_p1] = [117,700,26]
[e2_ini_p2,e2_plus_p2,e2_minus_p2] = [234,350,13]
For P2, flip=0, and T(m) vector is the output from P1 without PAN. Therefore the first ten puncture pattern bits are
For stream 1 bits: 0 0 0 0 0 0 0 0 0 0
For stream 2 bits: 0 1 0 1 0 1 0 1 0 0
For stream 3 bits: 0 1 0 1 0 1 0 1 0 1
For the P3, the parameters are calculated in a similar manner using the equation in section 5.1a.1.3.5.2.1, where the ‘r’ value in calculating and in subsection 5.1a.1.3.5.4 is equal to 1.
[e2_ini_s,e2_plus_s,e2_minus_s] = [472,472,0]
[e2_ini_p1,e2_plus_p1,e2_minus_p1] = [114,228,26]
[e2_ini_p2,e2_plus_p2,e2_minus_p2] = [114, 114,13]
For P3, flip=0, and T(m)=0 for every m. swap is 30%. Therefore, the first ten puncture pattern bits are
For stream 1 bits: 1 1 1 0 1 1 0 1 1 1
For stream 2 bits: 0 0 1 0 0 0 0 0 1 0
For stream 3 bits: 1 0 0 0 0 1 0 0 0 0
5.1a.1.4 PAN
a) Parity bits
Given a block of 25 bits, {pn(0),…,pn(24)}, ten PAN parity bits {p(0),p(1),…,p(9)} are defined in such a way that in GF(2) the binary polynomial:
pn(0)D29 +…+ pn(19)D10 + p(0)D9 +…+ p(9), when divided by:
D10 + D9 + D5 + D4 + D + 1, yields a remainder equal to:
D9 + D8 + D7 + D6 + D5 + D4 + D3 + D2 + D + 1.
The five last bits of the PAN, {pn(20),…,pn(24)}, are added bit-wise modulo 2 to the 5 last parity bits {p(5),…,p(9)}. In case an eTFI field is included, the three eTFI bits {et(0),et(l),et(2)} are added bit-wise modulo 2 to the parity bits {p(2),p(3),p(4)}.
The modified parity bits are added after the block of 20 bits, the result being a block of 30 bits, {b(0),…,b(29)}, incase the eTFI field is included, defined as:
b(k) = pn(k) for k = 0,…,19
b(k) = p(k‑20) for k = 20,…,21
b(k) = p(k‑20) + et(k-22) for k = 22,…,24
b(k) = p(k-20) + pn(k-5) for k = 25,…,29
And incase the eTFI field is not included, defined as:
b(k) = pn(k) for k = 0,…,19
b(k) = p(k‑20) for k = 20,…,24b(k) = p(k-20) + pn(k-5) for k = 25,…,29
b) Tail-biting convolutional encoder
The six last bits are added before the block of 30 bits, the result being a block of 36 bits {c(‑6),…,c(0),c(1),…,c(29)} with six negative indices:
c(k) = b(30+k) for k = -6,…,-1
c(k) = b(k) for k = 0,1,…,29
This block of 36 bits is encoded with the 1/3 rate convolutional mother code defined by the polynomials:
G4 = 1 + D2 + D3 + D5 + D6
G7 = 1 + D + D2 + D3 + D6
G5 = 1 + D + D4 + D6
This results in a block of 90 coded bits {C(0),…,C(89)} defined by:
C(3k) = c(k) + c(k‑2) + c(k‑3) + c(k‑5) + c(k‑6)
C(3k+1) = c(k) + c(k‑1) + c(k‑2) + c(k‑3) + c(k‑6)
C(3k+2) = c(k) + c(k‑1) + c(k‑4) + c(k‑6) for k = 0,1,…,29