Rick,

On 31-08-12 14:58, Rick Muething wrote:
There are a variety of FEC codes that can be effective but the Maximum likelyhood (Viterbi) decoder is very effective especially if supplies with soft input and when interleaving is used. There are many efficient hardware and software implementations of the Viterbi decoder.
(...)

I am still very new to this subject but isn't viterbi something you typically use for convolutional coding? The size of a DV frame is only 56 bits; would you propose convolutional coding over block coding?


For the record (Rick, do correct me if I am wrong); there are two big groups of FEC systems: block coding and convolutional coding.

Block-coding -as the name implies- are designed for blocks of a certain size. One example is the golay-code (used to protect D-STAR DV) which works on 12 bit blocks (actually, four of them), converting them into a 23 or 24 bit block. (althou D-STAR uses a variant on it that implements a 2/3 FEC instead of 1/2). Convolutional coding (like the "voyager project" code) work on a -in theory- endless stream. However, by doing a tricks (tail-biting), it is possible to use a convolutional code on a fixed size frame; but it does create some additional overhead.
Viterbi decoding is a method to decode convolutional codes.

The wikipedia has a link to an link to an interesting article on convolutional coding: http://complextoreal.com/chapters/convo.pdf

D-STAR uses convolutional coding for the header and I had plans to implement this in the same way. The header is 576 bits which make it much larger then a DV-frame of 56 bits.



Soft input means of course that not one or zero values are sent to the decoder but some higher resolution measurement (phase value, amplitude etc) over some range ... usually 4-8 bits of resolution is sufficient In the WINMOR and V4 HF protocols I used the soft Viterbi decoder by Phil Karn (originally in C which I re wrote to VB.NET ). Phil's decoder is based on a length 7 rate 1/2 convolutional code (commonly referred to as NASA Voyager code) with a 32 sample "look back". For optimum use the code should be interleaved (reduced sensitivity to burst errors which convolutional codes to not handle as well.) Also Viterbi codes should be "flushed" with a few (up to 6 for a length 7 code) "flush" bits at the end of each frame for optimum performance.
Well, althou it would require quite some code rewrite, the gmsk modem can in theory provide these "analog" values if needed.

In theory, the decoder works like this: every 1/4800 seconds, a audio signal is taken. If it below zero, it is concidered a "1". It it is above zero, it is concidered a "0".
But it should not be to difficult provide the original value.

However, for that, it would be interesting to know if this actually makes sence or not. If convolution encoding only is used in the header; it's quite a lot of coding for very little bits. If convolutional coding can be used all over the stream, even for the voice part; or it these "soft-descision" code can also be used for a block FEC-system; it could become worth-while.





Rick
Cheerio! Kr. Bonne.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Freetel-codec2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freetel-codec2

Reply via email to