Turbo Code Demo
Turbo Code
Demo
MATLAB code for
experiment on turbo codes (updated June 07, 1999).The following
MATLAB funtions will allow you to simulate the classical Turbo Coding system,
which is also known as parallel concantenated convolutional codes. They are
written to be shared with fellow researchers working on Turbo Codes. Please
download all the .m files and run turbo_sys_demo.m file in MATLAB
environment.
This NEW version includes both the Log-MAP [1] and SOVA [2]
algorithms for decoding. The information bits are randomly generated which
assume a uniform distribution. For each frame of bits, a random interleaver is
generated for it. Thus the code performance stands for the average performance
among all interleavers. You can set the following parameters yourself:
decoding algorithm (
Log-MAP / SOVA )
frame size
code generator
puncture /
unpuncture
maximum number of
iterations
number of frame errors to
terminate
signal to noise ratio (
Eb / No )
bin_state.m ,
utility to convert an integer to a vector of binary bits.
href="http://www.ee.vt.edu/~yufei/turbo/demultiplex.m">demultiplex.m,
serial to parallel demultiplex at the receiver.
encode_bit.m
, two RSC (Recursive Systematic Convolutional) encoder to encode frames of
information bits. a single bit.
encoderm.m ,
turbo encoding process.
int_state.m ,
utility to convert from vector of bits to integer.
logmapo.m ,
Log-MAP component decoder.
rsc_encode.m
, encodes a block of data using a RSC encoder.
sova0.m , SOVA
(Soft Output Viterbi Algorithm) component decoder.
trellis.m, set
up the trellis for a given code generator.
href="http://www.ee.vt.edu/~yufei/turbo/turbo_sys_demo.m">turbo_sys_demo.m
, turbo encoding and turbo decoding system simulation. Topmost function.
Start Here!(An error
corrected for SOVA application!)
[1] Patrick Robertson, Peter Hoeher,
Optimal and sub-optimal maximum a
posteriori algorithms suitable for turbo decoding face=Arial,Helvetica>, European Trans. on Telecommun.,Vol. 8, No. 2, March-April
1997, p. 119-125.
[2] Joachim Hagenauer, Elke Offer, and Lutz
Papke, Iterative decoding of binary block and
convolutional codes, IEEE Trans. Inform.
Theory, Vol. 42, No. 2, March 1996, p. 429-445.
Some simulation results color=#000099>1. Small frame size:
Setting:
frame size = 1024
code generator = [07;
05] (default)
punctured (default) into
rate 1/2
maximum number of
iterations = 8
terminate with frame
errors 30
Plots:
href="http://www.ee.vt.edu/~yufei/turbo/demolber.jpg">Bit Error Rate with
Log-MAP, Eb/N0 = [1.0:0.5:2.5]
href="http://www.ee.vt.edu/~yufei/turbo/demolfer.jpg">Frame Error Rate with
Log-MAP, Eb/N0 = [1.0:0.5:2.5]
href="http://www.ee.vt.edu/~yufei/turbo/demosber.jpg">Bit Error Rate with
SOVA, Eb/N0 = [1.5:0.5:3.0]
href="http://www.ee.vt.edu/~yufei/turbo/demosfer.jpg">Bit Error Rate with
SOVA, Eb/N0 = [1.5:0.5:3.0]
2. Large frame size
(original setting in Berrou's paper with Log-MAP):
Setting:
frame size = 65536
code generator = [037;
021]
punctured into rate
1/2
maximum number of
iterations = 18
terminate with frame
errors 35
Eb/N0 = 0.2 - 2
db
Plots:
href="http://www.ee.vt.edu/~yufei/turbo/berrouber.jpg">Bit Error Rate is
lower than 1e-5 at 0.7 db, which is 0.5 db from the Shannon limit. Notice the
error floor after it.
href="http://www.ee.vt.edu/~yufei/turbo/berroufer.jpg">Frame Error Rate
doesn't drop as much.
Please send your precious
comment to:
yufei@vt.edu
Back to Turbo Codes
homepage
Back to Yufei Wu's
homepage