?? the art of error correcting coding coded modulation.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0048)http://the-art-of-ecc.com/9_Coded_Mod/index.html -->
<HTML><HEAD><TITLE>The Art of Error Correcting Coding: Coded modulation</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="Robert Morelos-Zaragoza" name=Author>
<META
content="Error Control Coding,Error CorrectingCoding,Error Correcting Codes,FEC,Turbo Codes,Iterative Decoding,DigitalCommunications,Wireless,Satellite,Data,Coded Modulation,Golay,Hamming,BCH,Reed Solomon,Viterbi Decoder,Soft Decision Decoding,Sudan Algorithm,Unequal Error Protection,Variable Rate Coding,Adaptive Coding,Convolutional Codes,LDPC,Low-Density Parity-Check Codes,The Art of Error-Correcting Coding,Capacity-achieving codes,Coding is not dead, is more alive than ever"
name=description>
<META content="MSHTML 6.00.2900.3395" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<CENTER><BIG><B><FONT size=+1><BIG>Coded modulation
schemes</BIG></FONT></B></BIG></CENTER>
<P>In this page, links to programs in C/C++ and Matlab for simulating
several combinations of error correcting codes and digital modulation are
presented. Combined coding and modulation is discussed in Chapter 9 of the <A
href="http://www.amazon.com/gp/product/0470015586/ref=sr_11_1/102-3025380-7157754?ie=UTF8">book</A>
<BR> </P><SMALL><B><FONT size=+1><SMALL>Reed-Muller coded QPSK
modulation</SMALL></FONT></B>:</SMALL><BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/RM31/qpsk_rm31.c">qpsk_rm31.c</A>
<P></P>Simulation of coded QPSK with an extended Hamming (8,4,4) code. This
basic example of a coded modulation scheme serves to set our minds and
understand the essential idea, before proceeding to more elaborated combinations
of ECC and modulation. <BR><BR><SPAN
style="FONT-WEIGHT: bold">Reed-Solomon coded M-QAM:</SPAN><BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/rscode_AWGN_MQAM.mdl">RS coded
MQAM.mdl</A> <BR>Note: This is a <SPAN style="FONT-STYLE: italic">Simulink
</SPAN>model created with Matlab version 7.1<BR>
<P><BR></P>
<P><B><FONT size=+1>Trellis-coded modulation (TCM)</FONT></B> </P>
<P>As in the case of <A
href="http://the-art-of-ecc.com/5_Convolutional/index.html">binary convolutional
codes</A> and <A href="http://the-art-of-ecc.com/7_SISO/index.html">turbo
codes</A>, TCM schemes have an underlying trellis structure that must be
provided to the Viterbi decoding algorithm. Therefore, there are two steps
required in the simulation of a particular combination of trellis and
modulation: </P>
<P><B>1. Trellis structure</B><BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/gen_trellis_ungerboeck.c">gen_trellis_ungerboeck.c</A></P>
<P></P>
<P>This is the same algorithm as for binary convolutional encoders. For rate-1/2
encoders and 8-PSK modulation, the difference is that labels of branches are now
integers from 0 to 2^m-1, and not pairs of bits. This is because the branch
labels are used by the decoder to address cosets of signals associated with
uncoded bits. The trellis is specified by an input file with the same format as
in the <A href="http://the-art-of-ecc.com/5_Convolutional/index.html">binary
case</A>. Here are some good examples of input files and the corresponding
trellis structure files: <BR></P><A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/input_4state.data">input_4state.data</A>
<A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/trellis_tcm_S4.data">trellis_tcm_S4.data</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/input_8state.data">input_8state.data</A>
<A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/trellis_tcm_S8.data">trellis_tcm_S8.data</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/input_16state.data">input_16state.data</A>
<A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/trellis_tcm_S16.data">trellis_tcm_S16.data</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/input_32state.data">input_32state.data</A>
<A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/trellis_tcm_S32.data">trellis_tcm_S32.data</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/input_64state.data">input_64tate.data</A>
<A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/trellis_tcm_S64.data">trellis_tcm_S64.data</A>
<P><B>2. Viterbi decoder</B><BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/TCM/tcm_8psk.c">tcm_8psk.c</A></P>
<P></P>The Viterbi algorithm is the same as <A
href="http://the-art-of-ecc.com/5_Convolutional/index.html">the binary case</A>
with one main difference: The survivor sequences include the uncoded bits, which
are decided at each trellis stage when selecting one of two parallel branches
with the largest correlation metric. <BR><I>Presently, only 8-PSK modulation is
considered. Extensions to higher-order modulations can be implemented following
a similar procedure.</I> <BR>
<P><B><FONT size=+1>Pragmatic trellis-coded modulation (P-TCM)</FONT></B> </P>
<P>Pragmatic TCM schemes are designed to use the same binary convolutional
encoder selecting cosets in a signal constellation. Denser constellations can be
used by employing uncoded bits (parallel branches in the trellis). Below are two
programs for simulating P-TCM schemes using suboptimal decoders of reduced
complexity. They have been designed for 8-PSK modulation. The trellis structure
of the standard 64-state rate-1/2 code is: <BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/PTCM/trellis_tcm_S64.data">trellis_tcm_S64.data</A>
</P><B>1. Two-stage decoding</B><BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/PTCM/tc-8psk-iq.c">tc-8psk-iq.c</A>
<P></P>Based on a (patented) IQ transformation of the incoming 8-PSK symbols.
The transformed I-channel and Q-channel samples appear to the decoder as if they
were QPSK symbols. The second decoding stage is a simple look-up table with the
decoded bit from the Viterbi algorithm and information on the sector of the
original noisy received 8-PSK symbol.
<P><B>2. Decoding with polar coordinates</B> <BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/PTCM/tc-8psk-sect.c">tc-8psk-sect.c</A>
</P>
<P>The same two-stage decoder as above. However, when transforming the symbols
prior to Viterbi decoding, the amplitude information is ignored and only the
phase of the received symbol is employed in the metric computation stage.
<BR> </P>
<P><B><FONT size=+1>Multilevel-coded modulation (MCM)</FONT></B> </P>
<P>Multilevel coding schemes are designed to use binary codewords selecting
labels of signals in a constellation. These schemes have been shown to achieve
capacity if the component codes are designed with rates matching the capacities
of underlying multiple channels. Below is an example of an MCM scheme with short
BCH codes and soft-decision decoding with ordered statistics. </P>
<P>The same observations made in discussing the <A
href="http://the-art-of-ecc.com/6_Soft/index.html">ordered statistics decoding
algorithm</A> apply here, in terms of a definition file that needs to be
modified every time the component codes change. In the program below, the
component are BCH(64,18,22), BCH(64,45,8) and BCH(64,63,2) codes. Consequently
the orders needed are [22/4]=4, [8/4]=2 and [2/4]=0. The source files are:
<BR><A href="http://the-art-of-ecc.com/9_Coded_Mod/MCM/def3.h">def3.h</A> <BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/MCM/main_4_2_0.c">main_4_2_0.c</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/MCM/order4_code1.c">order4_code1.c</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/MCM/order2_code2.c">order2_code2.c</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/MCM/order0_code3.c">order0_code3.c</A>
</P>
<P>which should be compiled as: <BR>gcc -O2 main_4_2_0.c order4_code1.c
order2_code2.c order0_code3.c -lm </P>
<P>The generator matrices of these codes, needed as input to the simulation
program, are: <BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/MCM/generator_641822.data">generator_641822.data</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/MCM/generator_644508.data">generator_644508.data</A>
<BR><A
href="http://the-art-of-ecc.com/9_Coded_Mod/MCM/generator_646302.data">generator_646302.data</A>
<BR> <BR> </P>
<P><B><A href="http://the-art-of-ecc.com/topics.html">BACK TO
CONTENTS</A></B><BR></P>
<HR>
<H6 style="FONT-WEIGHT: normal"><SMALL><FONT color=#000000>This page was last
updated on August 6, 2008, by Robert H. Morelos-Zaragoza.</FONT></SMALL></H6><!-- text below generated by server. PLEASE REMOVE --><!-- Counter/Statistics data collection code -->
<SCRIPT language=JavaScript
src="The Art of Error Correcting Coding Coded modulation.files/whv2_001.js"></SCRIPT>
<SCRIPT language=javascript>geovisit();</SCRIPT>
<NOSCRIPT><IMG height=1 alt=setstats
src="The Art of Error Correcting Coding Coded modulation.files/visit.gif"
width=1 border=0></NOSCRIPT></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -