Design and Implementation of A Turbo Code System On FPGA: November 2011
Design and Implementation of A Turbo Code System On FPGA: November 2011
net/publication/308327836
CITATIONS READS
0 923
4 authors, including:
Some of the authors of this publication are also working on these related projects:
Study and application on network coding for improving quality of data transfer in lossy network View project
Joint control of data storing, routing, and coding on edge-clouds for reliable IoT View project
All content following this page was uploaded by Nguyen Viet Ha on 20 September 2016.
Abstract— Error control coding is an important part of Because Turbo code plays an important role in the
communications systems to recover original transmitted data in modern wireless communications, it has recently been studied
fading environments. In 3G and 3G beyond mobile systems, widely over the world [1, 4, 5]. In the paper, we focus on the
Turbo code technology has been used because of its study of the encoder by simulating it on Matlab and then
outperformance compared to the other technologies. The
contributions of the paper are to study the Turbo code, simulate
design and implement on the FPGA board. The results have
its on Matlab, then design and implement the code on FPGA shown the success of our research.
successfully. The remaining of the paper is divided as follows: in the
Keywords: Turbo code, Forward error correction, FPGA. next section, a detailed study on Turbo code is presented. In
section III, the simulation of Turbo code is considered. The
design and implementation of Turbo code on FPGA is
I. INTRODUCTION described in section IV. Finally, the conclusions are drawn in
section V.
In wireless communications, error control coding is a
very important part to recover transmitted data over fading II. DESIGN OF TURBO CODE
environments. Many studies have been focused on increasing The paper carries out the error control coding, Turbo
the ability of error correction of the coding systems. Recently, code based on parallel model and SOVA decoding.
Turbo code has been considered as the best error control
coding technology, thus it has been used in high speed data A- Encoder: Turbo code is a parallel connection of the
rate systems such as 3G mobile networks and beyond 3G [1-5] concatenated convalutional code (Parallel Concatenated
Convolutional Code - PCCC) as shown in Fig. 3. Code rate of
Turbo code is a combination of two or more separate the encoder is r = k/n. Each input information bit becomes a
encoders in order to generate a new and better encoder. The part of output codewords and is added by (1/r - 1) parity bits
first combined coding model made by Dr. Forney was for error correction. If r is small, then the number of parity bits
considered to build an emcoder which has error probility increase, thus the ability of error correction also increases, but
decreasing on the exponential power when data rate is less code rate decreases
than channel capacity, whereas the complexity of decoding
increases linearly [3]. The model includes the serious
combination of an internal encoder and an external one.
Generally, there are two types of combinations as parallel and
serial as shown in Figs. 1 and 2. For serial encoder, total
coding rate is given by
Rnt = k1k2/n1n2 (1)
Fig. 3 : PCCC Turbo Encoder
For parallel one, total coding rate is as follows:
Puncture:
Rss = k/(n1+n2) (2)
Is a technique to increase coding rate of an encoder that
does not change the inside of the encoder. The purpose of the
puncture technique is to decrease input information bits in a
manner way to increase coded output bits, as shown in Fig. 4.
mk = ,
where k = 0,1,2,…,Ncbps-1
At the second step, interleaving as
jk = s . floor + (m + Ncbps – floor )mod(s)
where m = 0,1,…,Ncbps–1
System code
Encoder RCS 2
Low weight code
Fig. 7 : An example of a Trellis diagram
Registers
High weight code
Interleaver Encoder RCS 2
ML states
Pre-
Fig. 5: Position of an Interleaver used in Turbo encoder SOVA
B- Decoder: In Turbo code, the decoder is carried out
iteratively but the complexity just increases linearly according
Registers
to the size of frames. PCCC code has a structure of connection
in parallel but the decoding process is carried out in series
because serial connection can share information between
Fig. 8 : Structure of a SOVA decoder
decoders. There are two decoding techniques: SOVA and
MAP, as shown in Fig. 6. III. SIMULATION RESULTS ON MATLAB
Decoding algorithms In order to evaluate the performance of Turbo code, in
based on Trellis the paper we compared the bit error rate performance of a
wireless system used three different encoders: Convolutional
code – Reed Solomon (CC-RS), Convolutional Code, and
Turbo Code, as shown in Figs. 9, 10, 11, and 12.
Advanced SOVA
a. CC-CC encoder
b. CC-CC decoder
Fig. 13: Performance comparison of three different encoders
Fig. 10: Block diagram of a two serial combined convolutional (CC –
CC) encoder and decoder IV. DESIGN AND IMPLEMENTATION OF TURBO CODE ON
FPGA
The design and implementation of Turbo code are
carried out based on DSP Builder, which is a tool developed
by Altera to support users quickly design the applications of
digital signal processing.
a. PCCC encoder
Fig. 15: Block diagram of data generator Fig. 18: Trellis terminator
Turbo Encoder includes two parallel connected RSC Turbo Decoder is carried out based on the Viterbi
encoders, as shown in Fig. 16. Data before coming to each algorithm including three main parts as follows:
encoder will go through interleaver with fixed length of 256
bit. The first encoder generates two bit sequences: one - Hamming distance estimator is designed to calculate
information bit sequence and one parity bit sequence. The Hamming distance of coded bits with branchs as shown in
second encoder generates the second parity bit sequence. Fig. 19.
Coded data will go to the multiplexer.