6. Block Codes
● Divide the message into blocks each of k bits
called data words.
● Add r redundant bits to each blocks to make
the length n = k+r.
● Examples : Hamming Codes, Reed-Muller
Codes
7. Redundancy Coding
● In n-redundancy coding, each data bit is encoded in n
bits.
● In a 3-redundancy coding scheme, a ‘0’ data bit is
encoded as ‘000’ and a ‘1’ data bit is encoded as ‘111’.
8. How does it reduce the error?
❏ The decoder is taking blocks of n bits.
❏ The decoder expects all n bits to have the same value
❏ When the n bits in a block do not have the same value,
the decoder detects an error
❏ n-redundancy coding can correct up to (n-1)/2 bits in a
code
11. Hamming Code
❏ Hamming codes can correct one-bit errors
❏ 2r >= n + r + 1 , r=redundancy bits
n=data bits
12. Redundancy bits calculation
r1 will take care of these bits
r2 will take care of these bits
r4 will take care of these bits
r8 will take care of these bits
15. Reed Muller Code:R(1,3)
One of the interesting things about these codes is that
there are several ways to describe them and we shall look
at one of these-
1st order Reed Muller R(1,3) which can correct one bit
error.
17. Encoding
❏ rows in the generator matrix = Dimension
❏ So 3 vectors are there and hence total length of the code to be sent =23
❏ Let m = (m1, m2, . . . mk) be a block, the encoded message Mc is
Mc=∑i=1,kmiri
where ri is a row of the encoding matrix of R(r, m).
❏ For example, using R(1, 3) to encode m = (0110) gives:
0 ∗(11111111) + 1 ∗(11110000) + 1 ∗(11001100) + 0 ∗(10101010) =
(00111100)
18. Decoding
❏ The rows of this matrix are basis vectors for the code v0, v1,v2 and v3.
❏ Any vector v of the code is a linear combination of these v =
a0v0+a1v1+a2v2 + a3v3
❏ If no errors occur, a received vector r = (y0, y1, y2, y3, y4, y5, y6,y7)
a1 =y0 +y1 =y2 +y3 =y4 +y5 =y6 +y7
a2 =y0 +y2 =y1 +y3 =y4 +y6 =y5 +y7
a3 =y0 +y4 =y1 +y5 =y2 +y6 =y3 +y7
❏ If one error has occurred in r, then when all the calculations above are
made, 3 of the 4 values will agree for each ai, so the correct value will be
obtained by majority decoding.
a0 =r + a1v1 + a2v2 + a3v3
19. Example
Let m=1101 & Suppose that v = 10100101 is received as r= 10101101. Using,
a1 =y0 +y1 =y2 +y3 =y4 +y5 =y6 +y7
a2 =y0 +y2 =y1 +y3 =y4 +y6 =y5 +y7
a3 =y0 +y4 =y1 +y5 =y2 +y6 =y3 +y7 we calculate:
a1 =1=1=0=1
a2 =0=0=1=0
a3 =0=1=1=1
a1 =1 a2 =0 a3 =1
a0 =r + a1v1 + a2v2 + a3v3
So,10101101 + 01010101 + 00001111 = 11110111.
➔ a0 = 1
20. Contd..
❏ Decoded data bits are:a0 a1 a2 a3 =1101
v = a0v0 + a1v1 + a2v2 + a3v3
v = 11111111 + 01010101 + 00001111 = 10100101
❏ On comparing with r=10101101 we can find the error bit which is the fifth
bit.
21. References
❏ Reed-Muller Error Correcting Codes by Ben Cooke:
❏ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.
1.1.208.440&rep=rep1&type=pdf
❏ Error Correction Code by Todd K Moon
❏ Hamming Block Codes:
http://web.udl.es/usuaris/carlesm/docencia/xc1/Treba
lls/Hamming.Treball.pdf
22. End of the presentation
ThankYou
Akshit Jain 2013124
Nitin Varun 2013070
Editor's Notes
This topic is motivated by the problem of communicating reliably over noisy chan- nels — where the data sent over the channel may come out corrupted on the other end, butbut the receiver wasn’t able to correct the errors and recover the original message.
The data is transmitted in the form of binary bits 1’s and 0’s.The encoder converts the message in binary and is transmitted by the transmitter.
During the transmission the data due to noise or multipath propogation may get corrupted i.e the bits may flip or lost.
These are the basically the forms of data transmitted and the errors
The solution to the problem is chanel coding i.e error correction by encoding the message with some redundant bits and making the receiver side decode the message.This will prevent the continuous call to retransmission and hence save bandwidth and time and cost.
Block codes are one of the kind of methods of error correction.In these methods we divide our message into equally sized blocks which is called data words. And in it we also add extra bits which is called redundant bits to the original data which will be used later to correct errors in the message.we will discuss two block codes methods Hamming codes and Reed Muller.
Before discussing humming and reed muller let’s first discuss one of the simplest block codes Redundancy coding.In it we send each bits multiple times depending upon redundancy level. As we can see from given example we want to send 100 and we encoded our message by repeating each bit 3 times
Now how does it reduces error. the decoder will take blocks of n bits depending upon our redundancy level. and will check bits in each block if all the bits are not same in a block then there is an error and it will check for the majority bits in the block and select that bit. So basically we know that for n bits the majority bit will be that bit which occurs more than n -1 /2 times.if there are less than or equal to n-1 /2 errors in a block then it can correct that errors.
here we can see how redundant coding is useful in reducing errors in received messages.
the hamming code can correct upto one bit errors.Suppose we want to send n bits then according to this equation we can detect the number of redundancy bits required to detect and correct that error.
From the figure
We arrange all these bits in a pattern and the redundancy bits are arranged on the 2^ positions.This is till the no. of redundancy bits gets completed and then we arrange the data bits at remaining positions.
[Look at the figure] the parity bits are calculated using the data bits and they are used in some order and here it is
explain for each parity bit.
Lets see an example
Suppose the code received is erroraneous and we know the error is at bit 7 but the receiver doesn’t know that.So,how will it find it.Let’s see.
Calculate the check bits using the parity bits [sort of C0,C1,C2] .Arrange it like this and Take these calculated check bits together and get the number.That bit will be corrupted.
Now lets see the last code which is reed muller and it is the most interesting and the complex one. here we are explain only first order reed muller code of block size of 2 ^ 3 bits which can correct one bit error.
this is a generation matrix and this the dimension equation which are required in generating the code
the encoding matrix is created by putting the first row as one and then adding k-1 rows. k is the dimension of reed muller code and which also specify the amount of data bits which sent in one block.
The rows of the matrix are represented as v0,v1,v2,v3.
The block of bits which we will send is called a vecotr and is represented as [equation]
Suppose the received vector is r as shown
Then we will decode this vector using an algorithm.These are the equations and they are formed basically by using the characterstic equations and these are---
Now these bits are calculated using the majority bits in the four characterstic equations for each bit a0 to a3
Now this is the reason the code detects only one error.As if only one bit wrong then only one equation is affected for each data bit and hence can find the majority.
a0 is calculated using the majorith in the a0 equation