IMPLEMENT REED SOLOMON ENCODER/ DECODER USING SPARTAN FPGA

In this paper, (15, 11) reed Solomon codes have been designed and implement using Spartan field programmable gate array device. The design is carried out by writing VHDL code. The waveforms are tested using the package ISIM simulator and synthesis report and programming file are obtained using the Spartan 6. Simulation waveforms show that (15, 11) reed Solomon decoder could correct up to 2 error in given polynomial to the encoder.


Introduction
In the wireless communication, a wide problem is being faced out i.e. bit error (Digital Communication).During the receiving operation some amount of error is being incorporated with the received data stream.But at the receiver during decoding process the information is not correct due to the bit errors.To overcome these errors some coding techniques is being used like Linear block coding technique, hamming code technique, Reed Solomon coding technique .thesetechniques are used to detect the error and correct the same bit error to provide the correct information or data stream.We have found after reviewing REED-SOLOMON Codes are the best forward error correcting code.These codes are currently used in wide variety of application starts from satellite communication to data storage system.The error correction system used on CD and DVD is based on REED SOLOMON codes.REED SOLOMON code, in which redundant information is added to data so that it can be used to recover errors in transmission or storage and retrieval.The error correction system used on CD and DVD is based on the REED SOLOMON code.A REED SOLOMON Code is a linear code (adding two code words produce another codeword) and it is a cyclic code (cyclically shifting the symbols of codeword produce another codeword).It belongs to the family of BCH codes, but it is distinguish by having multi bit symbols.This makes the code particularly good at dealing with burst off error because, although a symbol may have all its bits in error, this count as only one symbol error in terms of correction capacity of the code.

System Models
The system model of REED SOLOMON Code is given below as in Fig. 2

Reed-Solomon Decoder
The Reed-Solomon encoder takes a block of digital data and adds extra "redundant" bits.Errors occur during the transmission of bits or storage of information by noise or interference, scratches on a CD.A Reed-Solomon code is specified as RS (n, k) with s-bit symbols.This means that the 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.
The Reed-Solomon decoder tries to correct errors for each codeword.Based upon the syndromes the decoder is able to determine the number of errors in the received block.If there are errors present, the decoder tries to find the locations of the errors using the berlekamp-massey algorithm by creating an error locator polynomial.A Reed-Solomon decoder can correct up to t symbols that contain errors in a codeword, where 2t= n-k.(15,11) reed Solomon codes has been implemented using SPARTAN FPGA.This code could correct up to 2 errors.The word length in each symbol is 4 bits and codes are based on Galois field 16 elements respectively.The code generator polynomial for the code is:

FPGA Implementation of Reed-Solomon Encoder
The structure of implemented (15,11) Reed-Solomon encoder is shown in fig (3).All data paths in fig. 3

Operation:
Initially the registers are in 0 states.Without lack of generality, we assume that then message is divided equally into m-bits words, where each word is now considered a Galois field element, where m is the degree of the field generator polynomial.Each m-bit word is then associated with an increasing power of x, starting with xk-1 and ending with x0 = 1, thus forming a polynomial, m(x) over GF (2m).The message polynomial is of degree k-1, that is, there are k coefficients.Each coefficient enters the circuit one coefficient every clock cycle, with the most significant coefficient entering first.For the first k clock cycles, corresponding to when the message is entering and the remainder are being calculated, switches 1 and 2 are inn position B. the encoded data thus corresponds with the message polynomial for the first k clock cycles.During these first k clock cycles, the remainder is being calculated in the registers.When the message has finished entering into the encoder, switches 1 and 2 are set to position A. Since the output of switch 1 is 0, the resulting multiplications are 0, and the resulting additions, and consequently the inputs to the registers are just the value of the preceding register.In the case of the first register, its input is 0. Since it sees the output of the switch, the output of switch 2 is now the output of the last register.Thus the entire remainder polynomial, b(x) is shifted out one element at a time.Once all the register contents have been shifted out, the codeword generation is complete.[7] a 0

FPGA Implementation of Reed Solomon Decoder
Fig. 4 shows the block diagram of the implemented reedsolomon decoder.In this fig., the first process is to calculate the syndrome value from the incoming codeword polynomial.For a t-error correcting reed Solomon code, there are 2t syndromes that must be calculated.Another crucial step in the decoding process is to find the location of the errors in the received codeword.thesecodeword is then used to evaluate the coefficients of the error locator Polynomial Λ1 …….. Λv using berlikamp algorithm.An iterative process, called the chien search is the most efficient means of doing this.The error locations are identified by the chien search and the error values are calculated using forney's method.As these calculations involve all the symbols of the received codeword, it is necessary to store the message until the results of the calculations are available.Then, to correct the errors, each error values are added (modulo-2) to the appropriate location in the received codeword.

Top Level Design
The performance of the encoder described above was verified with a VHDL test bench.

Synthesis Reports
There is a large number of synthesis reports (hardware and software reports) obtained from synthesis operation.They describe all what concern the implementation process like storage resources required, I/O resources required, computation resources required, time delay at different points inside the chip ….etc.[6].Table (1) shows the summary of hardware synthesis reports for (15,11) Implemented Reed-Solomon encoder/decoder.

Conclusions
Reed-Solomon codes are block-based error correcting codes with a wide range of applications in digital communications and storage.The usage of FPGA Technology to implement these codes provides many advantages like efficient reconfigurability and universal chip implementation.The design procedure using FPGA Technology is done by writing a hardware description programs (using language like VHDL) to each element in the system and a main program to control the influence of signals in the system.A schematic top-level design is then required to specify pins needed for real hardware interfacing.After correct compilation, obtaining timing analysis, synthesis reports and simulation, a programming file is finally downloaded to the FPGA board.

Fig. 2 :
Fig.2: System model of Reed-Solomon Code[2] provide for 4 bit values.The 4 storage elements are 4 bit registers, labeled a0 through to a3.These registers are called as parity registers.The circuit performs polynomial division of the message polynomial, m(x) by the field generator polynomial, G(x).The remainder of the division, b(x) is 0 3 stored in the a to a parity registers.The code word c(x) is the concatenation of message polynomial m(x) followed by remainder polynomial b(x).

Fig. 5 :Fig. 6 :Fig. 7 :Fig. 8 :
Fig. 5 : Top level design Files of Reed-Solomon Encoder The test bench has the structure shown in fig 6.The clock and stimulus generator provides the 4 input signals to the encoder.Fig 7 shows a typical encoder and decoder simulation, showing inputs, outputs, identical control signals.