Download presentation

Presentation is loading. Please wait.

Published byCharlie Greenhalgh Modified about 1 year ago

1
CHANNEL CODING

2
General Description: Reed-Solomon (R-S) codes are nonbinary cyclic codes with symbols made up of m-bit sequences, where m is any positive integer having a value greater than 2. For the most conventional R-S (n, k) code: (n, k) = (2 m - 1, 2 m -1 - 2t) where k is the number of data symbols being encoded, and n is the total number of code symbols in the encoded block.(Note that :The block length of these codes is n = 2 m - I. These can be extended to 2 m or 2 m + I). t is the symbol-error correcting capability of the code, and (n - k= 2t) is The number of parity symbols (redundant symbols) that must be used to correct t errors. where t obtained from Equation: t = floor ((d min – 1 )/2) = floor ((n – k )/2) Reed-Solomon(RS) codes achieve the largest possible d min of any linear code. For Reed-Solomon codes the code minimum distance is given by: d min = n - k + 1 The encoding algorithm expands a block of k symbols to n symbols by adding (n-k) redundant symbols.

3
The R-S codes perform well against burst noise. We can understand that by this : Example: Consider an (n, k) = (255, 247) R-S code, where each symbol is made up of m =8 bits (such symbols are typically referred to as bytes). Since n - k = 8 so this code can correct any 4 symbol errors in a block of 255. Imagine the presence of a noise burst, lasting for 25-bit durations and disturbing one block of data during transmission, as illustrated in Figure. Notice that a burst of noise that lasts for a duration of 25 continuous bits, must disturb exactly 4 symbols. The R-S decoder will correct the 4-symbols errors, when a decoder corrects a symbol, it replaces the incorrect symbol with the correct one, whether the error was caused by one bit being corrupted or all 8 bits being corrupted.

4
:Applications in modern digital comm. Systems R-S codes are used in many digital appliances such as CDs, and it is used in space and satellite communication such as (255, 223)RS code.(this code is NASA standard code for satellite and space communications).

5
R-S performance as a function of Size, Redundancy : 1. R-S performance as a function of symbol size: The error-correcting codes become more efficient (error performance improves) as the code block size increases. If we assume that the code rate is held constant 7/8,while the block size increases from n = 32 symbols (with m = 5 bits per symbol) to n= 256 (m = 8 bits per symbol).Thus the block size increases from 160 bits to 2048 bits. The performance will be as shown in figure:

6
2. R-S performance as a function of Redundancy: As the redundancy (n-k) of an R-S code increases (lower code rate), its implementation grows in complexity. Also, the bandwidth increase. The benefit of increasing redundancy is to improvement the bit-error performance, as can be seen in Figure below, where the code length n is held at a constant 64, while number of data symbols decreases from k = 60 to k = 4 (redundancy increases from 4 symbols to 60 symbols).

7
FINITE FIELD CONCEPT : In order to understand the encoding and decoding principles of nonbinary codes(such as a Reed-Solomon (R-S) codes) it is necessary to understand the finite fields known as Galois Fields (GF). For any prime number p, there exists a finite field denoted GF(p) containing p elements. GF(P m ) is called extension field of GF(p).(Note that : GF(p) is a subfield of GF(P m )). Symbols from the extension field GF(2 m ) are used in the construction of Reed-Solomon (R-S) codes(Note that:The binary field GF(2) is a subfield of the extension field GF(2 m )). Besides the numbers 0 and 1, there are additional unique elements in the extension field that will be represented with a new symbol α. We denote each of the nonzero elements of field (α) as a polynomial a i (x) Where: For i = 0, 1, 2,..., 2 m -2 α i = a i (x) = a i,0 + a i,1 (x) X + … + a i,m-1 X m-1 A good reason for using this notation is to ease handling of coding and decoding. Because each codeword consist of n symbol(nm bits).

8
Example: (7,3)R-S codewords (GF(23)) (double symbol error correcting R-S code): for m = 3: GF(2 3 ) field has 8 elements (zero + 7 non zero elements), so: GF(2 3 ) = { 0, α 0, α 1, α 2,..., α 6 } α i = a i (x) = a i,0 + a i,1 X + a i,2 X 2 To determine the coefficient of α i we should know the concept of primitive polynomial. A class of polynomials called primitive polynomials is of interest because such functions define the finite fields of GF(2 m ) which in turn are needed to define R-S code. This polynomial is found directly from the below table by the value of m.

9
Let’s continue the example of (7,3)R-S codewords: For m=3(from the previous table):The corresponding primitive polynomial is: f()=1++ 3 Extension field elements α can be represented by the contents of a binary linear feedback shift register (LFSR) formed from a primitive polynomial. By starting the circuit in any nonzero state (say 1 0 0) and performing a right-shift at each clock time That is shown below:

10
Summary: In any R-S coding, we must first know: 1. n and k, from them we can calculate m. 2. Get primitive polynomial from table of the primitive polynomials. 3. Implement LFSR to get values of all nonzero elements (=2 m -1). Multiplication and addition in GF(8) (mean m=8): It can be done by these tables:

11
R-S ENCODING: For all the types of block coding there must be a generator polynomial that has the form: g() = 0 + 1 + 2 2 + ⋯ + 2−1 2−1 + 2 Note that : the generator polynomial is of degree 2t (mean n-k like cyclic codes). We designe the roots of g(X) as: α, α 2,..., α 2t. Example: Consider an R-S (7, 3) : n= 7, k=3,t=(n-k)/2= 2 so it's Generator polynomial is of degree 4 (2t=4), so it has 4 roots: α, α 2, α 3, α 4 g() = ( −) (− 2 )(− 3 )(− 4 ) by multiplication and addition using the multiplication and addition tables g() = 3 + 1 + 0 2 + 3 3 + 4 Encoding in systematic form: Like cyclic codes.We can think of shifting the message polynomial m(X) to the k rightmost terms of the codeword polynomial and then appending a parity polynomial p(X) by placing it in the leftmost n-k term of the codeword polynomial.

12
So the steps of R-S encoding using systematic form is: 1. Multiply m(x) by X n-k. 2. Divide the resultant by g(x) and let the remainder be p(x) (parity polynomial). 3. The resulting code word U(X) is written as: (X)=()+() − Continue with our example: (7,3)R-S codewords: We demonstrate the previous steps by encoding the three-symbol message: g(X)= 3 + 1 + 0 2 + 3 3 + 4 1. We first multiply (up shift) the message polynomial m(X)= 1 + 3 X + 5 X 2 by (X n-k = X 4 ) yielding 1 X 4 + 3 X 5 + 5 X 6 2. We next divide this up shifted message polynomial by the generator polynomial g(X) to get parity polynomial p(X): P(X)= 0 + 2 X+ 4 X 2 + 6 X 3 3. The codeword polynomial can be written : U()=()+() − = 0 + 2 X+ 4 X 2 + 6 X 3 + 1 X 4 + 3 X 5 + 5 X 6

13
Systematic Encoding with an (n - k)-Stage Shift Register : Example: (7,3)R-S codewords: *NOTES: 1. Number of stages in the shift register is (n – k = 4). 2. Each stage in the shift register holds 3-bit symbols at a time.(each coefficient has 3 bits) 3. Switch 1 is closed during the first k clock cycles to allow shifting the message symbols into the (n-k) stage shift register. 4. Switch 2 is in the down position during the first k clock cycles (k=3) in order to allow simultaneous transfer of the message symbols directly to an output register (not shown in the Figure). 5. After transfer of the K th message symbol to the output register, switch 1 is opened and switch 2 is moved to the up position. 6. The remaining (n - k) clock cycles (n-k=4) clear the parity symbols contained in the shift register by moving them to the output register. 7. The total number of clock cycles is equal to n, and the contents of the output register is the codeword polynomial: U(X)= p(X)+X n-k m(X)

14
Continue with our example: The operational steps (analysis) for (7,3)R-S codewords during the first k=3 shifts of the encoding circuit of the Figure below are as follows: U(X) = 0 + 2 X + 4 X 2 + 6 X 3 + 1 X 4 + 3 X 5 + 5 X 6 = (100) + (001)X + (011)X 2 + (101) X 3 + (010) X 4 + (110) X 5 + ( l l l )X 6

15
R-S DECODING: Example: (7,3)R-S codewords: assume that during transmission, this codeword becomes corrupted so that 2 symbols are received in error. error pattern can be described in polynomial form as: The received corrupted-codeword polynomial r(X) is then represented by the sum of the transmitted-codeword polynomial and the error-pattern polynomial as follows: NOTE: in the previous example we assumed the error value and error location (this is just example to illustrate). But in fact in any R-S decoding we need determine the error location and determine the error value (the correct symbol values at those locations).

16
SYNDROME COMPUTATION: The syndrome is the result of a parity check performed on r(X) (received codeword) to determine whether r(X) is a valid member of the codeword set. If in fact r(X) is a member, then the syndrome S has value 0. Any nonzero value of S indicates the presence of errors. The syndrome S is made up of (n-k) symbols, {S i } (For i = 1,..., n - k), There values can be computed from the received polynomial r(X): Since U(X) = m(X)g(X), So roots of g(X) must be roots of U(X). Since r(X) = U(X) + e(X), Then r(X) at roots of g(X) is equal zero only when r(X) is a valid code word (in this case e(X)=0). Any nonzero result is an indication that an error is present. So the syndrome evaluated by this relation: ()| = =() (=1,2,………− ) Continue with our example: (7,3)R-S codewords: (n-k=4): ()| = =() (=1,2,………− ) 1()= 0 + 3 + 6 + 3 + 10 + 8 + 11 = 0 + 3 + 6 + 3 + 6 + 3 + 3 + 1 + 4 = 3 2( 2 ) = 0 + 4 + 8 + 6 + 14 + 13 + 17 = 0 + 4 + 1 + 6 + 0 + 6 + 3 = 5 3( 3 )= 0 + 5 + 10 + 9 + 18 + 18 + 23 = 0 + 5 + 3 + 2 + 4 + 4 +2= 6 4( 4 )= 0 + 6 + 12 + 12 + 22 + 23 + 29 = 0 + 6 + 5 + 5 + 1 + 2 + 1 =0 The results confirm that the received codeword contains an error (which we inserted) since S ≠0.

17
Error Detection and Correction: Error Detection: Suppose there are v errors in the codeword at location, 12 ……..Then, the error polynomial can be written as: e()= 1 1 + 2 2 + ⋯ + To correct the corrupted codeword, each error value e jl and its location, where l = 1, 2,... v,must be determined. We define an error locator number as β l = (instead of X jv ). Next, we obtain the (n-k = 2t ) syndrome symbols by substituting into the received polynomial for il=1,2,..., 2t

18
An error-locator polynomial can be defined as: The roots of σ(X) are 1/β 1, 1/ β 2,..., 1/ β v Then using autoregressive modeling techniques: Example: (7,3)R-S codewords: *NOTE: σ 1 and σ 2 are not the roots of the locator polynomial.(They are the coefficient of the error locator polynomial)

19
The error locator polynomial become: We determine these roots by exhaustive testing of the σ(X) polynomial with each of the field elements as shown below. Any element X that yields (σ(X) = 0) is a root, and allows us to locate an error: 1/β l = α3 Thus β l =1/α3=α4 β l` = 1/α 4 =α 3 Since there are 2-symbol errors here, the error polynomial is of the form: Note: We say that β 1 =α j1 =α 3 and β 2 = α j2 = α 4 So j1=3 and j2=4

20
ERROR VALUES: Now, preparing to determine the error values e 1 and e 2, associated with locations β 1 = α 3 and β 2 =α 4, any of the four syndrome equations can be used. let us use S l and S 2 : Writing two equations in matrix form:

21
CORRECTING THE RECEIVED CODE WORD: The estimated error polynomial is formed to yield: ê()= 23 + 54 let Û(X) be the estimated codeword polynomial: Û()=()+ê()=()+()+ê() We saw that: ()= (100) + (001) + (011) 2+ (100) 3+ (101) 4+ (110) 5+(111)6 ê()= (000) + (000) + (000) 2+ (001) 3+ (111) 4+ (000) 5+(000)6 Û()=(100) + (001) + (011) 2+ (101) 3+ (010) 4+ (110) 5+(111)6 = 0 + 2 + 42 + 63 + 14 + 35 + 56 Since the message symbols constitute the rightmost k = 3 symbols.The decoded message is:

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google