DSPRelated.com
Forums

Turbo codes for multi-level modulation

Started by commsignal January 2, 2014
Hi,
    Turbo codes implementation through BCJR algorithm for binary modulation
is straightforward. Can someone inform me about how to do that for
multi-level modulation, say QPSK or 16-QAM. Specifically, how does the
decoder function. Any reference paper is also welcome.
Thanks.	 

_____________________________		
Posted through www.DSPRelated.com
On Thu, 02 Jan 2014 19:21:48 -0600, "commsignal" <58672@dsprelated>
wrote:

>Hi, > Turbo codes implementation through BCJR algorithm for binary modulation >is straightforward. Can someone inform me about how to do that for >multi-level modulation, say QPSK or 16-QAM. Specifically, how does the >decoder function. Any reference paper is also welcome. >Thanks.
There is no difference in the BCJR algorithm or anything else for Turbo Codes in higher-order modulation. The only difference is generating the soft decision metrics for each bit, and that's no different than for any other typical FEC with soft-decision input. You can look generally at soft-decision slicing for whatever modulation type you're interested in, and it will be the same or very similar for a Turbo Code. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
>On Thu, 02 Jan 2014 19:21:48 -0600, "commsignal" <58672@dsprelated> >wrote: > >>Hi, >> Turbo codes implementation through BCJR algorithm for binary
modulation
>>is straightforward. Can someone inform me about how to do that for >>multi-level modulation, say QPSK or 16-QAM. Specifically, how does the >>decoder function. Any reference paper is also welcome. >>Thanks. > >There is no difference in the BCJR algorithm or anything else for >Turbo Codes in higher-order modulation. The only difference is >generating the soft decision metrics for each bit, and that's no >different than for any other typical FEC with soft-decision input. > >You can look generally at soft-decision slicing for whatever >modulation type you're interested in, and it will be the same or very >similar for a Turbo Code. > > >Eric Jacobsen >Anchor Hill Communications >http://www.anchorhill.com >
Hi Eric, Thanks for your input. What I want to know is that how should I compute gamma (the transition probabilities) and extrinsic information for each bit in multi-level modulations. Should I just compute gamma as usual ( p(r|bit).Apriori(bit) ) and the extrinsic information as LLR-Apriori(bit)-channel information. Now is this channel information equal to p(r|bit) above? Thanks again. _____________________________ Posted through www.DSPRelated.com
On Sun, 05 Jan 2014 18:10:25 -0600, "commsignal" <58672@dsprelated>
wrote:

>>On Thu, 02 Jan 2014 19:21:48 -0600, "commsignal" <58672@dsprelated> >>wrote: >> >>>Hi, >>> Turbo codes implementation through BCJR algorithm for binary >modulation >>>is straightforward. Can someone inform me about how to do that for >>>multi-level modulation, say QPSK or 16-QAM. Specifically, how does the >>>decoder function. Any reference paper is also welcome. >>>Thanks. >> >>There is no difference in the BCJR algorithm or anything else for >>Turbo Codes in higher-order modulation. The only difference is >>generating the soft decision metrics for each bit, and that's no >>different than for any other typical FEC with soft-decision input. >> >>You can look generally at soft-decision slicing for whatever >>modulation type you're interested in, and it will be the same or very >>similar for a Turbo Code. >> >> >>Eric Jacobsen >>Anchor Hill Communications >>http://www.anchorhill.com >> > >Hi Eric, > Thanks for your input. What I want to know is that how should I compute >gamma (the transition probabilities) and extrinsic information for each bit >in multi-level modulations. Should I just compute gamma as usual ( >p(r|bit).Apriori(bit) ) and the extrinsic information as >LLR-Apriori(bit)-channel information. Now is this channel information equal >to p(r|bit) above? >Thanks again.
Are you doing turbo demodulation/turbo equalization or just turbo decoding? If you're just doing turbo decoding, once the channel LLRs are generated by the slicer you don't need to revisit the modulation type during decoding. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
>On Sun, 05 Jan 2014 18:10:25 -0600, "commsignal" <58672@dsprelated> >wrote: > >>>On Thu, 02 Jan 2014 19:21:48 -0600, "commsignal" <58672@dsprelated> >>>wrote: >>> >>>>Hi, >>>> Turbo codes implementation through BCJR algorithm for binary >>modulation >>>>is straightforward. Can someone inform me about how to do that for >>>>multi-level modulation, say QPSK or 16-QAM. Specifically, how does the >>>>decoder function. Any reference paper is also welcome. >>>>Thanks. >>> >>>There is no difference in the BCJR algorithm or anything else for >>>Turbo Codes in higher-order modulation. The only difference is >>>generating the soft decision metrics for each bit, and that's no >>>different than for any other typical FEC with soft-decision input. >>> >>>You can look generally at soft-decision slicing for whatever >>>modulation type you're interested in, and it will be the same or very >>>similar for a Turbo Code. >>> >>> >>>Eric Jacobsen >>>Anchor Hill Communications >>>http://www.anchorhill.com >>> >> >>Hi Eric, >> Thanks for your input. What I want to know is that how should I
compute
>>gamma (the transition probabilities) and extrinsic information for each
bit
>>in multi-level modulations. Should I just compute gamma as usual ( >>p(r|bit).Apriori(bit) ) and the extrinsic information as >>LLR-Apriori(bit)-channel information. Now is this channel information
equal
>>to p(r|bit) above? >>Thanks again. > >Are you doing turbo demodulation/turbo equalization or just turbo >decoding? > >If you're just doing turbo decoding, once the channel LLRs are >generated by the slicer you don't need to revisit the modulation type >during decoding. > > >Eric Jacobsen >Anchor Hill Communications >http://www.anchorhill.com >
It's just decoding. I might be confusing something. When you say, "The only difference is generating the soft decision metrics for each bit", what exactly do you mean? Thanks. _____________________________ Posted through www.DSPRelated.com
>Hi, > Turbo codes implementation through BCJR algorithm for binary
modulation
>is straightforward. Can someone inform me about how to do that for >multi-level modulation, say QPSK or 16-QAM. Specifically, how does the >decoder function. Any reference paper is also welcome. >Thanks. > >_____________________________ >Posted through www.DSPRelated.com >
http://downloads.hindawi.com/journals/jece/2007/053517.pdf _____________________________ Posted through www.DSPRelated.com
On Sun, 05 Jan 2014 23:00:55 -0600, "commsignal" <58672@dsprelated>
wrote:

>>On Sun, 05 Jan 2014 18:10:25 -0600, "commsignal" <58672@dsprelated> >>wrote: >> >>>>On Thu, 02 Jan 2014 19:21:48 -0600, "commsignal" <58672@dsprelated> >>>>wrote: >>>> >>>>>Hi, >>>>> Turbo codes implementation through BCJR algorithm for binary >>>modulation >>>>>is straightforward. Can someone inform me about how to do that for >>>>>multi-level modulation, say QPSK or 16-QAM. Specifically, how does the >>>>>decoder function. Any reference paper is also welcome. >>>>>Thanks. >>>> >>>>There is no difference in the BCJR algorithm or anything else for >>>>Turbo Codes in higher-order modulation. The only difference is >>>>generating the soft decision metrics for each bit, and that's no >>>>different than for any other typical FEC with soft-decision input. >>>> >>>>You can look generally at soft-decision slicing for whatever >>>>modulation type you're interested in, and it will be the same or very >>>>similar for a Turbo Code. >>>> >>>> >>>>Eric Jacobsen >>>>Anchor Hill Communications >>>>http://www.anchorhill.com >>>> >>> >>>Hi Eric, >>> Thanks for your input. What I want to know is that how should I >compute >>>gamma (the transition probabilities) and extrinsic information for each >bit >>>in multi-level modulations. Should I just compute gamma as usual ( >>>p(r|bit).Apriori(bit) ) and the extrinsic information as >>>LLR-Apriori(bit)-channel information. Now is this channel information >equal >>>to p(r|bit) above? >>>Thanks again. >> >>Are you doing turbo demodulation/turbo equalization or just turbo >>decoding? >> >>If you're just doing turbo decoding, once the channel LLRs are >>generated by the slicer you don't need to revisit the modulation type >>during decoding. >> >> >>Eric Jacobsen >>Anchor Hill Communications >>http://www.anchorhill.com >> > >It's just decoding. I might be confusing something. When you say, "The only >difference is generating the soft decision metrics for each bit", what >exactly do you mean? Thanks.
For BPSK you generate the channel LLRs by scaling each received symbol to its corresponding bit. For QPSK you do the same but on two axes instead of one. For higher-order modulations you must take some additional care to really get a useful channel soft-decision LLR for each bit, but it is possible to do and depends on how the mapping is constructed. Once that is done and there is a channel LLR value for each received decoder input bit, that job doesn't have to be done again and the decoder doesn't really care what the modulation type was. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
For BPSK you generate the channel LLRs by scaling each received symbol
>to its corresponding bit. For QPSK you do the same but on two axes >instead of one. For higher-order modulations you must take some >additional care to really get a useful channel soft-decision LLR for >each bit, but it is possible to do and depends on how the mapping is >constructed. > >Once that is done and there is a channel LLR value for each received >decoder input bit, that job doesn't have to be done again and the >decoder doesn't really care what the modulation type was. > > >Eric Jacobsen >Anchor Hill Communications >http://www.anchorhill.com >
Do you have some document which describes this in detail? Alexander's reference is for a different case and I'm still not very clear. _____________________________ Posted through www.DSPRelated.com
On Mon, 06 Jan 2014 22:13:46 -0600, "commsignal" <58672@dsprelated>
wrote:

>For BPSK you generate the channel LLRs by scaling each received symbol >>to its corresponding bit. For QPSK you do the same but on two axes >>instead of one. For higher-order modulations you must take some >>additional care to really get a useful channel soft-decision LLR for >>each bit, but it is possible to do and depends on how the mapping is >>constructed. >> >>Once that is done and there is a channel LLR value for each received >>decoder input bit, that job doesn't have to be done again and the >>decoder doesn't really care what the modulation type was. >> >> >>Eric Jacobsen >>Anchor Hill Communications >>http://www.anchorhill.com >> > >Do you have some document which describes this in detail? Alexander's >reference is for a different case and I'm still not very clear.
You could try some search terms like "high-order modulation soft-decision" or something like that. You just need a soft-decision (LLR) input value for each coded bit. For BPSK that's one bit per symbol, two for QPSK. For 16QAM there are two bits per axis, so you need to generate two LLR values per symbol per axis to get the four channel bits per symbol. For high-order modulations (e.g., 16QAM or above) specifically how to do the scaling for the LLR sometimes depends on the mapping of the constellation. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
> Alexander's reference is for a different case and I'm still not very
clear. Why? QAM soft demapper does not depend on type of binary code. One nuance about high order constellations(>16QAM), bits are unequal protection, and some bits may be uncoded, like Ungerboeck set partitioning. _____________________________ Posted through www.DSPRelated.com