Trellis Coded Modulation (TCM) Matlab Code with Concepts

TCM scheme, comparing BER vs. SNR curves for Ungerboeck's, fully connected schemes with uncoded QPSK and coded 8-PSK
84 Downloads
Updated 13 Dec 2023

View License

Objective:
The main objective of this project is to understand the Trellis Coded Modulation scheme (TCM), implement and simulate it in Matlab. At the end of this project, one could understand what more a TCM scheme offers than simply cascading a Convolutional Encoder with a Modulator in our case a 2/3 convolutional encoder cascaded with an 8-PSK modulator.
Theory:
Need for TCM?
In general, to control BER we add known redundancy to the transmitted signal which we call as channel coding (error controlling techniques). This comes with the cost of data rate, redundant bits don’t carry any useful information and so the net data rate decreases when redundancy increases but this increase in redundancy would help to detect and correct errors. So, we have a trade-off between data rate (bandwidth) and BER (redundancy).
Higher redundancy means higher bandwidth requirement, lower data rate and better BER performance while lower redundancy means lower bandwidth requirement, higher data rate but comparatively low BER performance. Therefore, either transmitted power or data rate must be sacrificed to obtain desired BER performance.
Surprisingly, there exists a technique called Trellis Coded Modulation which could achieve improvement in BER without sacrificing data rate, bandwidth and power!
Working Principle:
TCM emphasis that, it is possible to obtain coding gain without bandwidth expansion if the channel encoder is integrated with the modulator in an intelligent way. Instead of encoding the input bits using a convolutional encoder and then modulating the encoded bits, TCM does both encoding and modulation in a single step.
Example:
Consider a channel with a maximum spectral efficiency of 2 bits/s/Hz. One possible solution is to use uncoded QPSK. Another possibility is to first use a 2/3 convolutional encoder (which converts 2 uncoded bits to 3 coded bits) and then use an 8-PSK signal set which has a throughput of 3 bits/s/Hz. This coded 8-PSK scheme yields the same information data throughput of the uncoded QPSK (2/3 * 3 = 2 bits/s/Hz). But the symbol error rate for the 8-PSK is worse than that of QPSK for the same energy per symbol. However, the 2/3 convolutional encoder
would provide some coding gain. It could be possible that the coding gain provided by the encoder outweighs the performance loss because of the 8-PSK signal set. If the coded modulation scheme performs superior to the uncoded QPSK scheme at the same SNR, we can claim that an improvement is achieved without sacrificing either the data rate or the bandwidth. In this example we have combined a trellis encoder with the modulator. Such a scheme is called a Trellis Coded Modulation (TCM) scheme.
Common Misconception:
The point to note here is we can’t just blindly cascade the 2/3 Convolutional encoder and an 8-PSK modulator to achieve a scenario where the error correction capability of the encoder outperforms the errors caused due to density of signal points in 8-PSK compared to QPSK. The above statement is evident from the Matlab simulation result shown later. (Coded 8-PSK’s BER performance is inferior to uncoded QPSK’s BER performance).
So TCM is not just cascading these encoder and modulator blocks rather it is integrating them that too in an intelligent way!
I would suggest everyone to go through my project report to get command over the theoretical concepts of TCM and I have explained it as simple as i can...Therefore it is worth a read
Click to view report TCM_Report_Simplified (Request access for viewing - will grant asap).

Cite As

Kasini Venthan M (2025). Trellis Coded Modulation (TCM) Matlab Code with Concepts (https://se.mathworks.com/matlabcentral/fileexchange/155020-trellis-coded-modulation-tcm-matlab-code-with-concepts), MATLAB Central File Exchange. Retrieved .

Information Theory, Coding and Cryptography Third Edition - Ranjan Bose

MATLAB Release Compatibility
Created with R2023a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.0.3

restricted access

1.0.2

Restricted Access

1.0.1

Just changed the title of the file and uploaded image to make it more precise

1.0.0