FPGA Implementation of Reed Solomon Enco
FPGA Implementation of Reed Solomon Enco
42
International Journal of Computer Applications (0975 – 8887)
Volume 68– No.16, April 2013
encoder in which data remains unaltered. This requires that no error and if the result is non-zero then error will be there.
data symbols must be shifted from power level of (n-1) down The other blocks are used to correct the error if syndrome
to (n-k) and remaining positions from power (n-k-1) to 0 be detects the error. All the algorithms are discussed below:
filled with zeros. RS encoder performs two main operations,
shifting and division. Both operations are implemented by 2.2.1 Syndrome calculation
using linear-feedback shift registers [5]. Let a message or data At the receiver, syndrome is calculated to check the presence
is represented in the polynomial form as: of errors. If the error correction capability of code is 8 then
syndromes will be 16 that is 2t. The syndrome polynomial
M(x) = mk-1 xk-1 + mk-2 xk-2+…………. + m1x + m0 (5) contains the location and magnitude of up to t errors in an
invalid codeword. A valid codeword generates a syndrome
And the codeword is represented in polynomial as: polynomial with all zero coefficients.
And the generator polynomial is shown below: Where R(x)= R0+R1x+R2x2+………..+Rn-1xn-1 is the received
polynomial and Rn-1 is the first received symbol.
g(x) = g0 + g1 X + g2 X2 + …… + g2t - 1 X 2t - 1 + X 2t (7)
2.2.2 Berkelamp-Massey algorithm
And parity-check is given by: The main component of Reed-Solomon decoder is the key
equation solver. This equation involves 2t linearly dependent
CK(x) = xn-kM(x) mod g(x) (8) equations. It generates the key equations [9]:
µ(x) S(x)= Ω(x) mod(x2t) (12)
And codeword is given by:
Where µ(x) is the error locator polynomial and Ω(x) is the
C(x) = xn-kM(x) + CK(x) (9) error evaluator polynomial. The error locator polynomial
contains information about location of bad symbols and error
Here, for encoding Reed-Solomon code (255,239) for IEEE evaluator polynomial contains information about the error
802.16 network the code generator polynomial is used as magnitude of the bad symbols. There are different techniques
given below [6]: for solving key equation are berkelamp algorithm [10] and
Euclidean algorithm [11]. The technique used in this paper is
g(x)=x16+76x15+34x14+67x13+1Fx12+68x11+7Ex10+BBx9+ the berkelamp-massey algorithm because this algorithm
E8x8+11x7+38x6+B7x5+31x4+64x3+51x2+2Cx+4F (10) having less hardware complexity.
There are 2t=n-k parity symbols that are 16 in this case. The 2.2.3 Chien search and error-correction
error-correcting capability for this code is t= (n-k)/2 that is 8 Chien search is used to find the roots of polynomial in reed-
symbols. In digital hardware, it is represented by using linear solomon decoder. Chien search performs the function of
feedback shift register (LFSR) [7]. It is represented in the finding the error locations, and correcting the data, using
figure 2. Forney’s algorithm, when the Chien sum is zero. The
x0 x1 x15 x16 evaluation of the polynomials needed for error correction is
pipelined. Chien search uses all possible input values and then
checks to see if the outputs are zero. In the reed-solomon
decoder, the delay block is the necessary to adjust for the
4f 2c 76 delays in the syndrome block and startup delay in the Chien
search block. The bock diagram for Reed-Solomon decoder is
shown in Figure 3.
CK(x)
R R
Chien
R(x) S(x) µ(x) search C(x)
M(x) Syndrome Key and
calculation equation Ω(x) error
Fig 2: LFSR encoder implementation solver correcti
on
2.2 Reed-Solomon Decoder
Decoding processes are cumbersome, difficult to understand
and to implement in the hardware than encoding process.
Reed-Solomon decoder works in two parts error detection and
correction of that detected errors. The capability of correct Delay
error is depend on the code uses. It is denoted by t and
calculated by the formula t= (n-k)/2 in which n is the length of
codeword and k is the length of source data and n-k is the Fig 3: Reed-Solomon Decoder
parity symbols. The main blocks of reed-Solomon decoder are
the syndrome calculation, Berlekamp-Massey algorithm, and In this paper, Reed-Solomon Decoder is implemented for both
Chien search and error correction [8]. Syndrome means RS(255,243) and RS(255,239) for IEEE 802.16 wireless
symptoms and it detect whether the error is present or not. If network. The code generator polynomials for the both codes
the result of syndrome calculator is zero then it means there is according to IEEE 802.16 network is given as [6]:
43
International Journal of Computer Applications (0975 – 8887)
Volume 68– No.16, April 2013
44
International Journal of Computer Applications (0975 – 8887)
Volume 68– No.16, April 2013
The design summary for both the decoders for IEEE 802.16 field. And also want to thank faculty members for continuous
wireless network is shown in Table 2 and Table 3. It shows support and encouragement.
that RS(255,243) code having less hardware utilization than
RS(255,239) code. The proposed RS decoder RS(255,239) 6. REFERENCES
compares resource utilization with RS decoder given in [8]. [1] National Aeronautics and Space Administration (NASA)
technical reports, “Tutorial on Reed-Solomon error
Table 2. Design summary for RS(255,239) decoder correction coding”, Lyndon B. Johnson Space Center
Reed-Solomon Proposed RS Houston, 1990.
decoder [8] decoder (255,239) [2] Reed, I. S. and Solomon, G., “Polynomial Codes Over
Logic Used utilization Used Utilization Certain Finite Fields,” SIAM Journal of Applied Math.,
utilization vol. 8, pp. 300-304, 1960.
Number of 1830 39% 1848 39%
slices out of out of [3] IEEE draft for “Implementing an IEEE Std. 802.16-
4656 4656 Compliant FEC Decoder”, M-WP-IEEE802.16-1.0, ver.
Number of flip 1043 11% 751 8% 1.0, December 2001.
flops out of out of [4] Sklar, B., Digital Communications: Fundamentals and
9312 9312 Applications, Second Edition (Upper Saddle River, NJ:
Number of 4 3408 36% 3447 37% Prentice-Hall, 2001).
input LUTs out of out of
9312 9312 [5] Aqib. Al Azad, Minhazul. Huq, Iqbalur, Rahman Rokon,
Number of 1 out 5% 21 out 9% “Efficient Hardware Implementation of Reed Solomon
bonded IOBs of 20 of 232 Encoder and Decoder in FPGA using Verilog”,
International Conference on Advancements in
Electronics and Power Engineering (ICAEPE'2011)
Table 3. Design summary for RS(255,243) decoder Bangkok Dec., 2011.
Logic [6] Lamia Chaari, Mohamed Fourati, Nouri Masmoudi, Lotfi
Used Available Utilization
utilization Kamoun, “A Reconfigurable Fec System Based On
Number of
1460 4656 31% Reed-Solomon Codec For Dvb And 802.16 Network”,
slices Issue 8, Volume 8, August 2009.
Number of
slice flip flop
597 9312 6% [7] Joel Sylvester, “Reed Solomon Codes”, Elektrobit,
Number of 4 January 2001.
2738 9312 29%
input LUTs [8] Bhawna Tiwari, Rajesh Mehra, “Design and
Number of Implementation of Reed Solomon Decoder for 802.16
21 232 9%
bonded IOBs Network using FPGA” 978-1-4673-1318, IEEE 2012.
[9] Dilip V. Sarwate, Fellow, IEEE, and Naresh R.
4. CONCLUSION Shanbhag, Member, IEEE, “High-Speed Architectures
This paper implements the Reed-Solomon encoder and Reed- for Reed–Solomon Decoders”, IEEE Transactions On
Solomon decoder for IEEE 802.16 wireless network. Error Very Large Scale Integration (VLSI) Systems, VOL. 9,
detection and correction technique is used here for reliable NO. 5, OCTOBER 2001.
communication. The main element in the FPGA that is highest [10] E.R.Berklamp,” Algebric coding theory, McGraw-Hill,
in the demand is the LUT’s (look up table). In this paper less New york, 1968: revised edition Aegean Park Press,
number of LUT’s are used in RS(255,243) as comparison to Laguna Lills, CA, 1984.
RS(255,239). It means the resource utilization for
RS(255,243) is less than the second code. The RS decoder [11] Y.Sugiyama, M. Kasahara, S. Hirasawa, and T.
RS(255,239) compares results with the results given by [8]. Namekawa, “A method for solving key equation for
This represents reduction in the cost and save a lot of area. decoding Goppa codes,” Information and Control, vol.
Reed-Solomon encoder RS(255,239) for IEEE 802.16 is 27, pp. 87–99, Jan. 1975.
implemented to encode the data symbols. The code is
implemented in VHDL on Xilinx 12.4 and synthesized on the [12] Peter J. Ashenden, “The Designer’s Guide to VHDL”,
FPGA. Second Edition, Morgan Kaufmann Publishers, 2004.
[13] Donald G. Bailey, “Design for Embedded Image
5. ACKNOWLEDGEMENT Processing on FPGA’S” 2011.
The author would like to thank Lovely Professional
University for providing this opportunity to do work in this
45