BY: WAEL AHMED
Error detection coding + Error correction coding = Error control coding
Repetition code
Repetition Decoder c = 110001111, The decoded message is m = 101
Parity bit
7 bits of data (number of 1s) 0000000 (0) 8 bits including parity even 00000000 odd 10000000
1010001 (3)
1101001 (4) 1111111 (7)
11010001
01101001 11111111
01010001
11101001 01111111
Checksum
Checksum algorithms
Parity byte or word Modular sum
Cyclic redundancy check (CRC)
11010011101100 000 <--- input left shifted by 3 bits 1011 <--- divisor 01100011101100 000 <--- result 1011 <--------------------- divisor ... 00111011101100 000 1011 00010111101100 000 1011 00000001101100 000 1011 00000000110100 000 1011 00000000011000 000 1011 00000000001110 000 1011 00000000000101 000 1011 ----------------- ------------00000000000000 100 <---remainder (3 bits)
Cyclic redundancy check decoding:
11010011101100 100 <--- input with check value 1011 <--- divisor 01100011101100 100 <--- result 1011 <------------------------ divisor ... 00111011101100 100 ...... 00000000001110 100 1011 00000000000101 100 1011 ------------------ -----------0 <--- remainder
Block code
Hamming weight (number of weights) Minimum distance dmin = code block length data block length. Number of detected errors = dmin 1 Number corrected errors = (dmin 1)/2
Generator Matrix G Encoding x=G*P Parity check & Correcting Matrix H
If the syndrome vector is the null vector (all zeros) then the received word is error-free; if non-zero then the value indicates which bit has been flipped
Decoding Matrix R
Pr = R * r
Hamming(7,4)
Encodes 4 bits of data into 7 bits by adding 3 parity bits.
d1 p1 p2 p3
Yes No
d2
No
d3
No
d4
Yes Ye
Yes Yes
Yes Yes
Yes Yes
Example: Encoding:
Parity check (error free): Parity check (single error):
Decoding:
Pr = R * r
Convolutional code
n1 = m1 + m0 + m-1 n2 = m0 + m-1 n3 = m1 + m-1.
Trellis diagram:
This diagram gives us an idea about decoding: if a received sequence doesn't fit this graph, then it was received with errors, and we must choose the nearest correct (fitting the graph) sequence. The real decoding algorithms exploit this idea.
Decoding convolutional codes
Several algorithms exist for decoding convolutional codes: Viterbi decoders, sequential decoding,
Error control coding
Error detection coding
Repetition code Parity bit Checksum Cyclic redundancy check (CRC)
Error correction coding
Block code Convolutional code