Error Correcting Codes Toolbox & Library
The main motivation is to create a framework in which interested people can play/experiment with different error correcting/control codes: their characteristics, performance & decoding functions. The current product is a symbol level communications system model i.e. it assumes perfect synchronization. The noise model is AWGN. The user has the flexibilty of specifying the transport block size, an array of EbNo points for simulation and the number of transport blocks per EbNo point that he/she wants simulated.
The program also has a cool functionality of specifying an input file (like an mp3 or jpeg) which gets transmitted and decoded for each of the EbNo points. Then the user can actually play the received file and individually correlate the error rate with the amount of detectable noise in the file.
Potential Use Cases for this Toolbox/Library would be:
This program is a good tool to introduce students to error correcting codes, performance trade offs and actual implementation of decoding algorithms. It also forms the infrastructure in which programming homework problems can be assigned. Some sample exercises already written are available in the userManual document (for download below).
You can take source code for blocks like the UMTS & WIMAX turbo codes or the WIMAX block turbo and LDPC codes from the library to use in a bigger system simulation
You can use this as a simulation environemnt in which you test different algorithms that conform to your own implementation constraints. You can also use the encoders & decoders of the widely used standards for verification of your IP cores
The program can be freely downloaded and played with for any purpose, however I am very interested in feedback and I am looking forward to suggestions on how I can make the code better.
Channel Coding Functions
The current version of the program does the following
- Convolution Coding
- Trellis Coded Modulation
- Turbo Coding
- Turbo Product Codes
- LDPC
For each of the functions, the user has a lot of flexibility in specifying the code structure eg. generator polynomial, transfer function, internal and external code rates, modulation constellation etc.
For example the tool supports generic k/n convolutional codes concatenated to form the turbo code. This is a lot more flexible than the standard 1/k or 1/2 codes used.
Downloads
The application is written in C and has been compiled for Windows & Linux. The downloadable zip file packages contain
Based on the sample config files and the user manuals you should be able to create your own specific config files. If you want the library/source files, send me an email and I can make it available to you.
Bio & Contact
