# Viterbi Soft Decision for 16FSK

Started by May 8, 2006
```Hi,

I need to build a Viterbi for 16FSK. 1/2 with K=7.

In the case of BFSK, Soft Decision is not a problem for me, I compare the
correlation for a symbol '0' and for a symbol '1' and i know the
confidence for '0' o for '1'.

In the case of 16FSK, i am lost, because a symbol has 4 bits that belong
to a same frecuency.

For example: "0000" belong to a tone of 1000 Hz
For example: "0001" belong to a tone of 1015 Hz
For example: "0010" belong to a tone of 1030 Hz
Etc.......

Thats four bits arrived joined in the same symbol.

How i do for programming the soft decision in this case?

```
```You can calculate some uncertainty bits for the symbol and then assign the
same uncertainty bits to all four data bits for decoding. I guess it depends
on how your symbols are numbered. For example, if they are numbered from 0
to 15 in proportion to frequency and you detect that a 0000 was sent you can
probably assign the 2 MSBs a zero uncertainty since it would take a very
large frequency error for them to be wrong. Similiary, if they were grey
coded then maybe you would assign the bits that don't change with the
neighbors a zero uncertainty. As for the certainity for the symbol decision
maybe you can calculate a ratio of the energy in the selected symbol versus
the energy in all the other tones.

"JAlbertoDJ" <nietorosdj@yahoo.es> wrote in message
> Hi,
>
> I need to build a Viterbi for 16FSK. 1/2 with K=7.
>
> In the case of BFSK, Soft Decision is not a problem for me, I compare the
> correlation for a symbol '0' and for a symbol '1' and i know the
> confidence for '0' o for '1'.
>
> In the case of 16FSK, i am lost, because a symbol has 4 bits that belong
> to a same frecuency.
>
> For example: "0000" belong to a tone of 1000 Hz
> For example: "0001" belong to a tone of 1015 Hz
> For example: "0010" belong to a tone of 1030 Hz
>          Etc.......
>
> Thats four bits arrived joined in the same symbol.
>
> How i do for programming the soft decision in this case?
>
>
>
>
>

```
```Hi,

Why don't you use Reed-Solomon codes in your application?  The problem
with Convolutional codes and the Viterbi decoder is that these codes do
not like burst errors, which is what will typically happen when a
symbol is incorrectly demodulated by the MFSK decoder.  There are a few
papers where MFSK and Reed-Solomon codes are used, and the
soft-decision values are used to declare erasures.  There is even a
Viterbi measure defined to determine whether an erasure should be
declared.  Two papers that I can think of is one by Matache
(www.ee.ucla.edu/~matache/MA4_3.pdf), and the other by Stark
(www.eecs.umich.edu/~stark/2002B.pdf).

Anonymous wrote:
> You can calculate some uncertainty bits for the symbol and then assign the
> same uncertainty bits to all four data bits for decoding. I guess it depends
> on how your symbols are numbered. For example, if they are numbered from 0
> to 15 in proportion to frequency and you detect that a 0000 was sent you can
> probably assign the 2 MSBs a zero uncertainty since it would take a very
> large frequency error for them to be wrong. Similiary, if they were grey
> coded then maybe you would assign the bits that don't change with the
> neighbors a zero uncertainty. As for the certainity for the symbol decision
> maybe you can calculate a ratio of the energy in the selected symbol versus
> the energy in all the other tones.
>
>
> "JAlbertoDJ" <nietorosdj@yahoo.es> wrote in message
> > Hi,
> >
> > I need to build a Viterbi for 16FSK. 1/2 with K=7.
> >
> > In the case of BFSK, Soft Decision is not a problem for me, I compare the
> > correlation for a symbol '0' and for a symbol '1' and i know the
> > confidence for '0' o for '1'.
> >
> > In the case of 16FSK, i am lost, because a symbol has 4 bits that belong
> > to a same frecuency.
> >
> > For example: "0000" belong to a tone of 1000 Hz
> > For example: "0001" belong to a tone of 1015 Hz
> > For example: "0010" belong to a tone of 1030 Hz
> >          Etc.......
> >
> > Thats four bits arrived joined in the same symbol.
> >
> > How i do for programming the soft decision in this case?
> >
> >
> >
> >
> >

```
```You can assign the symbol confidence to all four bits.

John

JAlbertoDJ wrote:
> Hi,
>
> I need to build a Viterbi for 16FSK. 1/2 with K=7.
>
> In the case of BFSK, Soft Decision is not a problem for me, I compare the
> correlation for a symbol '0' and for a symbol '1' and i know the
> confidence for '0' o for '1'.
>
> In the case of 16FSK, i am lost, because a symbol has 4 bits that belong
> to a same frecuency.
>
> For example: "0000" belong to a tone of 1000 Hz
> For example: "0001" belong to a tone of 1015 Hz
> For example: "0010" belong to a tone of 1030 Hz
>          Etc.......
>
> Thats four bits arrived joined in the same symbol.
>
> How i do for programming the soft decision in this case?
>

```
```Thank you for answer.

I am thinking one thing. For example, in the Viterbi Algorith, if i need
to know confidence for two bits into a supposed block of 4 bits i can add
correlations of all symbols that have that bits in that positions.

For example, What would be the confidence for "10" into the block of 4
bits: "XX10 XXXX XXXX......"?

Confidence("10")= Correlation(0010)+Correlation(0110)+
+Correlation(1010)+Correlation(1110)+

That 4 symbols have in common that third bit is "1" and Fouth bit is "0"

For each two bits that i compare in Viterbi, I add Correlation of 4
frecuencies. One of that correlations will be very high (correlation with
recieved symbol), the other 3 correlations will be very low (correlation
with Noise).

I am not sure if this is the correct form for apply Viterbi to my 16FSK.

About burst noise, i will do interleaving with the bits. Also, i will
apply Spread Spectrum. In fact, a symbol will be compound of 4 frecuencies
scattered. But that is other questions.

About Reed-Solomon Codes, i know they are a good option for burst noise.
In fact, my aplication is for ionosphere communications, where burst noise
is very common. But in a first moment i want do it with convolucional code
(1/2, k=7), and see how works.

In a second moment, i would like do something like codes for CD-ROMS. I
think that it use Reed-Solomon into a Convolucional Code or so. I am not
sure.