Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шумов задачи и учебник / [Valeri_P._Ipatov]_Spread_Spectrum_and_CDMA_Princ(Bookos.org).pdf
Скачиваний:
93
Добавлен:
15.04.2015
Размер:
3.46 Mб
Скачать

302

Spread Spectrum and CDMA

 

 

9.5 Channel interleaving

The analysis above rested on the memoryless model, where corrupting effects inflicted on the code symbols by channel interference were independent of each other. In real wireless channels with their shadowing and fading phenomena (see Section 3.5), these additive memoryless effects are supplemented by multiplicative ones: comparatively slow and sporadic drops of a received signal level spanning many code symbols. The technique outlined below is universally relevant regardless of soft or hard decoding mode, but to make the discussion more transparent let us specify a hard decoding procedure. When AWGN is the only channel interference all symbol errors are independent and are randomly scattered along the codewords. Signal drops due to fading cause grouping of symbol errors into packets or bursts. Certainly, if length B of the burst is no greater than the code correction (detection) capability tc (td ), the decoder will with no difficulty correct (detect) B errors, since the specific pattern of errors within the code error control capability is of no matter. The fading nature, however, often leads to rare but rather long error bursts, so that meeting the condition B tc would require codes with a large check symbol overhead, i.e. small rate and wasteful bandwidth utilization. An efficient and feasible alternative is the very popular channel interleaving, under which symbols of the codestream are permuted before transmission to disperse as far as possible those positioned close to each other and, on the other hand, make closer those positioned far apart. At the receiving side deinterleaving takes place, returning all the code symbols to their initial positions. If a burst of errors of length B occurs in the channel, corrupted symbols after deinterleaving will prove to be far from each other as though the errors were independent. If block codes of appropriate length and distance are used these errors will with high probability fall into different words to be corrected by the decoder. With convolutional codes the chance of their correction will again be good, since such codes correct many patterns of errors counting beyond the free distance, unless they gather into too dense packets. The simplest implementation of this technique is a block interleaver writing symbols into a square matrix row by row and then reading them out column by column. Of course, the deinterleaver rearranges the symbols in the reverse manner.

Interleaving is an integral part of the majority of modern digital wireless communication systems, including all 2G and 3G mobile standards.

Problems

9.1.A binary block code of length n ¼ 9 is used for transmitting M ¼ 32 messages. How many check symbols does it have? What is its rate? What is the number of redundant binary observation vectors?

9.2.A binary block code has minimum Hamming distance dH ¼ 7. What is its minimum Euclidean distance if binary symbols are transmitted in FSK mode by non-overlapping pulses of energy Es?

9.3.The binary block code U ¼ f10101, 00011, 11000, 01110g is used for data transmission over BSC. The observation vector is Y ¼ (00110). Into what code vector will it be decoded with error correction? What would be the answer for Y ¼ (11011)? What are the correction and detection capabilities of the code? Is this code linear?

Channel coding in spread spectrum systems

303

 

 

9.4.Prove Proposition 9.2.2.

9.5.What should the minimum distance of a binary code be to correct up to tc errors and above it to detect up to td > tc errors?

9.6.Find the number of binary vectors having weights no greater than td (volume of a binary sphere of radius td ).

9.7.Using the result of Problem 9.6 prove the Gilbert bound: a binary block code detecting up to td errors always exists whenever:

Xtd

ðM 1Þ Cni < 2n

i¼0

where M, n are the number of codewords and code length, respectively.

9.8.Calculate the result of the following operations over binary polynomials:

fðzÞ ¼ ðz3 þ z2 þ 1Þðz4 þ 1Þ ðz2 þ 1Þ2ðz3 1Þ þ z6 þ z2

9.9.Open the brackets in the binary polynomial (z þ 1)2i where i is a positive integer.

9.10.Find the remainder of dividing z5 þ z3 þ 1 by z2 þ z þ 1 over GF(2).

9.11.Let g(z) be a binary polynomial of degree r. Prove that the binary block code of

length n using this generator polynomial (having code polynomials u(z) ¼ b(z)g(z), data polynomials b(z) being arbitrary binary polynomials of degree no greater than n r 1) is linear.

9.12.The binary polynomial g1(z) ¼ z4 þ z þ 1 is primitive. What is the largest length of CRC detecting up to three errors based on this polynomial? Will the observation polynomial y(z) ¼ z8 þ z5 þ z þ 1 be declared erroneous or not? What about the polynomial y(z) ¼ z8 þ z4 þ z þ 1?

9.13.The generator polynomials of a convolutional code are g1(z) ¼ 1, g2(z) ¼ 1 þ z. What are its rate and constraint length? Sketch the encoder scheme, draw the trellis diagram and find the free distance of the code.

9.14. The generator

polynomials of

a convolutional code are g

(z)

¼

1

þ

z

þ

z2

,

2

2

1

 

 

 

 

 

g2(z) ¼ 1 þ z þ z

, g3(z) ¼ 1 þ z

. What are its rate and constraint length?

Sketch

the encoder scheme, draw the trellis diagram and find the free distance of the code.

9.15.One of two generator polynomials of the convolutional code is g1(z) ¼ 1 þ z þ z2. Which of the polynomials g2(z) ¼ 1, g2(z) ¼ 1 þ z or g2(z) ¼ 1 þ z2 is better as the second generator polynomial to maximize the asymptotic coding gain? What is this maximal gain? What sort of implication follows from this problem about comparison of systematic and non-systematic codes?

9.16. Generator

polynomials of the convolutional code are g

(z)

¼

1

þ

z

þ

z2

,

3

1

 

 

 

 

 

g2(z) ¼ 1 þ z

. Encode the bit stream 110110110110110 . . . and explain why this

code enters the class of so-called catastrophic codes, which are not recommended for practical use.

9.17.Decode as many data bits as possible if the observation is 100101100011000 and

the generator polynomials of the convolutional code are g1(z) ¼ 1, g2(z) ¼ 1 þ z and g3(z) ¼ 1 þ z.

9.18.Decode the observation 111111100000001111, if generator polynomials of the convolutional code are as in Problem 9.14 and it is known that after encoding four data bits the encoder is forced to a zero state by tail bits. How far is the

304

Spread Spectrum and CDMA

 

 

decoded word from the observation? If the decoding result is true, how many errors did the decoder correct?

9.19.Revise the decoding procedure of Example 9.3.4, storing all paths entering a node with equal metrics as survivors. Continue after the seventh step up to the first step where decoded data bits may be released. At what step does it occur? How many bits are released?

9.20.The bit stream is encoded by a binary convolutional code with generator poly-

nomials g1(z) ¼ 1, g2(z) ¼ 1 þ z. Binary symbols are transmitted by BPSK (0 ! þ1, 1 ! 1). The communication channel is Gaussian and output observation samples are y ¼ ( 0:5, 0:5, 3, 4, 6, 2, 4, 5, 3, 2). Decode this observation using the hard and soft (based on correlation of the observation with trellis diagram paths) Viterbi algorithm. Assume that the last two code symbols correspond to a tail bit setting the encoder to zero. Explain the difference (if any) of the results of the two procedures. Which of them is more trustworthy?

9.21. Someone wants to build a turbo code starting with the convolutional code

described2

by4

the generator polynomials g1(z) ¼ 1 þ z3 þ z4 and g2(z) ¼

1 þ z þ z

þ z

. Sketch a component encoder of the turbo code.

Matlab-based problems

9.22.Write and run a program to calculate sum, product, quotient and remainder for two arbitrary binary polynomials.

9.23.Write a program that finds a generator polynomial for binary CRC of given length detecting up to three errors.

9.24.Write a program illustrating error detecting by CRC. Recommended steps:

(a)Using the program of Problem 9.23, find an appropriate generator polynomial g(z) for CRC of a given length n detecting up to three errors.

(b)Take any binary error vector of length n and weight 1, 2 or 3 and divide it by the generator polynomial; make sure that for any such vector but zero the syndrome is non-zero.

(c)Take any decimal number smaller than 2n r, where r ¼ deg g(z), and convert it into a binary vector (the function ‘de2bi’ is a good aid for this); multiply the corresponding polynomial by the generator polynomial.

(d)Using the polynomial of the previous item as the error one, check that this error pattern coinciding with some codeword cannot be detected.

(e)Run the program 1000–10 000 times for CRC of length n ¼ 40 200 with independent random error vectors and calculate syndromes. How often do undetected errors happen? Compare the result with the theoretical prediction.

9.25.Write a program running convolutional encoding, given the set of generator polynomials. In Matlab, as is customary, generator polynomials are given in an octal notation. The binary vector of length vc of polynomial coefficients in a power-ascending order is appended if necessary by left zeros to make the length a multiple of three. Then every binary triple is put as an octal figure, the rightmost

Channel coding in spread spectrum systems

305

 

 

bit being the least significant, and the set of n polynomials in octal notation is presented as an n-tuple. For instance polynomials g1(z) ¼ 1 þ z and g2(z) ¼ 1 þ z þ z2 have octal notation (6,7). Run the program for codes with polynomials (7,5), (15,17), (53,75), (561,753), (5,7,7), (25,33,37) and (133,145,175) trying to get a non-zero codeword of minimum weight. What is the trend in the behaviour of free distance versus constraint length and rate?

9.26.Develop the program of Problem 9.25 to find the free distance of a convolutional code. Run the program for codes with polynomials (7,5), (15,17), (23,35), (53,75), (133,171), (247,371), (561,753), (1167,1545), (5,7,7), (13,15,17), (25,33,37), (47,53,75), (133,145,175), (225,331,367), (557,663,711) and (1117,1365,1633).

9.27.Using operators of the Matlab Communication Toolbox, write a program for convolutional hard-decision decoding. Assuming that the transmitted message is 10 c zeros, run the program for the code with generator polynomials (23,35). Enter the error vectors of weight 2–3 and make sure that errors are corrected whenever the parameter ‘tblen’ is around (4 5) c. Try to find the error of weight 4 which is not corrected, and explain why it may not be easy despite the free distance of the code being 7. Increasing the error weight, observe the decoder behaviour. Run the program 1000 times for independent random error patterns of a given weight and calculate bit error probability depending on error weight. Do the same for the codes (47,53,75) and (133,145,175) (free distances 13 and 15, respectively).