3.9 Adaptive multi rate speech channel at full rate (TCH/AFS)
3GPP45.003GSM/EDGE Channel codingRelease 17TS
This section describes the coding for the different frame formats used for TCH/AFS. The formats used are (in the order they are described):
SID_UPDATE Used to convey comfort noise parameters during DTX
SID_FIRST Marker to define end of speech, start of DTX
ONSET Used to signal the Codec mode for the first speech frame after DTX
SPEECH Speech frames
RATSCCH Frames used to convey RATSCCH messages
In this chapter, sub chapters 3.9.1 to 3.9.5 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 frames ic(7),.., ic(0) |
|
CODEC_MODE_1 |
00 |
0101001100001111 |
00000000 |
|
CODEC_MODE_2 |
01 |
0011111010111000 |
10111010 |
|
CODEC_MODE_3 |
10 |
1000100001100011 |
01011101 |
|
CODEC_MODE_4 |
11 |
1110010111010100 |
11100111 |
3.9.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 or 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 then block interleaved in the same way as SACCH frames.
3.9.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) = ic0(k) for k = 0,1,2,3
c(k) = ic1(k-4) for k = 4, 5, 6, 7
c(k) = ic0(k-4) for k = 8, 9, 10, 11
c(k) = ic1(k-8) for k = 12, 13, 14, 15
c(k) = ic0(k-8) for k = 16, 17, 18, 19
c(k) = ic1(k-12) for k = 20, 21, 22, 23
c(k) = ic0(k-12) for k = 24, 25, 26, 27
c(k) = ic1(k-16) for k = 28, 29, 30, 31
3.9.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(8*k+32) = C(4*k)
c(8*k+33) = C(4*k+1)
c(8*k+34) = C(4*k+2)
c(8*k+35) = C(4*k+3) for k = 0, 1, …, 52
3.9.1.3 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(8*k+36) = IM(4*k)
c(8*k+37) = IM(4*k+1)
c(8*k+38) = IM(4*k+2)
c(8*k+39) = IM(4*k+3) for k = 0, 1, …, 52
3.9.1.4 Interleaving
The interleaving is done as specified for the SACCH in subclause 4.1.4.
3.9.1.5 Mapping on a Burst
The interleaving is done as specified for the SACCH in subclause 4.1.5 with the exception that hl(B) and hu(B) is set to "0".
3.9.2 SID_FIRST
This frame type contains no source data from the speech coder, what is transmitted is the in-band channel (signalling Mode Indication or Mode Command/Mode Request depending on the current frame number) and an identification marker.
3.9.2.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,2,3
c(k) = ic(k-4) for k = 8, 9, 10, 11
c(k) = ic(k-8) for k = 16, 17, 18, 19
c(k) = ic(k-12) for k = 24, 25, 26, 27
3.9.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(8*k+32) = IM(4*k)
c(8*k+33) = IM(4*k+1)
c(8*k+34) = IM(4*k+2)
c(8*k+35) = IM(4*k+3) for k = 0, 1, …, 52
3.9.2.3 Interleaving
The interleaving is done as specified for the TCH/FS in subclause 3.1.3.
3.9.2.4 Mapping on a Burst
The mapping is done as specified for the TCH/FS in subclause 3.1.4. The last 4 bursts shall not be transmitted unless the SID_FIRST frame is immediately followed by a speech frame.
3.9.3 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.9.3.1 Coding of in-band data
The in-band data, Mode Indication id1(0,1), is encoded to ic1(0..15). This sequence is then repeated 14 times more, and the last 12 bits are discarded (15*16-12=228) giving the sequence ic1(0..227).
This sequence is then moved to c as:
c(8*k+4) = ic1(4*k)
c(8*k+5) = ic1(4*k+1)
c(8*k+6) = ic1(4*k+2)
c(8*k+7) = ic1(4*k+3) for k = 0, 1, …, 56
3.9.3.2 Interleaving
The coded bits are reordered and interleaved according to the following rule:
i(B,j) = c(n,k), for k = 4,5,6,7, 12,13,14,15,20,21,22,23 …,455
n = 0,1,…,N,N+1,…
B = B0 + 4n + (k mod 8) – 4
j = 2((49k) mod 57) + ((k mod 8) div 4)
See table 1. The result of the interleaving is a distribution of the defined 228 bits of a given data block of size 456 bits, n = N, over 4 blocks using the odd numbered bits. The even numbered bits of these 4 blocks will be filled by the speech frame for which this frame is the ONSET.
3.9.3.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,57) = hl(B)
The bit labelled hl(B) on burst number B is a flag used for indication of control channel signalling. For each ONSET block not stolen for signalling purposes:
hl(B) = 0 for the 4 bursts (indicating status of odd numbered bits)
For the use of hl(B) when an ONSET is stolen for signalling purposes see subclause 4.2.5.
3.9.4 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 eight 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.9.4.1 Coding of the in-band data
The two input in-band bits (id(0,1)) are coded to eight coded in-band bits (ic(0..7)).
The encoded in-band bits are moved to the coded bits, c, as
c(k) = ic(k) for k = 0, 1, …, 7.
3.9.4.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 7 to 16 define the correct rearrangement for the speech codec modes 12.2 kbit/s, 10.2 kbit/s, 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/AFS12.2 |
244 |
|
TCH/AFS10.2 |
204 |
|
TCH/AFS7.95 |
159 |
|
TCH/AFS7.4 |
148 |
|
TCH/AFS6.7 |
134 |
|
TCH/AFS5.9 |
118 |
|
TCH/AFS5.15 |
103 |
|
TCH/AFS4.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 two 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.
No unprotected bits are used.
The number of class 1 (sum of class 1a and 1b), class 1a and class 1b 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 |
|
TCH/AFS12.2 |
244 |
244 |
81 |
163 |
|
TCH/AFS10.2 |
204 |
204 |
65 |
139 |
|
TCH/AFS7.95 |
159 |
159 |
75 |
84 |
|
TCH/AFS7.4 |
148 |
148 |
61 |
87 |
|
TCH/AFS6.7 |
134 |
134 |
55 |
79 |
|
TCH/AFS5.9 |
118 |
118 |
55 |
63 |
|
TCH/AFS5.15 |
103 |
103 |
49 |
54 |
|
TCH/AFS4.75 |
95 |
95 |
39 |
56 |
3.9.4.3 Parity for speech frames
The basic parameters for each codec mode for the first encoding step are shown below:
|
Codec mode |
Speech encoded bits (Kd) |
CRC protected bits (Kd1a) |
Number of bits after first encoding step (Ku = Kd + 6) |
|
TCH/AFS12.2 |
244 |
81 |
250 |
|
TCH/AFS10.2 |
204 |
65 |
210 |
|
TCH/AFS7.95 |
159 |
75 |
165 |
|
TCH/AFS7.4 |
148 |
61 |
154 |
|
TCH/AFS6.7 |
134 |
55 |
140 |
|
TCH/AFS5.9 |
118 |
55 |
124 |
|
TCH/AFS5.15 |
103 |
49 |
109 |
|
TCH/AFS4.75 |
95 |
39 |
101 |
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 as shown above for each codec mode. 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/AFS12.2:
u(k) = d(k) for k = 0, 1, …, 80
u(k) = p(k-81) for k = 81, 82, …, 86
u(k) = d(k-6) for k = 87, 88, …, 249
TCH/AFS10.2:
u(k) = d(k) for k = 0, 1, …, 64
u(k) = p(k-65) for k = 65, 66, …, 70
u(k) = d(k-6) for k = 71, 72, …, 209
TCH/AFS7.95:
u(k) = d(k) for k = 0, 1, …, 74
u(k) = p(k-75) for k = 75, 76, …, 80
u(k) = d(k-6) for k = 81, 82, …, 164
TCH/AFS7.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, …, 153
TCH/AFS6.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, …, 139
TCH/AFS5.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, …, 123
TCH/AFS5.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, …, 108
TCH/AFS4.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, …, 100
3.9.4.4 Convolutional encoder
The bits from the first encoding step (u(k)) are encoded with the recursive systematic convolutional codes as summarised below. The number of output bits after puncturing is 448 for all codec modes.
|
Codec mode |
Rate |
Number of input bits to conv. coder |
Number of output bits from conv. coder |
Number of punctured bits |
|
TCH/AFS12.2 |
½ |
250 |
508 |
60 |
|
TCH/AFS10.2 |
1/3 |
210 |
642 |
194 |
|
TCH/AFS7.95 |
1/3 |
165 |
513 |
65 |
|
TCH/AFS7.4 |
1/3 |
154 |
474 |
26 |
|
TCH/AFS6.7 |
¼ |
140 |
576 |
128 |
|
TCH/AFS5.9 |
¼ |
124 |
520 |
72 |
|
TCH/AFS5.15 |
1/5 |
109 |
565 |
117 |
|
TCH/AFS4.75 |
1/5 |
101 |
535 |
87 |
Below the coding for each codec mode is specified in detail.
TCH/AFS12.2:
The block of 250 bits {u(0)… u(249)} 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 508 coded bits, {C(0)… C(507)} 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, …, 249; 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 = 250, 251, …, 253
The code is punctured in such a way that the following 60 coded bits:
C(321), C(325), C(329), C(333), C(337), C(341), C(345), C(349), C(353), C(357), C(361), C(363), C(365), C(369), C(373), C(377), C(379), C(381), C(385), C(389), C(393), C(395), C(397), C(401), C(405), C(409), C(411), C(413), C(417), C(421), C(425), C(427), C(429), C(433), C(437), C(441), C(443), C(445), C(449), C(453), C(457), C(459), C(461), C(465), C(469), C(473), C(475), C(477), C(481), C(485), C(489), C(491), C(493), C(495), C(497), C(499), C(501), C(503), C(505) and C(507)
are not transmitted. The result is a block of 448 coded and punctured bits, P(0)…P(447) which are appended to the in-band bits in c as
c(k+8) = P(k) for k = 0, 1, …, 447.
TCH/AFS10.2:
The block of 210 bits {u(0)… u(209)} 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 642 coded bits, {C(0)… C(641)} 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, …, 209
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 = 210, 211, …, 213
The code is punctured in such a way that the following 194 bits:
C(1), C(4), C(7), C(10), C(16), C(19), C(22), C(28), C(31), C(34), C(40), C(43), C(46), C(52), C(55), C(58), C(64), C(67), C(70), C(76), C(79), C(82), C(88), C(91), C(94), C(100), C(103), C(106), C(112), C(115), C(118), C(124), C(127), C(130), C(136), C(139), 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(244), C(247), C(250), C(256), C(259), C(262), C(268), C(271), C(274), C(280), C(283), C(286), C(292), C(295), C(298), C(304), C(307), C(310), C(316), C(319), C(322), C(325), C(328), C(331), C(334), C(337), C(340), C(343), C(346), C(349), C(352), C(355), C(358), C(361), C(364), C(367), C(370), C(373), C(376), C(379), C(382), C(385), C(388), C(391), C(394), C(397), C(400), C(403), C(406), C(409), C(412), C(415), C(418), C(421), C(424), C(427), C(430), C(433), C(436), C(439), C(442), C(445), C(448), C(451), C(454), C(457), C(460), C(463), C(466), C(469), C(472), C(475), C(478), C(481), C(484), C(487), C(490), C(493), C(496), C(499), C(502), C(505), C(508), C(511), C(514), C(517), C(520), C(523), C(526), C(529), C(532), C(535), C(538), C(541), C(544), C(547), C(550), C(553), C(556), C(559), C(562), C(565), C(568), C(571), C(574), C(577), C(580), C(583), C(586), C(589), C(592), C(595), C(598), C(601), C(604), C(607), C(609), C(610), C(613), C(616), C(619), C(621), C(622), C(625), C(627), C(628), C(631), C(633), C(634), C(636), C(637), C(639) and C(640)
are not transmitted. The result is a block of 448 coded and punctured bits, P(0)…P(447) which are appended to the in-band bits in c as:
c(k+8) = P(k) for k = 0, 1, …, 447.
TCH/AFS7.95:
The block of 165 bits {u(0)… u(164)} 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 513 coded bits, {C(0)… C(512)} 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, …, 164; 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 = 165, 166, …, 170
The code is punctured in such a way that the following 65 coded bits:
C(1), C(2), C(4), C(5), C(8), C(22), C(70), C(118), C(166), C(214), C(262), C(310), C(317), C(319), C(325), C(332), C(334), C(341), C(343), C(349), C(356), C(358), C(365), C(367), C(373), C(380), C(382), C(385), C(389), C(391), C(397), C(404), C(406), C(409), C(413), C(415), C(421), C(428), C(430), C(433), C(437), C(439), C(445), C(452), C(454), C(457), C(461), C(463), C(469), C(476), C(478), C(481), C(485), C(487), C(490), C(493), C(500), C(502), C(503), C(505), C(506), C(508), C(509), C(511) and C(512)
are not transmitted. The result is a block of 448 coded and punctured bits, P(0)…P(447) which are appended to the in-band bits in c as
c(k+8) = P(k) for k = 0, 1, …, 447.
TCH/AFS7.4:
The block of 154 bits {u(0)… u(153)} 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 474 coded bits, {C(0)… C(473)} 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, …, 153
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 = 154, 155, …, 157
The code is punctured in such a way that the following 26 bits:
C(0), C(355), C(361), C(367), C(373), C(379), C(385), C(391), C(397), C(403), C(409), C(415), C(421), C(427), C(433), C(439), C(445), C(451), C(457), C(460), C(463), C(466), C(468), C(469), C(471) and C(472)
are not transmitted. The result is a block of 448 coded and punctured bits, P(0)…P(447) which are appended to the in-band bits in c as:
c(k+8) = P(k) for k = 0, 1, …, 447.
TCH/AFS6.7:
The block of 140 bits {u(0)… u(139)} is encoded with the ¼ 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
G3/G3 = 1
resulting in 576 coded bits, {C(0)… C(575)} 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, …, 139; 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 = 140, 141, …, 143
The code is punctured in such a way that the following 128 coded bits:
C(1), C(3), C(7), C(11), C(15), C(27), C(39), C(55), C(67), C(79), C(95), C(107), C(119), C(135), C(147), C(159), C(175), C(187), C(199), C(215), C(227), C(239), C(255), C(267), C(279), C(287), C(291), C(295), C(299), C(303), C(307), C(311), C(315), C(319), C(323), C(327), C(331), C(335), C(339), C(343), C(347), C(351), C(355), C(359), C(363), C(367), C(369), C(371), C(375), C(377), C(379), C(383), C(385), C(387), C(391), C(393), C(395), C(399), C(401), C(403), C(407), C(409), C(411), C(415), C(417), C(419), C(423), C(425), C(427), C(431), C(433), C(435), C(439), C(441), C(443), C(447), C(449), C(451), C(455), C(457), C(459), C(463), C(465), C(467), C(471), C(473), C(475), C(479), C(481), C(483), C(487), C(489), C(491), C(495), C(497), C(499), C(503), C(505), C(507), C(511), C(513), C(515), C(519), C(521), C(523), C(527), C(529), C(531), C(535), C(537), C(539), C(543), C(545), C(547), C(549), C(551), C(553), C(555), C(557), C(559), C(561), C(563), C(565), C(567), C(569), C(571), C(573) and C(575)
are not transmitted. The result is a block of 448 coded bits, P(0)…P(447) which are appended to the in-band bits in c as
c(k+8) = P(k) for k = 0, 1, …, 447.
TCH/AFS5.9:
The block of 124 bits {u(0)… u(123)} is encoded with the ¼ rate convolutional code defined by the following polynomials:
G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6
G5/G6 = 1 + D + D4 + D6 / 1 + D + D2 + D3 + D4 + D6
G6/G6 = 1
G6/G6 = 1
resulting in 520 coded bits, {C(0)… C(519)} defined by:
r(k) = u(k) + r(k-1) + r(k-2) + r(k-3) + r(k-4) + r(k-6)
C(4k) = r(k) + r(k-2) + r(k-3) + r(k-5) + r(k-6)
C(4k+1) = r(k) + r(k-1) + r(k-4) + r(k-6)
C(4k+2) = u(k)
C(4k+3) = u(k)
for k = 0, 1, …, 123; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(4k) = r(k)+r(k-2) + r(k-3) + r(k-5) + r(k-6)
C(4k+1) = r(k)+r(k-1)+r(k-4)+r(k-6)
C(4k+2) = r(k-1)+r(k-2)+ r(k-3)+r(k-4)+r(k-6)
C(4k+3) = r(k-1)+r(k-2)+ r(k-3)+r(k-4)+r(k-6)
for k = 124, 125, …, 129
The code is punctured in such a way that the following 72 coded bits:
C(0), C(1), C(3), C(5), C(7), C(11), C(15), C(31), C(47), C(63), C(79), C(95), C(111), C(127), C(143), C(159), C(175), C(191), C(207), C(223), C(239), C(255), C(271), C(287), C(303), C(319), C(327), C(331), C(335), C(343), C(347), C(351), C(359), C(363), C(367), C(375), C(379), C(383), C(391), C(395), C(399), C(407), C(411), C(415), C(423), C(427), C(431), C(439), C(443), C(447), C(455), C(459), C(463), C(467), C(471), C(475), C(479), C(483), C(487), C(491), C(495), C(499), C(503), C(507), C(509), C(511), C(512), C(513), C(515), C(516), C(517) and C(519)
are not transmitted. The result is a block of 448 coded and punctured bits, P(0)…P(447) which are appended to the in-band bits in c as
c(8+k) = P(k) for k = 0, 1, …, 447.
TCH/AFS5.15:
The block of 109 bits {u(0)… u(108)} is encoded with the 1/5 rate convolutional code defined by the following polynomials:
G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
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 565 coded bits, {C(0)… C(564)} defined by:
r(k) = u(k) + r(k-1) + r(k-2) + r(k-3) + r(k-4)
C(5k) = r(k) + r(k-1) + r(k-3) + r(k-4)
C(5k+1) = r(k) + r(k-1) + r(k-3) + r(k-4)
C(5k+2) = r(k)+r(k-2)+r(k-4)
C(5k+3) = u(k)
C(5k+4) = u(k)
for k = 0, 1, …, 108; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(5k) = r(k)+r(k-1) + r(k-3) + r(k-4)
C(5k+1) = r(k)+r(k-1) + r(k-3) + r(k-4)
C(5k+2) = r(k)+r(k-2)+r(k-4)
C(5k+3) = r(k-1)+r(k-2)+r(k-3)+r(k-4)
C(5k+4) = r(k-1)+r(k-2)+r(k-3)+r(k-4) for k = 109, 110, …, 112
The code is punctured in such a way that the following 117 coded bits:
C(0), C(C(4), C(5), C(9), C(10), C(14), C(15), C(20), C(25), C(30), C(35), C(40), C(50), C(60), C(70), C(80), C(90), C(100), C(110), C(120), C(130), C(140), C(150), C(160), C(170), C(180),C(190), C(200), C(210), C(220), C(230), C(240), C(250), C(260), C(270), C(280),C(290), C(300), C(310), C(315), C(320), C(325), C(330), C(334), C(335), C(340), C(344), C(345), C(350), C(354), C(355), C(360), C(364), C(365), C(370), C(374), C(375), C(380), C(384), C(385), C(390), C(394), C(395), C(400), C(404), C(405), C(410), C(414), C(415), C(420), C(424), C(425), C(430), C(434), C(435), C(440), C(444), C(445), C(450), C(454), C(455), C(460), C(464), C(465), C(470), C(474), C(475), C(480), C(484), C(485), C(490), C(494), C(495), C(500), C(504), C(505), C(510), C(514), C(515), C(520), C(524), C(525), C(529), C(530), C(534), C(535), C(539), C(540), C(544), C(545), C(549), C(550), C(554), C(555), C(559), C(560) and C(564)
are not transmitted. The result is a block of 448 coded and punctured bits, P(0)…P(447) which are appended to the in-band bits in c as
c(8+k) = P(k) for k = 0, 1, …, 447.
TCH/AFS4.75:
The block of 101 bits {u(0)… u(100)} is encoded with the 1/5 rate convolutional code defined by the following polynomials:
G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6
G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6
G5/G6 = 1 + D + D4 + D6 / 1 + D + D2 + D3 + D4 + D6
G6/G6 = 1
G6/G6 = 1
resulting in 535 coded bits, {C(0)… C(534)} defined by:
r(k) = u(k) + r(k-1) + r(k-2) + r(k-3) + r(k-4) + r(k-6)
C(5k) = r(k) + r(k-2) + r(k-3) + r(k-5) + r(k-6)
C(5k+1) = r(k) + r(k-2) + r(k-3) + r(k-5) + r(k-6)
C(5k+2) = r(k) + r(k-1) + r(k-4) + r(k-6)
C(5k+3) = u(k)
C(5k+4) = u(k)
for k = 0, 1, …, 100; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(5k) = r(k)+r(k-2) + r(k-3) + r(k-5) + r(k-6)
C(5k+1) = r(k)+r(k-2) + r(k-3) + r(k-5) + r(k-6)
C(5k+2) = r(k)+r(k-1)+r(k-4)+r(k-6)
C(5k+3) = r(k-1)+r(k-2)+ r(k-3)+r(k-4)+r(k-6)
C(5k+4) = r(k-1)+r(k-2)+ r(k-3)+r(k-4)+r(k-6)
for k = 101, 102, …, 106
The code is punctured in such a way that the following 87 coded bits:
C(0), C(1), C(2), C(4), C(5), C(7), C(9), C(15), C(25), C(35), C(45), C(55), C(65), C(75), C(85), C(95), C(105), C(115), C(125), C(135), C(145), C(155), C(165), C(175), C(185), C(195), C(205), C(215), C(225), C(235), C(245), C(255), C(265), C(275), C(285), C(295), C(305), C(315), C(325), C(335), C(345), C(355), C(365), C(375), C(385), C(395), C(400), C(405), C(410), C(415), C(420), C(425), C(430), C(435), C(440), C(445), C(450), C(455), C(459), C(460), C(465), C(470), C(475), C(479), C(480), C(485), C(490), C(495), C(499), C(500), C(505), C(509), C(510), C(515), C(517), C(519), C(520), C(522), C(524), C(525), C(526), C(527), C(529), C(530), C(531), C(532) and C(534)
are not transmitted. The result is a block of 448 coded and punctured bits, P(0)…P(447) which are appended to the inband bits in c as
c(8+k) = P(k) for k = 0, 1, …, 447.
3.9.4.5 Interleaving
The interleaving is done as specified for the TCH/FS in subclause 3.1.3.
3.9.4.6 Mapping on a Burst
The mapping is done as specified for the TCH/FS in subclause 3.1.4.
3.9.5 RATSCCH
The RATSCCH message consists of 35 bits. Also delivered are two in-band channels, id0(0,1) and id1(0,1), id0 corresponding to Mode Commands or 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 RATSCCH 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 then block interleaved in the same way as a normal speech frame.
3.9.5.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).
These bits are moved to the coded bits c as:
c(k) = ic1(k) for k = 0,1, …, 15
c(k+228) = ic0(k) for k = 0, 1, …, 15
3.9.5.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+244) = C(k) for k = 0, 1, …, 211
3.9.5.3 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.9.5.4 Interleaving
The interleaving is done as specified for the TCH/FS in subclause 3.1.3.
3.9.5.5 Mapping on a Burst
The mapping is done as specified for the TCH/FS in subclause 3.1.4.