3.10 Adaptive multi rate speech channel at half rate (TCH/AHS)
3GPP45.003GSM/EDGE Channel codingRelease 17TS
This section describes the coding for the different frame formats used for TCH/AHS. The formats used are (in the order they are described):
SID_UPDATE Used to convey comfort noise parameters during DTX
SID_UPDATE_INH Used to inhibit the second part of a SID_UPDATE frame if there is a speech onset
SID_FIRST_P1 First part of marker to define end of speech, start of DTX
SID_FIRST_P2 Second part of marker to define end of speech, start of DTX
SID_FIRST_INH Used to inhibit the second part of a SID_FIRST_P1 frame if there is a speech onset
ONSET Used to signal the Codec mode for the first speech frame after DTX
SPEECH Speech frames
RATSCCH_MARKER Marker to identify RATSCCH frames
RATSCCH_DATA Frame that conveys the actual RATSCCH message
In this chapter, sub chapters 3.10.1 to 3.10.9 describe the channel coding for the different formats listed above.
Common to all the formats is that in-band information is conveyed, the coding for the in-band channel is described in the table below:
|
Identifier (defined in 3GPP TS 45.009) |
Received in-band data id(1), id(0) |
Encoded in-band data for SID and RATSCCH frames ic(15),.., ic(0) |
Encoded in-band data for speech framesic(3),.., ic(0) |
|
CODEC_MODE_1 |
00 |
0101001100001111 |
0000 |
|
CODEC_MODE_2 |
01 |
0011111010111000 |
1001 |
|
CODEC_MODE_3 |
10 |
1000100001100011 |
0111 |
|
CODEC_MODE_4 |
11 |
1110010111010100 |
1110 |
3.10.1 SID_UPDATE
The speech encoder delivers 35 bits of comfort noise parameters. Also delivered is two in-band channels, id0(0,1) and id1(0,1), id0 corresponding to Mode Commands/Mode Requests and id1 to Mode Indication. The general coding is as: the two in-band data channels are coded to 16 bits each, a 14-bit CRC is added to the 35 CN bits which are then coded by a rate ¼ RSC coder to 212 bits. Finally a 212 bit identification field is added thereby giving a total size of 456 bits. These 456 bits are block interleaved over 4 bursts.
3.10.1.1 Coding of in-band data
The two in-band data fields, id0(0,1) and id1(0,1), are encoded, giving ic0(0..15) and ic1(0..15).
The ic0 and ic1 data is moved to the coded data c as:
c(k) = ic1(k) for k = 0,1, .., 15
c(k) = ic0(k-228) for k = 228, 229, .., 243
3.10.1.2 Parity and convolutional encoding for the comfort noise parameters
a) Parity bits:
A 14-bit CRC is used for error-detection. These 14 parity bits are generated by the cyclic generator polynomial: g(D) = D14 + D13 + D5 + D3 + D2 +1 from the 35 comfort noise parameter bits. The encoding of the cyclic code is performed in a systematic form, which means that, in GF(2), the polynomial:
d(0)D(48) + d(1)D(47) +… + d(34)D(14) + p(0)D(13) +…+ p(12)D+ p(13)
where p(0), p(1) … p(13) are the parity bits, when divided by g(D), yields a remainder equal to
1+ D + D2 + D3 + D4 + D5 + D6 + D7 + D8 + D9 + D10 + D11 + D12+ D13
The information and parity bits are merged:
u(k) = d(k) for k = 0, 1, …, 34
u(k) = p(k-35) for k = 35, 36, …, 48
b) Convolutional encoder
The comfort noise parameters with parity bits (u(0..48)) are encoded with the ¼ rate
convolutional code defined by the polynomials:
G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4
G3/G3 = 1
G3/G3 = 1
resulting in 212 coded bits, {C(0)… C(211)} defined by:
r(k) = u(k) + r(k-1) + r(k-2) + r(k-3) + r(k-4)
C(4k) = r(k) + r(k-1) + r(k-3) + r(k-4)
C(4k+1) = r(k)+r(k-2)+r(k-4)
C(4k+2) = u(k)
C(4k+3) = u(k) for k = 0, 1, …, 48; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(4k) = r(k)+r(k-1) + r(k-3) + r(k-4)
C(4k+1) = r(k)+r(k-2)+r(k-4)
C(4k+2) = r(k-1)+r(k-2)+r(k-3)+r(k-4)
C(4k+3) = r(k-1)+r(k-2)+r(k-3)+r(k-4) for k = 49, 50, …, 52
This block of data is moved to the coded data (c) as:
c(k+244) = C(k) for k = 0, 1, …, 211
3.10.1.3 Identification marker
The identification marker, IM(0..211), is constructed by repeating the following 9-bit sequence:
{ 1, 0, 1, 1, 0, 0, 0, 0, 1 } 24 times and then discarding the last 4 bits. This block of data is moved to the coded data (c) as:
c(k+16) = IM(k) for k = 0, 1, …, 211
3.10.1.4 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
i(B,j) = c(n,k+228) for k = 0,1,…,227
n = 0,1,…,N,N+1,…
B = B0 + 2n + ((b + 2) mod 4)
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 456 bits of a given data block, n = N, over 4 blocks using all bits for each block. The block of coded data is interleaved "block rectangular" where a new data block starts every 4th block and is distributed over 4 blocks.
3.10.1.5 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 block not stolen for FACCH signalling purposes:
hu(B) = 0 for all 4 bursts
hl(B) = 0 for all 4 bursts
For the use of hl(B) and hu(B) when frame is stolen for signalling purposes, see subclause 4.3.5.
3.10.2 SID_UPDATE_INH
This special frame is used when the first 2 burst of a SID_UPDATE frame have been transmitted but the second two bursts cannot be transmitted due to a speech frame. The general coding is as: the in-band data (Note that this must be the same Mode Indication bits as id1(0,1) for the SID_UPDATE frame that is being inhibited) is encoded, a marker that is the opposite of the SID_UPDATE marker is appended and the data is interleaved in such a way that the odd bits of two bursts are filled.
3.10.2.1 Coding of in-band data
The in-band data, Mode Indication id1(0,1), is encoded to ic1(0..15) which is moved to the coded data c as:
c(k) = ic1(k) for k = 0,1, .., 15
3.10.2.2 Identification marker
The identification marker, IM(0..211), is constructed by repeating the following 9-bit sequence:
{ 0, 1, 0, 0, 1, 1, 1, 1, 0 } 24 times and then discarding the last 4 bits. This block of data is moved to the coded data (c) as:
c(k+16) = IM(k) for k = 0, 1, …, 211
3.10.2.3 Interleaving
The coded bits are reordered and interleaved according to the following rule:
i(B,j) = c(n,k) for k = 1,3,5,7,…,227
n = 0,1,…,N,N+1,…
B = B0 + 2n + b – 2
The values of b and j in dependence of k are given by table 4.
The result of the interleaving is a distribution of 114 of the reordered 228 bits of a given data block, n = N, over 2 blocks using the odd numbered bits. The even numbered bits of these 2 blocks will be filled by the speech frame that following immediately after this frame.
3.10.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)
The bit labelled hl(B) on burst number B is a flag used for indication of control channel signalling. For each SID_FIRST_INH block not stolen for signalling purposes:
hl(B) = 0 for the 2 bursts (indicating status of the odd numbered bits)
For the use of hl(B) when a SID_UPDATE_INH is stolen for signalling purposes, see subclause 4.3.5.
3.10.3 SID_FIRST_P1
This frame type contains no source data from the speech coder. What is generated is the in-band channel and an identification marker. The in-band data id(0,1) represents Mode Indication or Mode Command/Mode Request depending on the current frame number.
3.10.3.1 Coding of in-band data
The in-band data, id(0,1), is encoded to ic(0..15) which is moved to the coded data c as:
c(k) = ic (k) for k = 0,1, .., 15
3.10.3.2 Identification marker
The identification marker, IM(0..211), is constructed by repeating the following 9-bit sequence:
{ 0, 1, 0, 0, 1, 1, 1, 1, 0 } 24 times and then discarding the last 4 bits. This block of data is moved to the coded data (c) as:
c(k+16) = IM(k) for k = 0, 1, …, 211
3.10.3.3 Interleaving
The interleaving is done as specified for the TCH/HS in subclause 3.2.3.
3.10.3.4 Mapping on a Burst
The mapping is done as specified for the TCH/HS in subclause 3.2.4.
3.10.4 SID_FIRST_P2
This frame type contains no source data from the speech coder. What is generated is the in-band channel and, derived from that, an identification marker. The in-band data id(0,1) represents Mode Indication or Mode Command/Mode Request depending on the current frame number.
3.10.4.1 Coding of in-band data
The in-band data, id(0,1), is encoded to ic(0..15). This sequence is then repeated 7 times more, and the last 14 bits are discarded (8*16-14=114) giving the sequence ic(0..113).
This sequence is then moved to c as:
c(2*k) = ic(k) for k = 0, 1, …, 113
3.10.4.2 Interleaving
The coded bits are reordered and interleaved according to the following rule:
i(B,j) = c(n,k) for k = 0,2,4,6,…,226
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 114 of the reordered 228 bits of a given data block, n = N, over 2 blocks using the even numbered bits. The odd numbered bits of these 2 blocks have already been filled by the SID_FIRST_P1 frame.
3.10.4.3 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,58) = hu(B)
The bit labelled hu(B) on burst number B is a flag used for indication of control channel signalling. For each SID_FIRST_P2 block not stolen for signalling purposes:
hu(B) = 0 for the 2 bursts (indicating status of the even numbered bits)
For the use of hu(B) when a SID_FIRST_P2 is stolen for signalling purposes, see subclause 4.3.5.
3.10.5 SID_FIRST_INH
This special frame is used when the first 2 burst of a SID_FIRST_P1 frame have been transmitted but the second two bursts cannot be transmitted due to a SPEECH frame. The general coding is as: the in-band data (Note that this must be the same data as for the SID_FIRST_P1 frame that is being inhibited) is encoded, a marker that is the opposite of the SID_FIRST_P1 marker is appended and the data is interleaved in such a way that the odd bits of two bursts are filled.
3.10.5.1 Coding of in-band data
The coding of the in-band data is done as specified for the SID_FIRST_P1 frame in subclause 3.10.3.1.
3.10.5.2 Identification marker
The identification marker, IM(0..211), is constructed by repeating the following 9-bit sequence:
{ 1, 0, 1, 1, 0, 0, 0, 0, 1 } 24 times and then discarding the last 4 bits. This block of data is moved to the coded data (c) as:
c(k+16) = IM(k) for k = 0, 1, …, 211
3.10.5.3 Interleaving
The interleaving is done as specified for the SID_UPDATE_INH in subclause 3.10.2.3.
3.10.5.4 Mapping on a Burst
The mapping is done as specified for the SID_UPDATE_INH in subclause 3.10.2.4.
3.10.6 ONSET
Onset frames are used to preset the interleaver buffer after a period of no speech activity in DTX mode. This frame type contains no source data from the speech coder. What is transmitted is the in-band channel signalling the Mode Indication for the speech frame following the onset marker.
3.10.6.1 Coding of in-band data
The in-band data, Mode Indication id1(0,1), will be encoded to ic1(0..15). This sequence is then repeated 7 times more, and the last 14 bits are discarded (8*16-14=114) giving the sequence ic1(0..113).
This sequence is then moved to c as:
c(2*k+1) = ic1(k) for k = 0, 1, …, 113
3.10.6.2 Interleaving
The interleaving is done as specified for the SID_UPDATE_INH in subclause 3.10.2.3.
3.10.6.3 Mapping on a Burst
The mapping is done as specified for the SID_UPDATE_INH in subclause 3.10.2.4.
3.10.7 SPEECH
The speech coder delivers to the channel encoder a sequence of blocks of data. One block of data corresponds to one speech frame and the block length is different in each of the six channel codec modes. Adjoining each block of data is information of the channel codec mode to use when encoding the block Also delivered is the in-band data id(0,1) representing Mode Indication or Mode Command/Mode Request depending on the current frame number.
3.10.7.1 Coding of the in-band data
The two bits to be in-band encoded, id(0,1), are encoded into ic(0..3).
The encoded in-band data (4 bits) are then moved to c(k) as:
c(k) = ic(k) for k = 0, 1, …, 3
3.10.7.2 Ordering according to subjective importance
The bits delivered by the speech encoder, {s(1),s(2),…,s(Ks)}, are rearranged according to subjective importance before channel coding, Tables 9, 10, 11, 12, 13, 14 define the correct rearrangement for the speech codec modes 7.95 kbit/s, 7.40 kbit/s, 6.70 kbit/s, 5.90 kbit/s, 5.15 kbit/s and 4.75 kbit/s, respectively. In the tables speech codec parameters are numbered in the order they are delivered by the corresponding speech encoder according to 3GPP TS 26.090 and the rearranged bits are labelled {d(0),d(1),…,d(Kd-1)}, defined in the order of decreasing importance. Index Kd refers to the number of bits delivered by the speech encoder, see below:
|
Codec mode |
Number of speech bits delivered per block (Kd) |
|
TCH/AHS7.95 |
159 |
|
TCH/AHS7.4 |
148 |
|
TCH/AHS6.7 |
134 |
|
TCH/AHS5.9 |
118 |
|
TCH/AHS5.15 |
103 |
|
TCH/AHS4.75 |
95 |
The ordering algorithm is in pseudo code as:
for j = 0 to Kd-1 d(j) := s(table(j)+1); where table(j) is read line by line left to right
The rearranged bits are further divided into three different classes to perform unequal error protection for different bits according to subjective importance.
The protection classes are:
1a – Data protected with the CRC and the convolution code.
1b – Data protected with the convolution code.
2 – Data sent without protection.
The number of class 1 (sum of class 1a and 1b), class 1a, class 1b and class 2 bits for each codec mode is shown below:
|
Codec mode |
Number of speech bits delivered per block |
Number of class 1 bits per block |
Number of class 1a bits per block |
Number of class 1b bits per block |
Number of class 2 bits per block |
|
TCH/AHS7.95 |
159 |
123 |
67 |
56 |
36 |
|
TCH/AHS7.4 |
148 |
120 |
61 |
59 |
28 |
|
TCH/AHS6.7 |
134 |
110 |
55 |
55 |
24 |
|
TCH/AHS5.9 |
118 |
102 |
55 |
47 |
16 |
|
TCH/AHS5.15 |
103 |
91 |
49 |
42 |
12 |
|
TCH/AHS4.75 |
95 |
83 |
39 |
44 |
12 |
3.10.7.3 Parity for speech frames
The basic parameters for each codec mode for the first encoding step are shown below:
|
Mode number |
Number of class 1 bits (Kd1) |
CRC protected bits (Kd1a) |
Number of output bits from first encoding step (Ku = Kd1 + 6) |
|
TCH/AHS7.95 |
123 |
67 |
129 |
|
TCH/AHS7.4 |
120 |
61 |
126 |
|
TCH/AHS6.7 |
110 |
55 |
116 |
|
TCH/AHS5.9 |
102 |
55 |
108 |
|
TCH/AHS5.15 |
91 |
49 |
97 |
|
TCH/AHS4.75 |
83 |
39 |
89 |
A 6-bit CRC is used for error-detection. These 6 parity bits are generated by the cyclic generator polynomial:
g(D) = D6 + D5 + D3 + D2 + D1 + 1 from the first Kd1a bits of class 1, where Kd1a refers to number of bits in protection class 1a. The value of Kd1a for each codec mode is shown above.
The encoding of the cyclic code is performed in a systematic form, which means that, in GF(2), the polynomial:
d(0)D(Kd1a+5) + d(1)D(Kd1a+4) +… + d(Kd1a-1)D(6) + p(0)D(5) +…+ p(4)D+ p(5)
where p(0), p(1) … p(5) are the parity bits, when divided by g(D), yields a remainder equal to:
1+ D + D2 + D3 + D4 + D5.
The information and parity bits are merged:
u(k) = d(k) for k = 0, 1, …, Kd1a-1
u(k) = p(k-Kd1a) for k = Kd1a, Kd1a+1, …, Kd1a+5
u(k) = d(k-6) for k = Kd1a+6, Kd1a+7, …, Ku-1
Thus, after the first encoding step u(k) will be defined by the following contents for each codec mode:
TCH/AHS7.95:
u(k) = d(k) for k = 0, 1, …, 66
u(k) = p(k-67) for k = 67, 68, …, 72
u(k) = d(k-6) for k = 73, 74, …, 128
TCH/AHS7.4:
u(k) = d(k) for k = 0, 1, …, 60
u(k) = p(k-61) for k = 61, 62, …, 66
u(k) = d(k-6) for k = 67, 68, …, 125
TCH/AHS6.7:
u(k) = d(k) for k = 0, 1, …, 54
u(k) = p(k-55) for k = 55, 56, …, 60
u(k) = d(k-6) for k = 61, 62, …, 115
TCH/AHS5.9:
u(k) = d(k) for k = 0, 1, …, 54
u(k) = p(k-55) for k = 55, 56, …, 60
u(k) = d(k-6) for k = 61, 62, …, 107
TCH/AHS5.15:
u(k) = d(k) for k = 0, 1, …, 48
u(k) = p(k-49) for k = 49, 50, …, 54
u(k) = d(k-6) for k = 55, 56, …, 96
TCH/AHS4.75:
u(k) = d(k) for k = 0, 1, …, 38
u(k) = p(k-39) for k = 39, 40, …, 44
u(k) = d(k -6) for k = 45, 46, …, 88
3.10.7.4 Convolutional encoder
The bits from the first encoding step (u(k)) are encoded with the recursive systematic convolutional code as summarised below:
|
Codec mode |
Number of input bits to conv. code |
Rate |
Number of output bits from conv. code |
Number of punctured bits |
|
TCH/AHS7.95 |
129 |
½ |
266 |
78 |
|
TCH/AHS7.4 |
126 |
½ |
260 |
64 |
|
TCH/AHS6.7 |
116 |
½ |
240 |
40 |
|
TCH/AHS5.9 |
108 |
½ |
224 |
16 |
|
TCH/AHS5.15 |
97 |
1/3 |
303 |
91 |
|
TCH/AHS4.75 |
89 |
1/3 |
285 |
73 |
Below the coding for each codec mode is specified in detail.
TCH/AHS7.95:
The block of 129 bits {u(0)… u(128)} is encoded with the ½ rate convolutional code defined by the following polynomials:
G0/G0 = 1
G1/G0 = 1 + D + D3+ D4 / 1 + D3 + D4
resulting in 266 coded bits, {C(0)… C(265)} defined by:
r(k) = u(k) + r(k-3) + r(k-4)
C(2k) = u(k)
C(2k+1) = r(k)+r(k-1)+r(k-3)+r(k-4) for k = 0, 1, …, 128; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(2k) = r(k-3) + r(k-4)
C(2k+1) = r(k)+r(k-1)+r(k-3)+r(k-4) for k = 129, 130 …, 132
The code is punctured in such a way that the following 78 coded bits:
C(1), C(3), C(5), C(7), C(11), C(15), C(19), C(23), C(27), C(31), C(35), C(43), C(47), C(51), C(55), C(59), C(63), C(67), C(71), C(79), C(83), C(87), C(91), C(95), C(99), C(103), C(107), C(115), C(119), C(123), C(127), C(131), C(135), C(139), C(143), C(151), C(155), C(159), C(163), C(167), C(171), C(175), C(177), C(179), C(183), C(185), C(187), C(191), C(193), C(195), C(197), C(199), C(203), C(205), C(207), C(211), C(213), C(215), C(219), C(221), C(223), C(227), C(229), C(231), C(233), C(235), C(239), C(241), C(243), C(247), C(249), C(251), C(255), C(257), C(259), C(261), C(263) and C(265)
are not transmitted. The result is a block of 188 coded and punctured bits, P(0)…P(187) which are appended to the in-band bits in c as
c(k+4) = P(k) for k = 0, 1, …, 187.
Finally the 36 class 2 bits are appended to c
c(192+k ) = d(123+k) for k = 0, 1, …, 35.
TCH/AHS7.4:
The block of 126 bits {u(0)… u(125)} is encoded with the ½ rate convolutional code defined by the following polynomials:
G0/G0 = 1
G1/G0 = 1 + D + D3+ D4 / 1 + D3 + D4
resulting in 260 coded bits, {C(0)… C(259)} defined by:
r(k) = u(k) + r(k-3) + r(k-4)
C(2k) = u(k)
C(2k+1) = r(k)+r(k-1)+r(k-3)+r(k-4) for k = 0, 1, …, 125; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(2k) = r(k-3) + r(k-4)
C(2k+1) = r(k)+r(k-1)+r(k-3)+r(k-4) for k = 126, 127 …, 129
The code is punctured in such a way that the following 64 coded bits:
C(1), C(3), C(7), C(11), C(19), C(23), C(27), C(35), C(39), C(43), C(51), C(55), C(59), C(67), C(71), C(75), C(83), C(87), C(91), C(99), C(103), C(107), C(115), C(119), C(123), C(131), C(135), C(139), C(143), C(147), C(151), C(155), C(159), C(163), C(167), C(171), C(175), C(179), C(183), C(187), C(191), C(195), C(199), C(203), C(207), C(211), C(215), C(219), C(221), C(223), C(227), C(229), C(231), C(235), C(237), C(239), C(243), C(245), C(247), C(251), C(253), C(255), C(257) and C(259)
are not transmitted. The result is a block of 196 coded and punctured bits, P(0)…P(195) which are appended to the in-band bits in c as
c(k+4) = P(k) for k = 0, 1, …, 195.
Finally the 28 class 2 bits are appended to c
c(200+k ) = d(120+k) for k = 0, 1, …, 27.
TCH/AHS6.7:
The block of 116 bits {u(0)… u(115)} is encoded with the ½ rate convolutional code defined by the following polynomials:
G0/G0 = 1
G1/G0 = 1 + D + D3+ D4 / 1 + D3 + D4
resulting in 240 coded bits, {C(0)… C(239)} defined by:
r(k) = u(k) + r(k-3) + r(k-4)
C(2k) = u(k)
C(2k+1) = r(k)+r(k-1)+r(k-3)+r(k-4) for k = 0, 1, …, 115; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(2k) = r(k-3) + r(k-4)
C(2k+1) = r(k)+r(k-1)+r(k-3)+r(k-4) for k = 116, 117 …, 119
The code is punctured in such a way that the following 40 coded bits:
C(1), C(3), C(9), C(19), C(29), C(39), C(49), C(59), C(69), C(79), C(89), C(99), C(109), C(119), C(129), C(139), C(149), C(159), C(167), C(169), C(177), C(179), C(187), C(189), C(197), C(199), C(203), C(207), C(209), C(213), C(217), C(219), C(223), C(227), C(229), C(231), C(233), C(235), C(237) and C(239)
are not transmitted. The result is a block of 200 coded and punctured bits, P(0)…P(199) which are appended to the in-band bits in c as
c(k+4) = P(k) for k = 0, 1, …, 199.
Finally the 24 class 2 bits are appended to c
c(204+k ) = d(110+k) for k = 0, 1, …, 23.
TCH/AHS5.9:
The block of 108 bits {u(0)… u(107)} is encoded with the ½ rate convolutional code defined by the following polynomials:
G0/G0 = 1
G1/G0 = 1 + D + D3+ D4 / 1 + D3 + D4
resulting in 224 coded bits, {C(0)… C(223)} defined by:
r(k) = u(k) + r(k-3) + r(k-4)
C(2k) = u(k)
C(2k+1) = r(k)+r(k-1)+r(k-3)+r(k-4) for k = 0, 1, …, 107; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(2k) = r(k-3) + r(k-4)
C(2k+1) = r(k)+r(k-1)+r(k-3)+r(k-4) for k = 108, 109 …, 111
The code is punctured in such a way that the following 16 coded bits:
C(1), C(15), C(71), C(127), C(139), C(151), C(163), C(175), C(187), C(195), C(203), C(211), C(215), C(219), C(221) and C(223)
are not transmitted. The result is a block of 208 coded and punctured bits, P(0)…P(207) which are appended to the in-band bits in c as
c(k+4) = P(k) for k = 0, 1, …, 207.
Finally the 16 class 2 bits are appended to c
c(212+k ) = d(102+k) for k = 0, 1, …, 15.
TCH/AHS5.15:
The block of 97 bits {u(0)… u(96)} is encoded with the 1/3 rate convolutional code defined by the following polynomials:
G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4
G3/G3 = 1
resulting in 303 coded bits, {C(0)… C(302)} defined by:
r(k) = u(k) + r(k-1) + r(k-2) + r(k-3) + r(k-4)
C(3k) = r(k) + r(k-1) + r(k-3) + r(k-4)
C(3k+1) = r(k)+r(k-2)+r(k-4)
C(3k+2) = u(k) for k = 0, 1, …, 96
and (for termination of the coder):
r(k) = 0
C(3k) = r(k)+r(k-1) + r(k-3) + r(k-4)
C(3k+1) = r(k)+r(k-2)+r(k-4)
C(3k+2) = r(k-1)+r(k-2)+r(k-3)+r(k-4) for k = 97, 98, …, 100
The code is punctured in such a way that the following 91 coded bits:
C(0), C(1), C(3), C(4), C(6), C(9), C(12), C(15), C(18), C(21), C(27), C(33), C(39), C(45), C(51), C(54), C(57), C(63), C(69), C(75), C(81), C(87), C(90), C(93), C(99), C(105), C(111), C(117), C(123), C(126), C(129), C(135), C(141), C(147), C(153), C(159), C(162), C(165), C(168), C(171), C(174), C(177), C(180), C(183), C(186), C(189), C(192), C(195), C(198), C(201), C(204), C(207), C(210), C(213), C(216), C(219), C(222), C(225), C(228), C(231), C(234), C(237), C(240), C(243), C(244), C(246), C(249), C(252), C(255), C(256), C(258), C(261), C(264), C(267), C(268), C(270), C(273), C(276), C(279), C(280), C(282), C(285), C(288), C(289), C(291), C(294), C(295), C(297), C(298), C(300) and C(301)
are not transmitted. The result is a block of 212 coded and punctured bits, P(0)…P(211) which are appended to the in-band bits in c as
c(k+4) = P(k) for k = 0, 1, …, 211.
Finally the 12 class 2 bits are appended to c
c(216+k ) = d(91+k) for k = 0, 1, …, 11.
TCH/AHS4.75:
The block of 89 bits {u(0)… u(88)} is encoded with the 1/3 rate convolutional code defined by the following polynomials:
G4/G4 = 1
G5/G4 = 1 + D + D4 + D6/ 1 + D2 + D3 + D5 + D6
G6/G4 = 1 + D + D2 + D3 + D4 + D6/ 1 + D2 + D3 + D5 + D6
resulting in 285 coded bits, {C(0)… C(284)} defined by:
r(k) = u(k) + r(k-2) + r(k-3) + r(k-5) + r(k-6)
C(3k) = u(k)
C(3k+1) = r(k)+r(k-1)+r(k-4)+r(k-6)
C(3k+2) = r(k)+r(k-1)+ r(k-2)+r(k-3)+r(k-4)+r(k-6) for k = 0, 1, …, 88; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(3k) = r(k-2) + r(k-3) + r(k-5) + r(k-6)
C(3k+1) = r(k)+r(k-1)+r(k-4)+r(k-6)
C(3k+2) = r(k)+r(k-1)+ r(k-2)+r(k-3)+r(k-4)+r(k-6) for k = 89, 90, …, 94
The code is punctured in such a way that the following 73 coded bits:
C(1), C(2), C(4), C(5), C(7), C(8), C(10), C(13), C(16), C(22), C(28), C(34), C(40), C(46), C(52), C(58), C(64), C(70), C(76), C(82), C(88), C(94), C(100), C(106), C(112), C(118), C(124), C(130), C(136), C(142), C(148), C(151), C(154), C(160), C(163), C(166), C(172), C(175), C(178), C(184), C(187), C(190), C(196), C(199), C(202), C(208), C(211), C(214), C(220), C(223), C(226), C(232), C(235), C(238), C(241), C(244), C(247), C(250), C(253), C(256), C(259), C(262), C(265), C(268), C(271), C(274), C(275), C(277), C(278), C(280), C(281), C(283) and C(284)
are not transmitted. The result is a block of 212 coded and punctured bits, P(0)…P(211) which are appended to the in-band bits in c as
c(k+4) = P(k) for k = 0, 1, …, 211.
Finally the 12 class 2 bits are appended to c
c(216+k ) = d(83+k) for k = 0, 1, …, 11.
3.10.7.5 Interleaving
The interleaving is done as specified for the TCH/HS in subclause 3.2.3.
3.10.7.6 Mapping on a Burst
The mapping is done as specified for the TCH/HS in subclause 3.2.4.
3.10.8 RATSCCH_MARKER
This frame type contains the in-band channel and an identification marker. The in-band data id(0,1) represents Mode Indication or Mode Command/Mode Request depending on the current frame number.
3.10.8.1 Coding of in-band data
The in-band data, ic(0,1), is encoded to ic(0..15) which is moved to the coded data c as:
c(k) = ic (k) for k = 0,1, .., 15
3.10.8.2 Identification marker
The identification marker, IM(0..211), is constructed by repeating the following 11-bit sequence:
{ 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1 } 20 times and then discarding the last 8 bits. This block of data is moved to the coded data (c) as:
c(k+16) = IM(k) for k = 0, 1, .., 211
3.10.8.3 Interleaving
The interleaving is done as specified for the TCH/HS in subclause 3.2.3.
3.10.8.4 Mapping on a Burst
The mapping is done as specified for the TCH/HS in subclause 3.2.4.
3.10.9 RATSCCH_DATA
This frame contains the RATSCCH data and an inband channel. The RATSCCH data consists of 35 bits. The in-band data id(0,1) represents Mode Indication or Mode Command/Mode Request depending on the current frame number.
3.10.9.1 Coding of in-band data
The in-band data, ic(0,1), is encoded to ic(0..15) which is moved to the coded data c as:
c(k) = ic (k) for k = 0,1, .., 15
3.10.9.2 Parity and convolutional encoding for the RATSCCH message
a) Parity bits:
A 14-bit CRC is used for error-detection. These 14 parity bits are generated by the cyclic generator polynomial: g(D) = D14 + D13 + D5 + D3 + D2 +1 from the 35 comfort noise parameter bits. The encoding of the cyclic code is performed in a systematic form, which means that, in GF(2), the polynomial:
d(0)D(48) + d(1)D(47) +… + d(34)D(14) + p(0)D(13) +…+ p(12)D+ p(13)
where p(0), p(1) … p(13) are the parity bits, when divided by g(D), yields a remainder equal to 1+ D + D2 + D3 + D4 + D5 + D6 + D7 + D8 + D9 + D10 + D11 + D12+ D13
The information and parity bits are merged:
u(k) = d(k) for k = 0, 1, …, 34
u(k) = p(k-35) for k = 35, 36, …, 48
b) Convolutional encoder
The comfort noise parameters with parity and tail bits (u(0..48)) are encoded with the ¼ rate
convolutional code defined by the polynomials:
G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4
G3/G3 = 1
G3/G3 = 1
resulting in 212 coded bits, {C(0)… C(211)} defined by:
r(k) = u(k) + r(k-1) + r(k-2) + r(k-3) + r(k-4)
C(4k) = r(k) + r(k-1) + r(k-3) + r(k-4)
C(4k+1) = r(k)+r(k-2)+r(k-4)
C(4k+2) = u(k)
C(4k+3) = u(k) for k = 0, 1, …, 48; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(4k) = r(k)+r(k-1) + r(k-3) + r(k-4)
C(4k+1) = r(k)+r(k-2)+r(k-4)
C(4k+2) = r(k-1)+r(k-2)+r(k-3)+r(k-4)
C(4k+3) = r(k-1)+r(k-2)+r(k-3)+r(k-4) for k = 49, 50, …, 52
This block of data is moved to the coded data (c) as:
c(k+16) = C(k) for k = 0, 1, …, 211
3.10.9.3 Interleaving
The interleaving is done as specified for the TCH/HS in subclause 3.2.3.
3.10.9.4 Mapping on a Burst
The mapping is done as specified for the TCH/HS in subclause 3.2.4.