3.2 Speech channel at half rate (TCH/HS)

3GPP45.003GSM/EDGE Channel codingRelease 17TS

The speech coder delivers to the channel encoder a sequence of blocks of data. In case of a half rate speech TCH, one block of data corresponds to one speech frame. Each block contains 112 bits, including 95 bits of class 1 (protected bits), and 17 bits of class 2 (no protection), see tables 3a and 3b.

The bits delivered by the speech coder are received in the order indicated in 3GPP TS 46.020 and have to be arranged according to either table 3a or table 3b before channel encoding as defined in subclauses 3.2.1 to 3.2.4. The rearranged bits are labelled {d(0),d(1),…,d(111)}. Table 3a has to be taken if parameter Mode = 0 (which means that the speech encoder is in unvoiced mode), while table 3b has to be taken if parameter Mode = 1, 2 or 3 (which means that the speech encoder is in voiced mode).

3.2.1 Parity and tailing for a speech frame

a) Parity bits:

The most significant 22 class 1 bits d(73),d(74),…,d(94) are protected by three parity bits used for error detection. These bits are added to the 22 bits, according to a cyclic code 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(73)D24 + d(74)D23 + … + d(94)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) Tail bits and reordering:

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

u(k) = d(k) for k = 0,1,…,94

u(k) = p(k‑95) for k = 95,96,97

u(k) = 0 for k = 98,99,…,103 (tail bits)

3.2.2 Convolutional encoder

The class 1 bits are encoded with the punctured convolutional code defined by the mother polynomials:

G4 = 1 + D2 + D3 + D5 + D6

G5 = 1 + D + D4 + D6

G6 = 1 + D + D2 + D3 + D4 + D6

and the puncturing matrices:

(1,0,1) for {u(0),u(1),…,u(94)} (class 1 information bits);

and {u(98),u(99),…,u(103)} (tail bits).

(1,1,1) for {u(95),u(96),u(97)} (parity bits)

In the puncturing matrices, a 1 indicates no puncture and a 0 indicates a puncture.

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

class 1 information bits:

c(2k) = u(k)+u(k‑2)+u(k‑3)+ (k‑5)+u(k‑6)

c(2k+1) = u(k)+u(k‑1)+u(k‑2)+u(k‑3)+u(k‑4)+u(k‑6) for k = 0,1,…,94;u(k) = 0 for k<0

parity bits:

c(3k‑95) = u(k)+u(k‑2)+u(k‑3)+u(k‑5)+u(k‑6)

c(3k‑94) = u(k)+u(k‑1)+u(k‑4)+u(k‑6)

c(3k‑93) = u(k)+u(k‑1)+u(k‑2)+u(k‑3)+u(k‑4)+u(k‑6) for k = 95,96,97

tail bits:

c(2k+3) = u(k)+u(k‑2)+u(k‑3)+u(k‑5)+u(k‑6)

c(2k+4) = u(k)+u(k‑1)+u(k‑2)+u(k‑3)+u(k‑4)+u(k‑6) for k = 98,99,…,103

class 2 information bits:

c(k+211) = d(k+95) for k = 0,1,…,16

3.2.3 Interleaving

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

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

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

B = B0 + 2n + b

The values of b and j in dependence of k are given by table 4.

The result of the interleaving is a distribution of the reordered 228 bits of a given data block, n = N, over 4 blocks using the even numbered bits of the first 2 blocks (B = B0+2N+0,1) and the odd numbered bits of the last 2 blocks (B = B0+2N+2,3). The reordered bits of the following data block, n = N + 1, use the even numbered bits of the blocks B = B0 + 2N + 2,3 (B = B0+2(N+1)+0,1) and the odd numbered bits of the blocks B = B0 + 2(N+1) + 2,3. 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 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 2nd block and is distributed over 4 blocks.

3.2.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/HS block not stolen for signalling purposes:

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

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

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