Implementation and Analysis of an Error Detection and Correction System on FPGA Constantin Anton, Laurenţiu Mihai Ionescu, Ion Tutănescu, Alin Mazăre, Gheorghe Şerban University of Piteşti, Romania Abstract This paper presents a solution to design and implement a hardware error detection and correction circuit using associative memories. This type of memory allows search of a binary value stored, having input data a partial (or modified) amount of this value. This property can be used in communication, for detection and correction of errors. In our analysis, the obtained experimental results were compared with performances of other hardware systems. 1. Introduction Usage of error correcting control is very important in the modern communication system. BCH codes (Bose, Chaudhuri, and Hocquenghem) are widely used in communication networks, computer networks, satellite communication, magnetic and optic storage systems. This paper presents the prototyping of a BCH encoder and decoder using associative memory. BCH codes operate over finite fields or Galois fields. BCH codes can be defined by two parameters that are: length of code words, n, and the number of errors to be corrected, t. The BCH codes are a class of cycle codes whose generator polynomial is the product of distinct minimal polynomials, corresponding to α, α 2 , … , α 2t , where m GF 2 is a root of the primitive polynomial g(x)[1]. An irreducible polynomial g(x) of degree m is said to be primitive if only if it divides polynomial form of degree n, 1 n x for no n less than 1 2 m . In fact, every binary primitive polynomial g(x) of degree m is a factor of 1 1 2 m x [2]. For our application we use generator polynomial: 1 ) ( 2 4 5 8 10 x x x x x x x g . which can correct 3 erroneous bits and detect 6 errors. 2. Hardware circuits for errors detection and correction Field-Programmable Gate Arrays (FPGAs) have become one of the key digital circuit implementation media over the last decade [3]. One bit patterns will produce operational circuits and can be used in many areas, like that of communication systems. Our hardware scheme is based on polynomial generator for errors detection and correction. FPGA circuits represent a compromise between circuits with microprocessor and ASIC circuits (Application Specific Integrated Circuits) [4]. First, they present flexibility in programming, called here reconfiguration, which is a feature for microprocessors. Even if FPGA cannot be programmable while operation, they can be configured anytime is needed, having a structure based on RAM programmable machines. On the other hand, they allow the parallel structures implementation, with smaller response times than a system with microprocessor. FPGA is organized as a 2D array of configurable logic blocks (CLB). They can be interconnected via global bus, which is realized between configurable blocks, or by local bus, which is realized within a CLB. In turn, each CLB circuit has a total of 4 slices. A slice contains a logic functions generator (can implement any logic function with 4 inputs and one output), an arithmetic logic, flip-flops and multiplexers to connect with other neighboring slices. Because this architecture, FPGA circuits are especially useful in applications that rely on network logic cells. Associative memory is a type of memory that can be addressable by the content. Instead to know an address, to access a location is sufficient to know the content part of the location. Using partial content is a search until it finds the memory location it contains. Thus, it is partially associated content (data entry) with full content value (found at that location). There are many works that have used FPGA circuits to detect and correct errors. This is because these devices are affordable and can be purchased at low prices. Also, development tools for these circuits are available. So they were made in FPGA implementation of algorithms for calculating the checksum (CRC) and automatically attach it to the packet that is transmitted on the communication channel [5], implementation of BCH error correction codes [6], implementation of SR-ARQ hybrid algorithms [7], algorithms for checking parity checksum type [8] and the class of quasi-cyclic LDPC codes [9]. In all these examples, we have machines that perform calculations implemented in FPGA. International Journal of Intelligent Computing Research (IJICR), Volume 3, Issues 3/4, Sep/Dec 2012 Copyright © 2012, Infonomics Society 348