International Association of Scientific Innovation and Research (IASIR)
(An Association Unifying the Sciences, Engineering, and Applied Research)
International Journal of Emerging Technologies in Computational
and Applied Sciences (IJETCAS)
www.iasir.net
IJETCAS 14-378; © 2014, IJETCAS All Rights Reserved Page 253
ISSN (Print): 2279-0047
ISSN (Online): 2279-0055
CRC AND LOOK-UP TABLE ASSISTED ERROR CORRECTION IN A
CONVOLUTIONAL CODED SYSTEM ON DSP
S. V. Viraktamath
1
, Dr. Girish V. Attimarad
2
1
Assistant Professor, Department of E&CE, SDMCET, Dharwad, Karnataka, India.
2
Professor, HOD Department of E&CE, Dayanand Sagar College of Engineering, Bangalore, Karnataka, India
__________________________________________________________________________________________
Abstract: Cyclic Redundancy Codes (CRC) code provides a simple, yet powerful, method for the detection of
errors during digital data transmission and storage. Among Forward Error Correction (FEC) schemes,
convolutional encoding and Viterbi decoding are the most popular because of their powerful coding-gain
performances. In this paper the implementation of CRC and Viterbi decoder on DSP is presented. CRC-32 and
Viterbi hard decision decoding algorithm for rate 1/2 and for different generator polynomials is simulated and
also implemented on DSP-TMS320C5416. Also the for higher SNR receivers concept of serially concatenated
CRC- Convolutional Coding (CC) with lookup table at the decoder side is proposed.
Key Words: CRC, DSP, Viterbi, Trellis, Constraint length.
__________________________________________________________________________________________
I. INTRODUCTION
The evolving world of telecommunications requires increasing reliability and speed in communications.
Reliability in information storage and transmission is provided by coding techniques. Information is usually
coded in bit streams and transmitted over the communication medium, channel. The communication media is
prone to errors due to noise present in the analog portion of the channel. Therefore errors have to be detected
and corrected while decoding. CRC has the advantages of easy coding and decoding as well as strong abilities of
checking errors and correcting errors. Therefore, it was widely used in the field of communications. Reliability
in information storage and transmission is provided by coding techniques. CRC is an error-detecting code
designed to detect accidental changes to raw computer data, and is commonly used in digital networks and
storage devices such as hard disk drives. Blocks of data entering these systems get a short check value attached,
derived from the remainder of a polynomial division of their contents; on retrieval the calculation is repeated,
and corrective action can be taken against presumed data corruption if the check values do not match. The CRC
was invented by W. Wesley Peterson in 1961. CRC is an error detecting code that is widely used to detect
corruption in blocks of data that have been transmitted or stored. The Error Control Coding techniques (ECC)
rely on the systematic addition of redundant bits at the transmitting side. The task of channel coding is to encode
information sent over a communication channel in such a way that in the presence of channel noise, errors can
be detected and possibly corrected. There are two coding methods - backward error correction codes and
forward error correction codes. Backward error correction codes requires only error detection, if an error is
found then the transmitter is requested to retransmit the message. Forward error correction codes require the
decoder to be capable of correcting errors. There are several error correcting codes and these are classified under
two basic categories namely block codes and convolutional codes.
Convolutional codes [1] differ from block codes [2] in the sense that bit streams are not partitioned into binary
words instead redundancy is added continuously to the whole stream. Convolutional codes are widely used error
control coding technique in channel coding because of low complexity and error controlling capability. Viterbi
decoding algorithm [3, 4] is the simplest and best algorithm for decoding of convolutional codes. The Viterbi
algorithm first appeared in the coding literature in a paper written by Andrew J. Viterbi in 1967 [5]. Since then,
due to its easiness in implementation, it has been applied to many different areas related to decoding problems.
The 8-bit parallel CRC-32 is proposed in [6] to meet the high throughput of USB3.0. Exhaustive survey of all
CRC polynomials from 3 bits to 15 bits is presented in [7]. A set of 35 new polynomials in addition to 13
previously published polynomials are also described. The method that realizes the ability of multiple bits error
correction using cyclic redundancy check codes is presented in [8]. The structures of 8-bit CRC are presented in
[9]. The joint decoding scheme of serially concatenated CRC and convolutional code (CC) has been investigated
in [10]. This paper is organized as follows. Section 2 gives the proposed work. Section 3 gives the CRC coding.
The Viterbi decoder is discussed in section 4. Processor TMS 320VC5416 is discussed in section 5. The results
of the proposed model are discussed in section 6. Next section concludes the paper.
II. PROPOSED WORK
The basic block diagram of a system used for the simulation is shown in Fig.1. The output of the source encoder
is given to the convolutional encoder. The output of the convolutional encoder is given to the CRC encoding;