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.