Reply by Eric Jacobsen July 6, 20172017-07-06
On Thu, 6 Jul 2017 15:13:00 +0000 (UTC), spope33@speedymail.org (Steve
Pope) wrote:

>Evgeny Filatov <filatov.ev@mipt.ru> wrote: > >>M algorithm is briefly reviewed in Todd Moon, "Error Correction Coding: >>Mathematical Methods and Algorithms". > >One good use of these reduced-complexity decoding algorithms is, >in a packet-coded system you can try the reduced complexity algotithm, >and if it results in a good CRC then you're done; if not, re-try >with the full Viterbi algorithm. > >Way back sometime before 1995 I implemented such a system and, >IIRC, described it in a MIL-STD (or at least a submission). > >Steve
FWIW, sequential decoding of one form or another (including the M-algortihm) has been around for a long time (naturally). To be honest I've not seen anything but the Viterbi algorithm suggested for CP demodulation, though, and I suspect because of complexity/performance tradeoff issues. Usually sequential decoding requires a much longer constraint length to be effective compared to Viterbi decoding. Here's a paper from 1984 comparing various sequential decoders, including the M-algorithm. http://www2.ensc.sfu.ca/people/faculty/cavers/ENSC805/readings/32comm02-anderson.pdf Also FWIW, back in my early satellite comm days much of our equipment could be shipped with either a sequential decoder with a long constraint length (e.g., k=37 IIRC), or a Viterbi decoder with k=7. The sequential was an option and actually provided a bit more gain in many circumstances, but overall once the Viterbi decoders got cheaper sequentials fell out of favor. IIRC our sequential used the Fano algorithm.
Reply by Steve Pope July 6, 20172017-07-06
Evgeny Filatov  <filatov.ev@mipt.ru> wrote:

>M algorithm is briefly reviewed in Todd Moon, "Error Correction Coding: >Mathematical Methods and Algorithms".
One good use of these reduced-complexity decoding algorithms is, in a packet-coded system you can try the reduced complexity algotithm, and if it results in a good CRC then you're done; if not, re-try with the full Viterbi algorithm. Way back sometime before 1995 I implemented such a system and, IIRC, described it in a MIL-STD (or at least a submission). Steve
Reply by gct July 5, 20172017-07-05
>gct <24505@DSPRelated> wrote: > >> spp wrote, > >>>You probably do not need a maximum likelyhood demodulator. You >>>probably just need a standard discriminator type FM demodulator. >>>You need to look at your specs, perhaps do some simulations and
determine
> >>>whether you need something fancier, but I am guessing not, since such >>>standards are aimed at cheaper implementations. > >>>h = 0.27 does not even sound like it is supposed to be coherent. > >>Yeah the modulation index throws me too, it'd be so easy to use .25 if >>they wanted to make things easy. So you'd probably just use an FM
demod,
>>apply RRC filter, then try to discriminate the frequency in the middle
of
>>the symbol? Any idea how that compares to the "ideal" receiver? > >(Typically no RRC filter in such a system. Instead, use a DFE to >subtract out the delay spread from the transmit filter and/or channel.) > >In AWGN, usually between 1 and 2 dB worse. It depends on the operating >point, which depends on the amount of coding etc. If it is uncoded >and you need to get a low BER like 1e-8 then the differences can >be profound. But this is seldom the case in a real system. > >In multipath .. a bit hard to say. The degradation could be worse. > >Good luck- >Steve
Curious why no RRC filter, wouldn't it make sense to apply it then use the DFE to remove any extra ISI? Thanks for the help! --------------------------------------- Posted through http://www.DSPRelated.com
Reply by gct July 5, 20172017-07-05
>On 05.07.2017 2:53, gct wrote: >>> On 04.07.2017 22:46, gct wrote: >>> >>> (snip) >>> >>>> >>>> I surely did look it up, but they're doing a non-coherent detection, >>> which >>>> I was trying to avoid for performance reasons. You can see they're
at
>>>> least 1.7dB above the lower bound. >>>> --------------------------------------- >>>> Posted through http://www.DSPRelated.com >>>> >>> >>> Apologies if I sounded too harsh; I've read that article, too. >>> >>> Just some thoughts (not from actual experience). Coherent detection >>> doesn't have to mean Viterbi decoder. What about M-algorithm? Perhaps >>> you could do better than non-coherent detection without too much >>> complexity. >>> >>> Best regards, >>> Gene >> >> No worries, I haven't heard of the M-algorithm, do you have any good >> references I could look at? >> --------------------------------------- >> Posted through http://www.DSPRelated.com >> > >M algorithm is briefly reviewed in Todd Moon, "Error Correction Coding: >Mathematical Methods and Algorithms". > >Its description is actually so short that I could just quote it here. >For fun's sake, here's what the text says (pp. 521-522): > >----------------------------------------- > >12.8.6 A Variation on the Viterbi Algorithm: the M Algorithm > >For a trellis with a large number of states at each time instant, the >Viterbi algorithm can be very complex. Furthermore, since there is only >one correct path, most of the computations are expended in propagating >paths that are not be used, but must be maintained to ensure the >optimality of the decoding procedure. The M algorithm (see, e.g., [270])
>is a suboptimal, breadth-first decoding algorithm whose complexity is >parametric, allowing for more complexity in the decoding algorithm while
>decoding generally closer to the optimum. > >A list of M paths is maintained. At each time step, these M paths are >extended to M*2^k paths (where k is the number of input bits), and the >path metric along each of these paths is computed just as for the >Viterbi algorithm. The path metrics are sorted, then the best M paths >are retained in preparation for the next step. At the end of the >decoding cycle, the path with the best metric is used as the decoded >value. While the underlying graphical structure for the Viterbi >algorithm is a trellis, in which paths merge together, the underlying >graphical structure for the M algorithm is a tree: the merging of paths >is not explicitly represented, but better paths are retained by virtue >of the sorting operation. The M-algorithm is thus a cross between the >stack algorithm (but using all paths of the same length) and the Viterbi
>algorithm. If M is equal to the number of states, the M algorithm is >nearly equivalent to the Viterbi algorithm. However, it is possible for >M to be significantly less than the number of states with only modest >loss of performance. > >Another variation is the T-algorithm. It starts just like the M >algorithm. However, instead of retaining only the best M paths, in the T
>algorithm all paths which are within a threshold T of the best path at >that stage are retained. > >----------------------------------------- > >[270]: G. Pottie and D. Taylor, "A Comparison of Reduced Complexity >Decoding Algorithms for Trellis Codes," IEEE Journal on Selected Areas >in Communications, vol. 7, no. 9, pp. 1369-1380, 1989. > >----------------------------------------- > >If you follow the link, it would say something along the lines that >M-algorithm is global, while Viterbi algorithm is local. Which makes >some sense to me. > >Best regards, >Gene
Excellent references, thank you! Will take a look at this. --------------------------------------- Posted through http://www.DSPRelated.com
Reply by Evgeny Filatov July 5, 20172017-07-05
On 05.07.2017 2:53, gct wrote:
>> On 04.07.2017 22:46, gct wrote: >> >> (snip) >> >>> >>> I surely did look it up, but they're doing a non-coherent detection, >> which >>> I was trying to avoid for performance reasons. You can see they're at >>> least 1.7dB above the lower bound. >>> --------------------------------------- >>> Posted through http://www.DSPRelated.com >>> >> >> Apologies if I sounded too harsh; I've read that article, too. >> >> Just some thoughts (not from actual experience). Coherent detection >> doesn't have to mean Viterbi decoder. What about M-algorithm? Perhaps >> you could do better than non-coherent detection without too much >> complexity. >> >> Best regards, >> Gene > > No worries, I haven't heard of the M-algorithm, do you have any good > references I could look at? > --------------------------------------- > Posted through http://www.DSPRelated.com >
M algorithm is briefly reviewed in Todd Moon, "Error Correction Coding: Mathematical Methods and Algorithms". Its description is actually so short that I could just quote it here. For fun's sake, here's what the text says (pp. 521-522): ----------------------------------------- 12.8.6 A Variation on the Viterbi Algorithm: the M Algorithm For a trellis with a large number of states at each time instant, the Viterbi algorithm can be very complex. Furthermore, since there is only one correct path, most of the computations are expended in propagating paths that are not be used, but must be maintained to ensure the optimality of the decoding procedure. The M algorithm (see, e.g., [270]) is a suboptimal, breadth-first decoding algorithm whose complexity is parametric, allowing for more complexity in the decoding algorithm while decoding generally closer to the optimum. A list of M paths is maintained. At each time step, these M paths are extended to M*2^k paths (where k is the number of input bits), and the path metric along each of these paths is computed just as for the Viterbi algorithm. The path metrics are sorted, then the best M paths are retained in preparation for the next step. At the end of the decoding cycle, the path with the best metric is used as the decoded value. While the underlying graphical structure for the Viterbi algorithm is a trellis, in which paths merge together, the underlying graphical structure for the M algorithm is a tree: the merging of paths is not explicitly represented, but better paths are retained by virtue of the sorting operation. The M-algorithm is thus a cross between the stack algorithm (but using all paths of the same length) and the Viterbi algorithm. If M is equal to the number of states, the M algorithm is nearly equivalent to the Viterbi algorithm. However, it is possible for M to be significantly less than the number of states with only modest loss of performance. Another variation is the T-algorithm. It starts just like the M algorithm. However, instead of retaining only the best M paths, in the T algorithm all paths which are within a threshold T of the best path at that stage are retained. ----------------------------------------- [270]: G. Pottie and D. Taylor, "A Comparison of Reduced Complexity Decoding Algorithms for Trellis Codes," IEEE Journal on Selected Areas in Communications, vol. 7, no. 9, pp. 1369-1380, 1989. ----------------------------------------- If you follow the link, it would say something along the lines that M-algorithm is global, while Viterbi algorithm is local. Which makes some sense to me. Best regards, Gene
Reply by Steve Pope July 5, 20172017-07-05
gct <24505@DSPRelated> wrote:

> spp wrote,
>>You probably do not need a maximum likelyhood demodulator. You >>probably just need a standard discriminator type FM demodulator. >>You need to look at your specs, perhaps do some simulations and determine
>>whether you need something fancier, but I am guessing not, since such >>standards are aimed at cheaper implementations.
>>h = 0.27 does not even sound like it is supposed to be coherent.
>Yeah the modulation index throws me too, it'd be so easy to use .25 if >they wanted to make things easy. So you'd probably just use an FM demod, >apply RRC filter, then try to discriminate the frequency in the middle of >the symbol? Any idea how that compares to the "ideal" receiver?
(Typically no RRC filter in such a system. Instead, use a DFE to subtract out the delay spread from the transmit filter and/or channel.) In AWGN, usually between 1 and 2 dB worse. It depends on the operating point, which depends on the amount of coding etc. If it is uncoded and you need to get a low BER like 1e-8 then the differences can be profound. But this is seldom the case in a real system. In multipath .. a bit hard to say. The degradation could be worse. Good luck- Steve
Reply by gct July 4, 20172017-07-04
>On 04.07.2017 22:46, gct wrote: > >(snip) > >> >> I surely did look it up, but they're doing a non-coherent detection, >which >> I was trying to avoid for performance reasons. You can see they're at >> least 1.7dB above the lower bound. >> --------------------------------------- >> Posted through http://www.DSPRelated.com >> > >Apologies if I sounded too harsh; I've read that article, too. > >Just some thoughts (not from actual experience). Coherent detection >doesn't have to mean Viterbi decoder. What about M-algorithm? Perhaps >you could do better than non-coherent detection without too much >complexity. > >Best regards, >Gene
No worries, I haven't heard of the M-algorithm, do you have any good references I could look at? --------------------------------------- Posted through http://www.DSPRelated.com
Reply by Evgeny Filatov July 4, 20172017-07-04
On 04.07.2017 22:46, gct wrote:

(snip)

> > I surely did look it up, but they're doing a non-coherent detection, which > I was trying to avoid for performance reasons. You can see they're at > least 1.7dB above the lower bound. > --------------------------------------- > Posted through http://www.DSPRelated.com >
Apologies if I sounded too harsh; I've read that article, too. Just some thoughts (not from actual experience). Coherent detection doesn't have to mean Viterbi decoder. What about M-algorithm? Perhaps you could do better than non-coherent detection without too much complexity. Best regards, Gene
Reply by gct July 4, 20172017-07-04
>On 04.07.2017 7:29, Steve Pope wrote: >> gct <24505@DSPRelated> wrote: >> >>> I'm evaluating receiver structures for the ETSI DMR spec, but not
having
>>> much luck finding any work in this area. They use continuous phase >>> modulation, so I anticipate I'll have to use a viterbi demodulator to >get >>> it done. Unfortunately they choose h=.27, so I have at least 200 >states, >>> times whatever number of symbol cycles their pulse shape is over (not >>> clear on this, three maybe?). So I'm looking at 600*4 = 2400 matched >>> filters I have to evaluate per symbol to get branch metrics for the >>> viterbi, woof. >> >>> If anyone can point me to revelant work I'd appreciate it >> >> You probably do not need a maximum likelyhood demodulator. You >> probably just need a standard discriminator type FM demodulator. >> You need to look at your specs, perhaps do some simulations and
determine
>> whether you need something fancier, but I am guessing not, since such >> standards are aimed at cheaper implementations. >> >> h = 0.27 does not even sound like it is supposed to be coherent. >> >> Steve >> > >Gct, as for the relevant work, you've surely looked up the first link in
>Google Scholar for "etsi dmr cpfsk", haven't you? > >http://ieeexplore.ieee.org/abstract/document/5304247/ > >Gene
I surely did look it up, but they're doing a non-coherent detection, which I was trying to avoid for performance reasons. You can see they're at least 1.7dB above the lower bound. --------------------------------------- Posted through http://www.DSPRelated.com
Reply by gct July 4, 20172017-07-04
>gct <24505@DSPRelated> wrote: > >>I'm evaluating receiver structures for the ETSI DMR spec, but not
having
>>much luck finding any work in this area. They use continuous phase >>modulation, so I anticipate I'll have to use a viterbi demodulator to
get
>>it done. Unfortunately they choose h=.27, so I have at least 200
states,
>>times whatever number of symbol cycles their pulse shape is over (not >>clear on this, three maybe?). So I'm looking at 600*4 = 2400 matched >>filters I have to evaluate per symbol to get branch metrics for the >>viterbi, woof. > >>If anyone can point me to revelant work I'd appreciate it > >You probably do not need a maximum likelyhood demodulator. You >probably just need a standard discriminator type FM demodulator. >You need to look at your specs, perhaps do some simulations and determine
>whether you need something fancier, but I am guessing not, since such >standards are aimed at cheaper implementations. > >h = 0.27 does not even sound like it is supposed to be coherent. > >Steve
Yeah the modulation index throws me too, it'd be so easy to use .25 if they wanted to make things easy. So you'd probably just use an FM demod, apply RRC filter, then try to discriminate the frequency in the middle of the symbol? Any idea how that compares to the "ideal" receiver? --------------------------------------- Posted through http://www.DSPRelated.com