3.14 Wideband Adaptive multi rate speech channel at full rate (TCH/WFS)
3GPP45.003GSM/EDGE Channel codingRelease 17TS
This section describes the coding for the different frame formats used for TCH/WFS. 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.14.1 to 3.14.4 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.14.1 SID_UPDATE
The SID_UPDATE frames are handled as specified for the TCH/AFS in subclause 3.9.1.
3.14.2 SID_FIRST
The SID_FIRST frames are handled as specified for the TCH/AFS in subclause 3.9.2.
3.14.3 ONSET
The Onset frames are handled as specified for the TCH/AFS in subclause 3.9.3.
3.14.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 seven 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.14.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.14.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 16 to 18 define the correct rearrangement for the speech codec modes 12.65 kbit/s, 8.85 kbit/s and 6.60 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.190 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/WFS12.65 |
253 |
|
TCH/WFS8.85 |
177 |
|
TCH/WFS6.60 |
132 |
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.
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/WFS12.65 |
253 |
253 |
72 |
181 |
|
TCH/WFS8.85 |
177 |
177 |
64 |
113 |
|
TCH/WFS6.60 |
132 |
132 |
54 |
78 |
3.14.4.3 Parity for speech frames
The basic parameters for each codec mode for the first encoding step are shown below:
|
Codec mode |
Number of class 1 bits (Kd1) |
CRC Protected bits (Kd1a) |
CRC bits |
Number of bits after first encoding step (Ku = Kd + 8/6) |
|
TCH/WFS12.65 |
253 |
72 |
6 |
259 |
|
TCH/WFS8.85 |
177 |
64 |
6 |
183 |
|
TCH/WFS6.60 |
132 |
54 |
8 |
140 |
A 8-bit or 6-bit CRC is used for error-detection. These parity bits are generated by the cyclic generator polynomial: g8(D) = D8 + D4 + D3 + D2 + 1 or g6(D) = D6 + D5 + D3 + D2 + D1 + 1 respectively 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+n-1) + d(1)D(Kd1a+n-2) +… + d(Kd1a-1)D(n) + p(0)D(n-1) +…+ p(n-2)D+ p(n-1)
where p(0), p(1) … p(n) are the parity bits (n=8 or 6), when divided by g8(D) or g6(D), yields a remainder equal to:
1+ D + … + Dn-1.
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+ (n–1)
u(k) = d(k-n) for k = Kd1a+n, Kd1a+n+1, …, Ku-1
Thus, after the first encoding step u(k) will be defined by the following contents for each codec mode:
TCH/WFS12.65:
u(k) = d(k) for k = 0, 1, …, 71
u(k) = p(k-72) for k = 72, 73, …, 77
u(k) = d(k-6) for k = 78, 79, …, 258
TCH/WFS8.85:
u(k) = d(k) for k = 0, 1, …, 63
u(k) = p(k-64) for k = 64, 65, …, 69
u(k) = d(k-6) for k = 70, 71, …, 182
TCH/WFS6.60:
u(k) = d(k) for k = 0, 1, …, 53
u(k) = p(k-54) for k = 54, 55, …, 61
u(k) = d(k-8) for k = 62, 63, …, 139
3.14.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/WFS12.65 |
½ |
259 |
526 |
78 |
|
TCH/WFS8.85 |
1/3 |
183 |
561 |
113 |
|
TCH/WFS6.60 |
¼ |
140 |
576 |
128 |
Below the coding for each codec mode is specified in detail. The puncturing for each mode is designed to give an even protection of the class 1A bits while the protection within class 1B is not equal to reflect the individual error sensitivity of the class 1B bits.
TCH/WFS12.65:
The block of 259 bits {u(0)… u(258)} 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 518 coded bits, {C(0)… C(517)} 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, …, 258; 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 = 259, 260, …, 262
The code is punctured in such a way that the following 78 coded bits:
C(1), C(17), C(33), C(191), C(207), C(223), C(239), C(251), C(253), C(255), C(267), C(269), C(271), C(283), C(285), C(287), C(297), C(299), C(301), C(303), C(313), C(315), C(317), C(319), C(329), C(331), C(333), C(335), C(345), C(347), C(349), C(351), C(361), C(363), C(365), C(367), C(377), C(379), C(381), C(383), C(393), C(395), C(397), C(399), C(409), C(411), C(413), C(415), C(425), C(427), C(429), C(431), C(441), C(443), C(445), C(447), C(457), C(459), C(461), C(463), C(473), C(475), C(477), C(479), C(487), C(489), C(491), C(493), C(495), C(503), C(505), C(507), C(509), C(511), C(519), C(521), C(523), C(525)
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/WFS8.85:
The block of 183 bits {u(0)… u(182)} is encoded with the 1/3 rate convolutional code defined by the following polynomials:
G1/G1 = 1
G2/G1 = 1 + D2 + D4 / 1 + D + D3 + D4
G3/G1 = 1 + D + D2 + D3 + D4 / 1 + D + D3 + D4
resulting in 549 coded bits, {C(0)… C(548)} defined by:
r(k) = u(k) + r(k-1) +r(k-3) + r(k-4)
C(3k) = u(k)
C(3k+1) = r(k)+r(k-2) + r(k-4)
C(3k+2) = r(k) + r(k-1)+r(k-2)+r(k-3)+r(k-4) for k = 0, 1, …, 182; r(k) = 0 for k<0
and (for termination of the coder):
r(k) = 0
C(3k) = 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) + r(k-1)+r(k-2)+r(k-3)+r(k-4) for k = 183, 184, …, 186
The code is punctured in such a way that the following 113 coded bits:
C(2), C(20), C(23), C(44), C(47), C(71), C(95), C(119), C(143), C(167), C(191), C(212), C(215), C(227), C(230), C(233), C(236), C(239), C(251), C(254), C(257), C(260), C(263), C(275), C(278), C(281), C(284), C(287), C(299), C(302), C(305), C(308), C(311), C(323), C(326), C(329), C(332), C(335), C(341), C(344), C(347), C(350), C(353), C(356), C(359), C(365), C(368), C(371), C(374), C(377), C(380), C(383), C(386), C(389), C(392), C(395), C(398), C(401), C(404), C(407), C(410), C(413), C(416), C(419), C(422), C(425), C(428), C(431), C(434), C(437), C(440), C(443), C(446), C(449), C(452), C(455), C(458), C(461), C(464), C(467), C(470), C(473), C(476), C(479), C(485), C(488), C(491), C(494), C(497), C(500), C(503), C(506), C(509), C(512), C(515), C(518), C(521), C(524), C(527), C(530), C(533), C(536), C(539), C(542), C(545), C(548), C(551), C(553), C(554), C(556), C(557), C(559), C(560)
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/WFS6.60:
The block of 140 bits {u(0)… u(139)} is encoded with the ¼ rate convolutional code defined by the following polynomials:
G1/G1 = 1
G2/G1 = 1 + D2 + D4 / 1 + D + D3 + D4
G3/G1 = 1 + D + D2 + D3 + D4 / 1 + D + D3 + D4
G1/G1 = 1
resulting in 560 coded bits, {C(0)… C(559)} defined by:
r(k) = u(k) + r(k-1) +r(k-3) + r(k-4)
C(4k) = u(k)
C(4k+1) = r(k) + r(k-2) + r(k-4)
C(4k+2) = r(k) + r(k-1)+r(k-2)+ r(k-3)+r(k-4)
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-1) + r(k-3) + r(k-4)
C(4k+1) = r(k)+r(k-2) + r(k-4)
C(4k+2) = r(k) + r(k-1)+r(k-2)+ r(k-3)+r(k-4)
C(4k+3) = r(k-1) + 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(3), C(7), C(11), C(15), C(27), C(31), C(35), C(39), C(51), C(55), C(59), C(75), C(79), C(83), C(99), C(103), C(107), C(123), C(127), C(131), C(147), C(151), C(155), C(171), C(175), C(179), C(195), C(199), C(203), C(219), C(223), C(227), C(231), C(243), C(247), C(251), C(255), C(267), C(271), C(275), C(279), C(283), 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(371), C(375), C(379), C(382), C(383), C(387), C(391), C(395), C(399), C(403), C(406), C(407), C(411), C(415), C(419), C(423), C(427), C(430), C(431), C(435), C(439), C(443), C(447), C(451), C(454), C(455), C(459), C(463), C(467), C(471), C(475), C(478), C(479), C(483), C(487), C(491), C(495), C(499), C(502), C(503), C(507), C(511), C(515), C(519), C(523), C(526), C(527), C(531), C(535), C(539), C(543), C(547), C(550), C(551), C(555), C(559), C(562), C(563), C(566), C(567), C(569), C(570), C(571), C(573), C(574), C(575)
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.14.4.5 Interleaving
The interleaving is done as specified for the TCH/FS in subclause 3.1.3.
3.14.4.6 Mapping on a Burst
The mapping is done as specified for the TCH/FS in subclause 3.1.4.
3.14.5 RATSCCH
The RATSCCH frames are handled as specified for TCH/AFS in subclause 3.9.5.