Professional Documents
Culture Documents
INSTITUTE OF TECHNOLOGY
Department of Electrical and Computer Engineering
Title: Performance analysis of error control codding techniques for unguided
media
Group members ID
1-Aragew Bayle……………………00172/09
4- Getnet Nigatu……………………00526/09
A final year project report submitted to Electrical and Computer Engineering department, Institute of
Technology, University of Gondar in the partial fulfillment of the requirements for the degree of BSc
in Electrical and Computer Engineering (communication Engineering Focus area)
Advisor: Amanuel A
Gondar, Ethiopia
July,2021
UNIVERSITY OF GONDAR
INSTITUTE OF TECHOLOGY
ELECTRICAL AND COMPUTER ENGINEERING
DEPARTMENT
Title: Performance analysis of error control coding techniques for
unguided media
Name of the candidates
1-Aragew Bayle……………………00172/09
4- Getnet Nigatu……………………00526/09
Advisor: Amanuel A
Approval by Committee
The undersigned certify that the above candidate/s has fulfilled the condition of the project paper
in partial fulfillment of the requirements for the degree of BSc in Electrical and Computer
Engineering (communication Engineering Focus area)
__________________ ___________
__________________ ___________
__________________ ___________
This project has been submitted for examination with my approval as a university advisor.
________________ ________________
Abstract
In digital communication, errors are introduced during the transmission of data from the
transmitter to receiver due to noise or environmental interference. These errors can become a
serious problem for achieving efficiency and performance of the system. Therefore, the
reliability of data transmission is required to be improved. To improve the reliability, it is
essential to detect and correct the error by applying error detection and correcting mechanisms
like hamming code, BCH code etc. To detect the error, additional bits are appended to the last
most bits during data be transmitted. These bits are used to detect the error at the receiver. These
extra bits are called parity bits. The data bits along with parity bits form codeword. This thesis is
mainly focus on the performance evaluation of error detection and correction techniques on
unguided media. It aimed at to detect and correct data transmission errors, to decrease errors that
occurs during transmission, to compare the performance of each error coding techniques and
designing a MATLAB simulation for the error coding techniques. Hamming code has high
efficiency for error detection as well as error correction and it is easy to implement, so that it
mostly used for computing memory, data compression, and other application in
telecommunication.
Key words: Hamming Code, Reed Solomon Code, Error Correction, Error Detection, BCH code
Acknowledgment
First and foremost great thanks to God for his blessing and helps from the beginning to end.
Numerous individuals have contributed invaluable help and support to make this thesis Project
happens. We owe our debt of gratitude to our school administrators for preparing such a program
which we found it very useful to boost our confidence in making things by ourselves and
learning through practice.
Our fellow class mates also helped us by sharing their idea on our thesis project. A special thanks
to instructor Amanuel who supported us by advising and sharing ideas while doing our project.
His help and support were critical for making this thesis project successful. Finally we would
like to give credit for persons, listed in literature review and reference, who has work on this
project before, which we used as source for our paper.
Contents
...................................................................................................................................................................... 1
Declaration ..................................................................................................................................................... i
Abstract ......................................................................................................................................................... ii
Acknowledgment ......................................................................................................................................... iii
List of figures ................................................................................................................................................ vi
List of abbreviation ..................................................................................................................................... vii
Chapter One .................................................................................................................................................. 1
Introduction ................................................................................................................................................... 1
1.1 Background ......................................................................................................................................... 1
1.2 Statement of problem......................................................................................................................... 3
1.3 Objective ............................................................................................................................................. 4
1.4 Methodology....................................................................................................................................... 4
1.5 Scope of the project ............................................................................................................................ 6
1.6 Significance of the project .................................................................................................................. 6
1.7 Organization of the project ................................................................................................................. 6
Chapter Two Literature Review .................................................................................................................... 7
2.1 What is a Telecommunication?........................................................................................................... 7
2.2 Types of telecommunications networks ............................................................................................. 8
2.3 Previous Work Overview..................................................................................................................... 9
2.4 our modification................................................................................................................................ 12
Chapter Three.............................................................................................................................................. 13
System Modeling and Design ..................................................................................................................... 13
3.1 Errors and Error Correcting Codes ................................................................................................... 13
3.1.1 Sources of errors ........................................................................................................................ 13
3.1.2 Types of Errors in Data Communication .................................................................................... 13
3.2 Error Control ..................................................................................................................................... 16
3.2.1 Error detection ........................................................................................................................... 16
3.2.2 Error correction .......................................................................................................................... 17
3.3 Hamming Code.................................................................................................................................. 17
3.3.1 General Algorithm of Hamming code ........................................................................................ 19
List of figures
Figure 1.1 flow chart of the thesis .................................................Error! Bookmark not defined.
Figure 2.1 telecommunication satellite ........................................................................................... 7
Figure 3.2 channel noise [3].......................................................................................................... 14
Figure 3.2 A data link layer [1] ..................................................................................................... 18
Figure 3.3 an OSI physical layer [3] ............................................................................................. 20
Figure 3.4 block diagram of hamming algorithm ......................................................................... 21
Figure 3.5 Telecom coverage in metropolitan city [7] ................................................................. 25
Figure 3.6 A network tower [1] .................................................................................................... 27
Figure 3.7 block diagram of BCH algorithm ................................................................................ 29
Figure 3.8 cellular communication [3].......................................................................................... 31
Figure 3.9 block diagram of reed-Solomon code [3] .................................................................... 33
Figure 3.10 monalisa’s picture with and without RS code [9] ..................................................... 35
Figure 4.1 hamming code plot ...................................................................................................... 37
Figure 4.2 bch code plot................................................................................................................ 37
Figure 4.3 reed-Solomon code matlab plot ................................................................................... 38
Figure 4.4 turbo code matlab plot ................................................................................................. 38
Figure 4.5 codded and uncoded plot of hamming......................................................................... 38
Figure 4.6 codded and uncoded plot of Reed-Solomon ................................................................ 38
Figure 4.7 comparison of hamming, bch and RS codes ............................................................... 39
List of abbreviation
AM…………………………………………...………..Amplitude modulation
ACK…………………………………………...………Acknowledgement
ASIC………………………………………….......…..Application Specific Integrated Circuit
AWGN……………………………………...………. Additive white Gaussian noise
BCH…………………………………………...……..Bose-Chaudhuri-Hocqunghem
BER…………………………………………...……. Bit Error Rate
CD……………………………………...…...………. Compact Disk,
DSL……………………………….………...………. Digital subscriber line
DVD………………………………………...………. Digital versatile disk
ECC…………………………………………...……….Error-correcting codes
FPGA…………………………………………...…….Field Programmable Gate Array
GF…………………………………………...……….Galois field
MPLS ………………………...………….…………. Multiprotocol Label Switching
NPAS…...…………………………………….……….Network Policy Access Services
NTT………………………………………….………. Nippon Telegraph and Telephone
PSK…………………………………….…...………. Phase shift keying
PSTN…………………………………………...……....Public Switched Telephone Network
RS……………………………………...…...………. Reed-Solomon
SECDED ……………………………………………Single-error correcting and double-error detecting
SNR…………………………………………...……. Signal to noise ratio
WAN…………………………………………..……. .Wide area networks
Chapter One
Introduction
1.1 Background
In recent years in modern digital communication and storage systems design, there has been an
increasing demand for efficient and reliable digital data transmission. This demand has been
accelerated by the emergence of large scale, high speed data networks for the exchange and
processing of digital information in the military, governmental and private spheres. A major
concern is control of errors, so that reliable reproduction of data can be obtained. Recent
developments have contributed toward achieving the reliability required by today’s high speed
digital systems and the use of coding for error control has become an integral part in the design
of modern communication systems and digital computers [1].
Nowadays, the fastest growing area in the field of communication is Wireless Communication.
Whenever the communication takes place, the data need to be transmitted through the sender to
the recipient. The error is such a situation in which output information is not similar to the input
information. When digital signals are transmitted from the sender to the recipient, some errors
can introduce in the signals because of noise interference. That means a 0 bit may change to 1 or
vice versa [2].
In digital communication systems, environmental interference and physical defects can cause
random bit errors during data transmission. Error coding is a method of detecting and correcting
these errors in a wide range of communication systems in computer memory, magnetic and
optical data storage media, satellite and deep space communications, network communications,
cellular telephone networks, and almost any other form of digital data communication.
Digital data is transmitted over a channel and there is often noise in the channel. The noise may
distort the messages to be sent. Therefore, what the receiver receives may not be the same as
what the sender sends. The goal of error coding is to improve the reliability of digital
communication by error detection and error correction Error control coding (also referred to as
channel coding) is used to detect, and often correct, symbols which are received in error on
digital communications channels [3].
Performance analysis of error coding techniques 2021 GC
For the detection of error, we can use some redundancy codes. These redundancy codes are then
added to the data during transmission, such codes are termed as “Error detecting codes”.
Error Correction Code is a procedure of put in parity bits into real data in order to recover the
message by the receiver. We need error correcting code for good conveying message over a
noisy way that has an improper BER as well as SNR is lower. ReedSolomon codes, Golay codes,
Cyclic Hamming code, BCH codes, Goppa codes are used in error correction [4].
Due to the stringent energy constraint, it is impossible to increase the signal power of the
transmitted signal in wireless networks (unguided). Hence an alternative way is to use the error
control codes to reduce the BER. The encoding and decoding circuitry for error control codes
may consume a sizable amount of power. This motivates us to study energy-efficient error
detection/correction codes [6].
1.3 Objective
1.3.1 General Objective
The general objective of this thesis is Performance analysis of error codding techniques for
unguided media.
1.3.2 Specific objective
This thesis has the following specific objectives to accomplish:
Methods involved during the whole project time are the following:
I. Literature review: referring the books, websites and other reference materials including
datasheet of components to understand how the system can work and know about each
component.
II. Design specifications: listing the required performance of the system
III. System modeling: formulating the relationship between different parts and components
of the system.
IV. Designing: the circuit design of the whole system using computer aided tools
V. Simulation: simulating the designed circuit
Simulation
Result
Report
First an introduction is discussed, which gives a general concept about this project
Next a literature review will explain about reports of projects done before in areas
similar to our project
Then the overall system design and analysis briefly discusses circuit components, design
analysis and system working principles.
After the design and analysis, a simulation implementation of the project is discussed
Finally, the paper talks about conclusion and the possible future scopes which gives a
generalized idea about our final points and future works to be made to develop more than
this
Chapter Two
Literature Review
2.1 What is a Telecommunication?
Telecommunications, also known as telecom, is the exchange of information over significant
distances by electronic means, referring to all types of voice, data and video transmission.
Simply it is a science and practice of transmitting information by electromagnetic means.
Digital transmission is employed in order to achieve high reliability and because the cost of
digital switching systems is much lower than the cost of analog systems. In many cases, the
digitized signal is passed through a source encoder, which employs a number of formulas to
reduce redundant binary information. After source encoding, the digitized signal is processed in
a channel encoder, which introduces redundant information that allows errors to be detected and
corrected.
The encoded signal is made suitable for transmission by modulation onto a carrier wave and may
be made part of a larger signal in a process known as multiplexing. The multiplexed signal is
then sent into a multiple-access transmission channel. After transmission, the above process is
reversed at the receiving end, and the information is extracted.
telephone networks;
cellular networks;
❖ AT&T
❖ Verizon
❖ Nippon Telegraph and Telephone (NTT)
❖ China Mobile Limited
❖ Deutsche Telekom AG
❖ SoftBank Group
❖ China Telecom
❖ Telefónica SA
❖ Vodafone
❖ Qualcomm
❖ América Móvil
Limitation: this paper made a comparison based on average power consumption of each error
detecting codes.it doesn’t include probability of bit error rate of each decoding techniques.
Mohamed Elghayyaty, Omar Mouhib Error correcting codes constitutes one of the core
technologies in telecommunications field, especially digital communication applications. The
objective of this paper is to compare performance among new designs of chien search block on
the one hand and syndrome architectures on the other hand in error correcting codes. All
comparison of all designs is made by computing the number of logic, bit error rate values and
number of iteration in the case of syndrome architectures Analysis results show that the
performances of the new designs based on both second factorization method and Three-Parallel
Syndrome architecture are superior to the performances of traditional designs.
Limitation: this paper only made an intracomparision only inside a bch code.it didn’t include
neither hamming nor reed Solomon codes.
correcting codes is proposed. This paper presents a comparative study of performance between
the Bose-Chaudhuri-Hocquenghem codes using the bit error rate term (BER). The channel and
the modulation type are respectively AWGN and PSK where the order of modulation is equal to
2. First, they generated and simulated the error correcting codes using Math lab simulator.
Second, they compare the two codes using the bit error rate term (BER), finally they conclude
the coding gain for a BER.
Limitation: this paper also made a unilateral comparison only inside a bch code.it didn’t include
neither hamming nor reed Solomon codes.
Priyanka Shrivastava, U. Singh In the present world, communication system which includes
wireless, satellite and space communication, reducing error is being critical. During message
transferring the data might get corrupted, so high bit error rate of the wireless communication
system requires employing to various coding methods for transferring the data. Channel coding
for detection and correction of error helps the communication systems design to reduce the noise
effect during transmission. The purpose of this paper is to study and analyze the performance and
efficiency of Reed-Solomon (RS) Codes. In coding theory, Reed-Solomon (RS) codes are the
subset of BCH codes that are one of the most powerful known classes of linear cyclic block
codes. Reed-Solomon (RS) codes are very efficient and best for correction of burst errors and
have a wide range of applications in digital communication and data storage. Reed-Solomon
(RS) is the most powerful technique used for error detection and correction at present.
Limitation: in this research paper the researchers were only focused on making a performance
analysis only on a reed-Solomon code.it did not include either hamming or the rest.
D.M.I.E.T.R. Sawangi The BCH code is the essential class of multiple-error-correcting linear cyclic
code. In actually, Bose-Chaudhuri-Hocqunghem code is an abstraction of the cyclic hamming
code for multiple-error correction. The finding of errors made by noise during transmission from
the sender to the recipient is called as Error Detection. The finding of errors and renewal of the
original data is called as Error Correction. In this review paper shows that the studies about fixed
block length and message length of the BCH code and Reed Solomon code. In addition, the
various techniques for decoding the codes are studied.
Limitation: the algorithm suggested on this research paper only work for a codeword having
only a fixed block length.
Limitation: the scholars in this paper chose to focus only on BCH codes of length 255.
M. Grassl, T. Beth After a brief introduction to both quantum computation and quantum error
correction, we show how to construct quantum error-correcting codes based on classical BCH
codes. With these codes, decoding can exploit additional information about the position of errors.
This error model - the quantum erasure channel - is discussed. Finally, parameters of quantum
BCH codes are provided.
Limitation: since quantum computing is still on its infantry stage, the technique proposed on
this research paper is not fulfilling.
Sweta Thakur, Tabassum Nasrat and Soumyasree Bera studied the performance of two
channel coding techniques, i.e., BCH and Reed Solomon. Using MATLAB software the process
of simulation has been done. Here, compared the BER and SNR value of the BCH and Reed
Solomon code, also compared the uncoded and coded transmission. The result was similar in
both software and hardware.
Limitation: this research journal doesn’t consider hamming code in its performance analysis.
Saeideh Nabipour, Javad Javidan, Gholamreza Zare Fatin this paper proposed a method
using the Berlekamp Rumsey-Solomon algorithm through the Chiensearch process, to get the
roots of error locator polynomial for BCH decoder. The new algorithm was implemented in C++
programming language to show the performance. The algorithm was improved to 1.5 times faster
than the Chien search method.
Limitation: the researchers choose to use C++ programming language while making the
algorithm, but C++ is weaker when compared with matlab.
Gnana Prakash, M.MuthamizhanIn author has designed a (15,7) BCH encoder and decoder.
By utilizing algorithms, two errors have been acknowledged and adjusted in the BCH code
which is worked at the single cycle. The result showed the area and delay were reduced. The
author in proposed a new method for compressing the LUT and reduces the requirement that was
compared to prior design. The throughput of the decoder was greater and the area has been
reduced by 19% for (1023, 993) BCH code over GF(210).
Limitation: the scholars on this paper mainly focused on making a compressing algorithm rather
than making a comparison among the ECCs.
Chapter Three
System Modeling and Design
3.1 Errors and Error Correcting Codes
When bits are transmitted over the computer network, they are subject to get corrupted due to
interference and network problems. The corrupted bits lead to spurious data being received by
the receiver and are called errors.
Error-correcting codes (ECC) are a sequence of numbers generated by specific algorithms for
detecting and removing errors in data that has been transmitted over noisy channels. Error
correcting codes ascertain the exact number of bits that has been corrupted and the location of
the corrupted bits, within the limitations in algorithm.
• Block codes − the message is divided into fixed-sized blocks of bits, to which redundant
bits are added for error detection or correction.
• Convolutional codes − the message comprises of data streams of arbitrary length and
parity symbols are generated by the sliding application of a Boolean function to the data
stream.
3.1.1 Sources of errors
a) Electromagnetic distortion of signal: - “noise” on the line.
b) Error in sampling pulse relative to neighbor pulse: - “inter-symbol interference”
c) Energy coupling due to nearby links: - “cross-talk”.
d) The storage of information on the magnetic devices is prone to errors due to uneven
Magnetic surface, dust etc.
c) Burst Errors
Burst errors are considered large clumps of bit errors. Burst errors are similar to random bit
errors; however, all random bit errors are isolated strains on a computer data code. Burst errors
take place when there are several, inter-connected bit errors at once. The entire data chain in the
computer communication may have several hundred- or thousand-bit errors, such as wrong
placement order, throughout the chain. Because the error is interconnected, meaning there are
several error codes throughout the chain, the data communication error is more complex than a
simple random bit error.
Frame is received with more than one bits in corrupted state [6].
• Burst error
Error detection - The sender and receiver, either both or any, must ascertain that there is
some error in the transit.
Positive ACK - When the receiver receives a correct frame, it should acknowledge it.
Negative ACK - When the receiver receives a damaged frame or a duplicate frame, it
sends a NACK back to the sender and the sender must retransmit the correct frame.
Whenever a message is transmitted, it may get scrambled by noise or data may get corrupted. To
avoid this, we use error-detecting codes which are additional data added to a given digital
message to help us detect if any error has occurred during transmission of the message.
Key points:
1.These error detecting and correcting codes help us to trace out the errors in the digital data and
to correct that error.
2. There are many types of codes for error detection and correction e.g. parity bit is a kind of
error detection code that can find only one bit error in the data.
3. Hamming code is an error detection and correction code.
4. These codes are used in detecting and correcting error in the transmitted digital data and it
helps in the error free transmission of the data.
Hamming codes can detect up to two-bit errors or correct one-bit errors without detection of
uncorrected errors. By contrast, the simple parity code cannot correct errors, and can detect only
an odd number of bits in error. Hamming codes are perfect codes, that is, they achieve the
highest possible rate for codes with their block length and minimum distance of three.
Due to the limited redundancy that Hamming codes add to the data, they can only detect and
correct errors when the error rate is low. This is the case in computer memory (usually RAM),
where bit errors are extremely rare and Hamming codes are widely used, and a RAM with this
correction system is an ECC RAM (ECC memory). In this context, an extended Hamming code
having one extra parity bit is often used. Extended Hamming codes achieve a Hamming distance
of four, which allows the decoder to distinguish between when at most one one-bit error occurs
and when any two-bit errors occur. In this sense, extended Hamming codes are single-error
correcting and double-error detecting, abbreviated as SECDED.
Parity bit
A parity bit is a bit appended to a data of binary bits to ensure that the total number of 1’s in the
data is even or odd. Parity bits are used for error detection. There are two types of parity bits:
1. Even parity bit :
In the case of even parity, for a given set of bits, the number of 1’s is counted. If that count is
odd, the parity bit value is set to 1, making the total count of occurrences of 1’s an even
number. If the total number of 1’s in a given set of bits is already even, the parity bit’s value is
0.
2. Odd Parity bit :
In the case of odd parity, for a given set of bits, the number of 1’s is counted. If that count is
even, the parity bit value is set to 1, making the total count of occurrences of 1’s an odd
number. If the total number of 1’s in a given set of bits is already odd, the parity bit’s value is
0.
3.3.1 General Algorithm of Hamming code
The Hamming Code is simply the use of extra parity bits to allow the identification of an error.
1. Write the bit positions starting from 1 in binary form (1, 10, 11, 100, etc).
2. All the bit positions that are a power of 2 are marked as parity bits (1, 2, 4, 8, etc).
3. All the other bit positions are marked as data bits.
4. Each data bit is included in a unique set of parity bits, as determined its bit position in binary
form.
a. Parity bit 1 covers all the bits positions whose binary representation includes a 1 in the
least significant position (1, 3, 5, 7, 9, 11, etc).
b. Parity bit 2 covers all the bits positions whose binary representation includes a 1 in the
second position from the least significant bit (2, 3, 6, 7, 10, 11, etc).
c. Parity bit 4 covers all the bits positions whose binary representation includes a 1 in the
third position from the least significant bit (4–7, 12–15, 20–23, etc).
d. Parity bit 8 covers all the bits positions whose binary representation includes a 1 in the
fourth position from the least significant bit bits (8–15, 24–31, 40–47, etc).
e. In general, each parity bit covers all bits where the bitwise AND of the parity position and
the bit position is non-zero.
5. Since we check for even parity set a parity bit to 1 if the total number of ones in the positions
it checks is odd.
6. Set a parity bit to 0 if the total number of ones in the positions it checks is even.
To remedy this shortcoming, Hamming codes can be extended by an extra parity bit. This way, it
is possible to increase the minimum distance of the Hamming code to 4, which allows the
decoder to distinguish between single bit errors and two-bit errors. Thus the decoder can detect
and correct a single error and at the same time detect (but not correct) a double error.
If the decoder does not attempt to correct errors, it can reliably detect triple bit errors. If the
decoder does correct errors, some triple errors will be mistaken for single errors and "corrected"
to the wrong value.
Error correction is therefore a trade-off between certainty (the ability to reliably detect triple bit
errors) and resiliency (the ability to keep functioning in the face of single bit errors).
This extended Hamming code (SECDED ) is popular in computer memory systems, Particularly
popular is the (72,64) code, a truncated (127,120) Hamming code plus an additional parity bit
,which has the same space overhead as a (9,8) parity code.
The procedure used by the sender to encode the message encompasses the following steps:
Once the redundant bits are embedded within the message, this is sent to the user.
Once the receiver gets an incoming message, it performs recalculations to detect errors and
correct them. The steps for recalculation are:
Suppose the data to be transmitted is 1011001, the bits will be placed as follows:
1. R1 bit is calculated using parity check at all the bits positions whose binary representation
includes a 1 in the least significant position.
R1: bits 1, 3, 5, 7, 9, 11
To find the redundant bit R1, we check for even parity. Since the total number of 1’s in all
the bit positions corresponding to R1 is an even number the value of R1 (parity bit’s value)
=0
2. R2 bit is calculated using parity check at all the bits positions whose binary representation
includes a 1 in the second position from the least significant bit.
R2: bits 2,3,6,7,10,11
To find the redundant bit R2, we check for even parity. Since the total number of 1’s in all
the bit positions corresponding to R2 is odd the value of R2(parity bit’s value)=1
3. R4 bit is calculated using parity check at all the bits positions whose binary representation
includes a 1 in the third position from the least significant bit.
R4: bits 4, 5, 6, 7
To find the redundant bit R4, we check for even parity. Since the total number of 1’s in all
the bit positions corresponding to R4 is odd the value of R4 (parity bit’s value) = 1
4. R8 bit is calculated using parity check at all the bits positions whose binary representation
includes a 1 in the fourth position from the least significant bit. R8: bit 8,9,10,11.
To find the redundant bit R8, we check for even parity. Since the total number of 1’s in all
the bit positions corresponding to R8 is an even number the value of R8(parity bit’s
value)=0.Thus, the data transferred is:
The bits give the binary number as 0110 whose decimal representation is 6. Thus, the bit 6
contains an error. To correct the error the 6th bit is changed from 1 to 0.
One of the key features of BCH codes is that during code design, there is a precise control over
the number of symbol errors correctable by the code. In particular, it is possible to design binary
BCH codes that can correct multiple bit errors. Another advantage of BCH codes is the ease with
which they can be decoded, namely, via an algebraic method known as syndrome decoding. This
simplifies the design of the decoder for these codes, using small low-power electronic hardware.
satellite communications,
DVDs,
disk drives,
The BCH abbreviation stands for the discoverers, Bose and Chaudhuri (1960), and independently
Hocquenghem (1959). These codes are multiple error correcting codes and a generalization
of the hamming codes. They are classes of linear and cyclic block codes that can be designed for
any value of the error-correction capability up to any size error or less. That is, they provide a
maximum of t error correction among the n length received information. All their behavior is
described above on the block codes definition.
In coding theory, the BCH codes form a class of cyclic error correcting codes that are
constructed using finite fields. We will develop a random error correcting code here called the
BCH code. This code handles randomly located errors. It has minimal hamming distance at least
3 and corrects up to one error.
BCH codes are a generalization of Hamming codes, and they can be designed to be able to
correct any error pattern of size t. In this sense the generalization of the Hamming codes extends
the design of codes for t = 1(Hamming codes) to codes for any desired higher value of t (BCH
codes). The design method is based on taking an LCM of appropriate minimal polynomials.
BCH codes are a family of cyclic codes, which gives them an algebraic structure that is useful in
simplifying their encoding and decoding procedures. Cyclic codes are a class of error correcting
codes that can be efficiently encoded and decoded using simple shift-registers and combinational
logic elements, based on their representation using polynomials.
The encoding of an (n, k) cyclic code in systematic form consists of three steps:
1. With the gate turned on, the k information digits shifted into the circuit and simultaneously
into the communication channel. Shifting the message U(x) into the circuit from the front end is
equivalent to pre multiplying U(x) by X(n-k). As soon as the complete message has entered the
circuit, the n-k digits in the register from the remainder and thus they are the parity check
digits.
3. Shift the parity check digits out and send them into the channel. These n-k parity check digits
together with the information digits, form a complete code word. All the three steps can be
accomplished with a division circuit which is a linear (n-k) stage shift register with feedback
connection based on the generator polynomial g(x). Significantly large. Puncturing of linear
block code consists of removal of the parity check bits to obtain a linear block.
The received polynomial is shifted into the syndrome register from the left end. To remove the
effect of an error digit on the syndrome, we simply feed the error digit into the shift register from
the left end through an exclusive or gate. The decoding operation is as follows:
1. The syndrome is formed by shifting the entire received vector into the syndrome register.
At the same time the received vector is stored into the buffer register.
2. The syndrome is read into the detector and is tested for the corresponding error pattern.
The detector is a combinational logic circuit which is designed in such a way that its output is 1
if and only if the syndrome in the syndrome register corresponds to a Correctable error pattern
with an error at the highest order position. That is if a 1.
3. Appears at the output of the detector, the received symbol in the right most stage of the buffer
register is assumed to be erroneous and must be corrected; if the ‘0’ appears at the output of the
detector, the received symbol in the right most stage of the buffer register is assumed to be
correct and no correction is necessary.
4. The first received symbol is read out of the buffer. At the same time, the syndrome
register is shifted once. If the received symbol is detected to an erroneous symbol, it is
then corrected by the output of the decoder. The output of the detector is also feedback to
the syndrome registers to modify the syndrome. These results in a new syndrome, which
corresponds to the altered received vector, shifted one place to the right.
5. The new syndrome formed in step 3 is used to detect whether or not the second received
symbol is an erroneous symbol. The second received symbol is corrected in exactly the same
manner as the first received symbol was corrected.
6. The decoder decodes the received vector symbol by symbol in the manner outlined
above until the entire received vector is read out of the buffer register.
How do we modify a Hamming code to correct two errors? In other words, how can we increase
its minimum distance from 3 to 5? We will either have to lengthen the code words or eliminate
some of them from our code. Correcting two errors in a long word may not be much better than
correcting one error in a short one. So, we will try to produce a double error correcting subcode
of the Hamming code by removing some code words to make a new code.
BCH codes is a generalization of Hamming codes for multiple error correction. Binary BCH
codes were first discovered by A. Hocquenghem in 1959 and independently by R.C. Bose and
D.K. Ray-Chaudhuri in 1960.
The original encoding scheme described in the Reed & Solomon article used a variable
polynomial based on the message to be encoded where only a fixed set of values (evaluation
points) to be encoded are known to encoder and decoder.
QR Codes
Reed–Solomon codes operate on a block of data treated as a set of finite-field elements called
symbols. Reed–Solomon codes are able to detect and correct multiple symbol errors. By
adding t = n − k check symbols to the data, a Reed–Solomon code can detect (but not correct)
As an erasure code, it can correct up to t erasures at locations that are known and provided to the
algorithm, or it can detect and correct combinations of errors and erasures. Reed–Solomon codes
are also suitable as multiple-burst bit-error correcting codes, since a sequence of b + 1 consecutive
bit errors can affect at most two symbols of size b. The choice of t is up to the designer of the
code and may be selected within wide limits.
BCH view – with BCH view being the most common, as BCH view decoders are
faster and require less working storage than original view decoders.
In 1977, Reed–Solomon codes were implemented in the Voyager program in the form
of concatenated error correction codes. The first commercial application in mass-produced
consumer products appeared in 1982 with the compact disc.
The Reed-Solomon decoder processes each block and attempts to correct errors and recover
the original data.
The number and type of errors that can be corrected depends on the characteristics of the
Reed-Solomon code.
Reed-Solomon codes are particularly well suited to correcting burst errors (where a series of
bits in the codeword are received in error).
The Reed-Solomon encoder takes k data symbols of s bits each and adds parity symbols to make
an n symbol codeword. There are n-k parity symbols of s bits each. A Reed-Solomon decoder
can correct up to t symbols that contain errors in a codeword, where 2t = n-k.
Finding the Symbol Error Locations involves solving simultaneous equations with t unknowns.
Several fast algorithms are available to do this. These algorithms take advantage of the special
matrix structure of Reed-Solomon codes and greatly reduce the computational effort required.
Find an error locator polynomial we use the Berlekamp-Massey algorithm or Euclid’s algorithm.
Euclid’s algorithm tends to be more widely used in practice because it is easier to implement.
however, the Berlekamp-Massey algorithm tends to lead to more efficient hardware and software
implementations.
Finding the roots of this polynomial is done using the Chien search algorithm and finding the
Symbol Error Values, again, involves solving simultaneous equations with t unknowns. A
widely-used fast algorithm is the Forney algorithm.
A number of commercial hardware implementations exist. Many existing systems use "off-the-
shelf" integrated circuits that encode and decode Reed-Solomon codes. These ICs tend to support
a certain amount of programmability.
A recent trend is towards VHDL or Verilog designs (logic cores or intellectual property cores).
These have a number of advantages over standard ICs. A logic core can be integrated with other
VHDL or Verilog components and synthesized to an FPGA (Field Programmable Gate Array) or
ASIC (Application Specific Integrated Circuit).
This enables so-called "System on Chip" designs where multiple modules can be combined in a
single IC. Depending on production volumes, logic cores can often give significantly lower
system costs than "standard" ICs. By using logic cores, a designer avoids the potential need to do
a "lifetime buy" of a Reed-Solomon IC.
Software Implementation
Until recently, software implementations in "real-time" required too much computational power
for all but the simplest of Reed-Solomon codes.
The major difficulty in implementing Reed-Solomon codes in software is that general purpose
processors do not support Galois field arithmetic operations. For example, to implement a Galois
field multiply in software requires a test for 0, two log table look-ups, modulo add and anti-log
table look-up. However, careful design together with increases in processor performance means
that software implementations can operate at relatively high data rates.
In Reed Solomon code, generator polynomial with factors is constructed where each root is a
consecutive element in the Galois field. The polynomial is of the form :g(x) = (x - α) (x - α2) (x -
α3) ......(x - α2t)where α is a primitive element.
The method of encoding in Reed Solomon code has the following steps −
The message is represented as a polynomial p(x), and then multiplied with the generator
polynomial g(x).
The message vector [x1,x2,x3.....xk] is mapped to a polynomial of degree less than k such
that px(αi) = xi for all i = 1,...k
The encoded message is calculated as s(x) = p(x) * g(x). The sender sends this encoded
message along with the generator polynomial g(x).
3.7.8 Decoding using Reed Solomon Code
At the receiving end, the following decoding procedure done −
The receiver receives the message r(x) and divides it by the generator polynomial g(x).
If r(x)/g(x)≠0, then the error polynomial is evaluated using the expression: r(x) = p(x) *
g(x) + e(x)
Chapter Four
Simulation result and discussion
A couple of performance metrics are commonly used in assessing different types of error
detecting codes performance. These include bit error rates, (BER) and signal to noise ratio
(SNR). Both performance metrics relate to the digital channel. Both metrics depend on the
instantaneous power ratio between the received signal power, and the noise and interference
power, for any channel where data is transmitted without retransmissions, error rates are
critically important. Error rates are typically low for wired connections, but vary enormously for
wireless links.
The bit error rate (BER) is the number of bit errors per unit time. The bit error
ratio (also BER) is the number of bit errors divided by the total number of transferred bits
during a studied time interval. Bit error ratio is a unit less performance measure, often
expressed as a percentage.
In terms of definition, SNR or signal-to-noise ratio is the ratio between the desired
information or the power of a signal and the undesired signal or the power of the
background noise.
Figure 4.1 hamming code plot Figure 4.2 bch code plot
From figure 4.1 for high SNR value, errors are difficult to correct by hamming code. But
for small SNR hamming code is accurate technique rather than the others.
This makes hamming code suitable for short communication systems.
As we can see From figure 4.2 as the SNR ratio increases, the error correcting capacity of
BCH code also increases.
We can conclude from the above plots; BCH code is very good for long distance
communication systems.
Figure 4.3 reed-Solomon code matlab plot Figure 4.4 turbo code matlab plot
As depicted on figure 4.3 Reed Solomon code is better for correcting and detecting errors
at medium communication systems. Reed Solomon code is better than hamming but
lower than BCH codes.
There is no significant reduction in BER or it is nearly constant on increasing of values of
S/N in case of BCH system while in RS system BER values significantly reduce on
increase on increasing S/N ratio which makes it a better coding scheme.
Figure 4.5 codded and uncoded plot of hamming Figure 4.6 codded and uncoded plot of Reed-Solomon
Hamming code For a BER of 10–2, the improvement of SNR is roughly 1 dB, which
means less than half the signal strength is needed to achieve the same reliability in
decoding error. This factor of improvement means less transmission power is needed
over a given distance, or that the transmission range can be increased and still achieves
the same BER as at a much closer range without the code.
RS code For a BER of 10–2, the improvement in SNR is 1.5 dB This almost doubles the
improvement seen by the (7,4) Hamming code. Since RS codes are extremely effective
against burst-errors and offer significant improvements in the SNR needed to achieve a
given BER,
RS code is very powerful yet still relatively simple to implement in terms of hardware
(due to relatively less number of iteration). RS codes may not compare to turbo codes in
their performance in the very low SNR values encountered— for example in deep space
missions,—but for many other applications such as data storage and internet data
transmission, they are a very attractive option.
level that is, in fact, weaker than the noise over an AWGN channel. In fact, to achieve a
BER of 10–6, a SNR of 1 dB is all that is needed for 10 iterations, where even the (31,16)
RS code needed a SNR of 4.5 dB.
The ability to achieve such low BER for extremely low SNR is what makes turbo codes
so attractive for applications such as deep space satellites. This type of application also
provides the liberty to introduce as much delay as is needed at the decoder because it is
not a real-time data application. Therefore, more iteration could be performed to achieve
a low BER for signals coming in under 1 dB SNR.
Another way to improve the achievable BER for low SNR is to decrease the code rate.
This means using more parity bits and less information bits in a codeword. When the
code rate is decreased, the information throughput is sacrificed because there are less
information bits being sent per transmission. But in an application like deep space
satellites, this may be an acceptable tradeoff to increase BER at astronomical distances.
Decreasing the code rate can achieve even better results for turbo codes. At a code rate of
one-fifth a BER of 10–6 is achievable at an SNR of 0.6 dB for 14 decoding iterations. At
this point a receiver can receive a transmission whose power is far below the noise floor
and still achieve an acceptable BER.
more iterations will get lower BER, but the decoding delay is also longer
A higher coding rate needs more bandwidth.
Turbo codes are part of a class known as convolutional codes Turbo Codes are well
suited for long distance and low power wireless communications because they achieve a
very low bit error rate (BER) at very low SNR. This means that data is still transmitted
nearly error-free with a low energy signal, and this characteristic has lead turbo codes to
be implemented in applications such as deep space communications and third generation
cellular standards.
This could potentially give a large cost benefit because it reduces the amount of power
needed for the transmission of data.
Though the encoding and decoding processes outlined previously lowers the BER,
implementing these practices is costly, and may not be desirable. Furthermore, the
decoding algorithm is complex, and more iteration requires greater amounts of memory,
causing the implementation of robust codes to be more expensive than linear block codes.
Chapter five
Conclusion and recommendation
5.1 Conclusion
Forward Error detection and Correction code is a powerful tool in combating transmission errors
caused by a noisy channel. Using FEC codes allows communications to achieve the same level
of transmission reliability, quantified by the BER, at lower output power levels. This could
potentially give a large cost benefit because it reduces the amount of power needed for the
transmission of data.
There are tradeoffs for every code that have to be weighed against the application they are being
Used for. There is no single FEC code that is an optimum solution for every application, and
many factors must be weighed before a decision is made on which code to use.
In general, the more effective a FEC code is at combating transmission errors, the more
expensive it is to implement in terms of hardware, and the more complicated its encoding and
decoding process become. Things like decoding delay and decreased throughput must also be
considered when choosing between the different FEC codes that are available.
In emerging digital wireless communication systems, the purpose of channel coding is to add
redundancy to the binary data stream to combat the effect of signal degradation of the channel.
Signal degradation is usually due to noise and fading phenomena.
5.2 Recommendations
The major disadvantage of bringing additional complexity and delay of Forward Error
detection and Correction has to be dealt with in order to achieve desirable objectives
through better hardware and software design approaches.
From the error performance analysis and results, it is evident that Forward Error detection
and Correction are quite suitable for the emerging wireless communications technologies
and applications, assuming that the disadvantages mentioned above could be minimized
with other developments in hardware design.
Random coding theory states that almost all randomly designed codes are good, as
long as they are sufficiently long. However, just a few of them in terms of the
parity check bits make decoding simple to implement. They were for some period in
the 1960s, and even in the 1980s still rather too complex to implement. The early
1990s saw the discovery of turbo codes by Berrou, et al whose performance is built
on large random interleavers, and iterative decoding.
Recently, Neal and McKay “rediscovered” the low density parity check codes employing
iterative decoding to achieve turbo-like performance. To design a good LDPC code,
efficient use of modern random access memory (RAM) architecture is the key. Design
alternatives of LDPC codes that have sufficient structure to allow efficient read/write
operations, while retaining sufficient “randomness” to retain coding gain are still needed.
Convolutional codes (turbo codes) are better than block codes (hamming, BCH and RS)
but, again LDPC codes are preferred to turbo codes in some applications because of their
more efficient implementation as well as better performance.
Our SNR-to-BER performance simulations have been limited to AWGN and Rayleigh
models. Future researchers could examine the BER performance on other more channel
models, such as the Jake’s model.
Performing simulations to obtain the BER performance curves for BERs below 10-5 in
order to study the “error floor” area of the BER curves. It is suspected that the
performance in this area of the BER curves might oscillate slightly when the symbol size
is increased.
Our research back then has revealed several fundamental channel code performance
bounds and capacity limits at various levels, and the need for considering several design
alternatives.
There is a need for clarifying on the convergence or divergence of these concepts to a similar
point and their comparative advantages with reference to established channel code performance
metrics.
References
[5] "Codes correcteurs d’erreurs," Chiffers, vol. ii, no. 12, pp. 157-169, 2006.
[6] I. R. a. G.Solomon, "Polynomial codes over certain finite fields," Applied Math, vol. ii, no.
1, pp. 50-59, 2000.
[8] a. J. S. M.C. Valenti, "“The UMTS Turbo Code and an Efficient Decoder Implementation
Suitable for Software-Defined Radios," International Journal of Wireless Information
Networks, vol. 8, no. 4, pp. 50-65, October,2001.
[11] J.P. Woodard and L. Hanzo, "Comparative study of turbo decoding techniques: An
overview," IEEE Transactions on Vehicular Technology, vol. 49, no. 4, pp. 208-233, 2000.
[12] F. Dowla, Handbook of RF and Wireless Technologies, Newnes 2004, ISBN 0750676957,
Newns: Mc Graw-hill, 2004.
[13] R. G. Gallager, "Low density parity-check codes," in IRE Transactions Information Theory,,
Chicago, Mc Graw-hill, 1999, pp. 209-200.
[14] K. D. Rao, Channel coding techniques for wireless communication, Tokyo: Mc Graw-hill,
2000.
[15] M. H., Performance evalution of BCH coding technique, Tiyland: Mc Graw-hill, 2008.
[17] G. a. Nikolas, "performance evalution of hamming code," communication media, vol. i, no.
1, pp. 16-48, 2007.