3.1 Speech channel at full rate (TCH/FS and TCH/EFS)

3GPP45.003GSM/EDGE Channel codingRelease 17TS

The speech coder (whether Full rate or Enhanced full rate) delivers to the channel encoder a sequence of blocks of data. In case of a full rate and enhanced full rate speech TCH, one block of data corresponds to one speech frame.

For the full rate coder each block contains 260 information bits, including 182 bits of class 1 (protected bits), and 78 bits of class 2 (no protection), (see table 2).

The bits delivered by the speech coder are received in the order indicated in 3GPP TS 46.010 and have to be rearranged according to table 2 before channel coding as defined in subclauses 3.1.1 to 3.1.4. The rearranged bits are labelled {d(0),d(1),…,d(259)}, defined in the order of decreasing importance.

For the EFR coder each block contains 244 information bits. The block of 244 information bits, labelled s(1).., s(244), passes through a preliminary stage, applied only to EFR (see figure 1) which produces 260 bits corresponding to the 244 input bits and 16 redundancy bits. Those 16 redundancy bits correspond to 8 CRC bits and 8 repetition bits, as described in subclause 3.1.1. The 260 bits, labelled w(1)..w(260), have to be rearranged according to table 6 before they are delivered to the channel encoding unit which is identical to that of the TCH/FS. The 260 bits block includes 182 bits of class 1(protected bits) and 78 bits of class 2 (no protection). The class 1 bits are further divided into the class 1a and class 1b, class 1a bits being protected by a cyclic code and the convolutional code whereas the class 1b are protected by the convolutional code only.

3.1.1 Preliminary channel coding for EFR only

3.1.1.1 CRC calculation

An 8‑bit CRC is used for error‑detection. These 8 parity bits (bits w253‑w260) are generated by the cyclic generator polynomial: g(D) = D8 + D4 + D3 + D2 + 1 from the 65 most important bits (50 bits of class 1a and 15 bits of class 1b). These 65 bits (b(1)‑b(65)) are taken from the table 5 in the following order (read row by row, left to right):

s39

s40

s41

s42

s43

s44

s48

s87

s45

s2

s3

s8

s10

s18

s19

s24

s46

s47

s142

s143

s144

s145

s146

s147

s92

s93

s195

s196

s98

s137

s148

s94

s197

s149

s150

s95

s198

s4

s5

s11

s12

s16

s9

s6

s7

s13

s17

s20

s96

s199

s1

s14

s15

s21

s25

s26

s28

s151

s201

s190

s240

s88

s138

s191

s241

The encoding is performed in a systematic form, which means that, in GF(2), the polynomial:

– b(1)D72 + b(2)D71 +…+b(65)D8 + p(1)D7 + p(2)D6 +…+ p(7)D1 + p(8);

– p(1) ‑ p(8): the parity bits (w253‑w260);

– b(1) ‑ b(65) = the data bits from the table above;

when divided by g(D), yields a remainder equal to 0.

3.1.1.2 Repetition bits

The repeated bits are s70, s120, s173 and s223. They correspond to one of the bits in each of the PULSE_5, the most significant one not protected by the channel coding stage.

3.1.1.3 Correspondence between input and output of preliminary channel coding

The preliminary coded bits w(k) for k = 1 to 260 are hence defined by:

w(k) = s(k) for k = 1 to 71

w(k) = s(k‑2) for k = 74 to 123

w(k) = s(k‑4) for k = 126 to 178

w(k) = s(k‑6) for k = 181 to s230

w(k) = s(k‑8) for k = 233 to s252

Repetition bits:

w(k) = s(70) for k = 72 and 73

w(k) = s(120) for k = 124 and 125

w(k) = s(173) for k = 179 and 180

w(k) = s(223) for k = 231 and 232

Parity bits:

w(k = p(k‑252) for k = 253 to 260

3.1.2 Channel coding for FR and EFR

3.1.2.1 Parity and tailing for a speech frame

a) Parity bits:

The first 50 bits of class 1 (known as class 1a for the EFR) are protected by three parity bits used for error detection. These parity bits are added to the 50 bits, according to a degenerate (shortened) cyclic code (53,50,2), using the generator polynomial:

g(D) = D3 + D + 1

The encoding of the cyclic code is performed in a systematic form, which means that, in GF(2), the polynomial:

d(0)D52 + d(1)D51 +… + d(49)D3 + p(0)D2 + p(1)D+ p(2)

where p(0), p(1), p(2) are the parity bits, when divided by g(D), yields a remainder equal to:

1 + D + D2

b) Tailing bits and reordering:

The information and parity bits of class 1 are reordered, defining 189 information + parity + tail bits of class 1, {u(0),u(1),…,u(188)} defined by:

u(k) = d(2k) and u(184‑k) = d(2k+1) for k = 0,1,…,90

u(91+k) = p(k) for k = 0,1,2

u(k) = 0 for k = 185,186,187,188 (tail bits)

3.1.2.2 Convolutional encoder

The class 1 bits are encoded with the ½ rate convolutional code defined by the polynomials:

G0 = 1 + D3+ D4

G1 = 1 + D + D3+ D4

The coded bits {c(0), c(1),…, c(455)} are then defined by:

‑ class 1: c(2k) = u(k) + u(k‑3) + u(k‑4)

c(2k+1) = u(k) + u(k‑1) + u(k‑3) + u(k‑4) for k = 0,1,…,188

u(k) = 0 for k < 0

‑ class 2: c(378+k) = d(182+k) for k = 0,1,….,77

3.1.3 Interleaving

The coded bits are reordered and interleaved according to the following rule:

i(B,j) = c(n,k), for k = 0,1,…,455

n = 0,1,…,N,N+1,…

B = B0 + 4n + (k mod 8)

j = 2((49k) mod 57) + ((k mod 8) div 4)

See table 1. The result of the interleaving is a distribution of the reordered 456 bits of a given data block, n = N, over 8 blocks using the even numbered bits of the first 4 blocks (B = B0 + 4N + 0, 1, 2, 3) and odd numbered bits of the last 4 blocks (B = B0 + 4N + 4, 5, 6, 7). The reordered bits of the following data block, n = N+1, use the even numbered bits of the blocks B = B0 + 4N + 4, 5, 6, 7 (B = B0 + 4(N+1) + 0, 1, 2, 3) and the odd numbered bits of the blocks B = B0 + 4(N+1) + 4, 5, 6, 7. Continuing with the next data blocks shows that one block always carries 57 bits of data from one data block (n = N) and 57 bits of data from the next block (n = N+1), where the bits from the data block with the higher number always are the even numbered data bits, and those of the data block with the lower number are the odd numbered bits.

The block of coded data is interleaved "block diagonal", where a new data block starts every 4th block and is distributed over 8 blocks.

3.1.4 Mapping on a Burst

The mapping is given by the rule:

e(B,j) = i(B,j) and e(B,59+j) = i(B,57+j) for j = 0,1,…,56

and

e(B,57) = hl(B) and e(B,58) = hu(B)

The two bits, labelled hl(B) and hu(B) on burst number B are flags used for indication of control channel signalling. For each TCH/FS block not stolen for signalling purposes:

hu(B) = 0 for the first 4 bursts (indicating status of even numbered bits)

hl(B) = 0 for the last 4 bursts (indicating status of odd numbered bits)

For the use of hl(B) and hu(B) when a speech frame is stolen for signalling purposes see subclause 4.2.5.