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