discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Demodulating CPFSK with Viterbi algorithm using g


From: Jeff Long
Subject: Re: [Discuss-gnuradio] Demodulating CPFSK with Viterbi algorithm using gr-trellis
Date: Thu, 10 Sep 2015 07:46:53 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

Hi Sean,

Don't really know much about this but I played around with the FSM code a little. Outputs would read the same as the state transitions:

if in state 0 and a 0 is received, output A, else output B

Using the fsms generation routines, I got a different shape FSM than yours (higher output cardinality). For instance (and I might be using this routine totally wrong),

t=trellis.fsm(3, 2, 1)
Parameters:
    P   ???? h=K/P (relatively prime)
    M   alphabet size
    L   pulse duration

generates:

2 3 6

0 1
1 2
2 0

0 3
1 4
2 5

Since the FSM is used internally by the decoder, it doesn't have output states that map to output data bits. If L=2, then it's:

2 6 12

0 3
1 4
2 5
1 4
2 5
0 3

0 6
1 7
2 8
3 9
4 10
5 11

Judging by the FSM examples, definition of useful FSMs is black magic.

- Jeff

On 09/09/2015 09:17 PM, Nowlan, Sean wrote:
I’m trying to demodulate a CPFSK signal using the Viterbi algorithm. The
gr-trellis module seems to have most of the components I’ll need, but
I’m having trouble figuring out how to wrangle my problem into the FSM
format. Basically, I have a binary CPFSK signal with a modulation index,
h=25/3. Following the guidance of [1] section 3.3-2, I know that for CPM
with rational h=m/p, (here, m=25 and p=3), with m odd, I have 2p=6 phase
states. I worked out the phase trajectories and took them modulo 2*pi to
get this set of terminal phase states: {0, pi/3, 2*pi/3, pi, 4*pi/3,
5*pi/3}.

I’m trying to understand the FSM format in gr-trellis, and how to build
my FSM. If you consider the set of terminal phase states above as being
zero-indexed, the phase transitions should go according to the “Next
state” mapping of the FSM file format below. I’ve added my comments as
to my understanding of the format. Please correct me if I’m wrong.

FSM file:

2 6 2       # 2 possible input symbols // 6 possible FSM states // 2
possible output symbols

# Next state mapping

5 1          # if in state 0 and a 0 is received, go to state 5, else (1
is received, and) go to state 1

0 2          # if in state 1 and a 0 is received, go to state 0, else go
to state 2

1 3          # ...

2 4

3 5

4 0

# Output symbol mapping

[…]

I’m having trouble understanding how to define the output symbol
mapping. Is there a plain-language interpretation like the one I spelled
out for Next state mapping in my comments above?

Thanks!

Sean

[1] Proakis & Salehi, Digital Communications, 5ed.



_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio





reply via email to

[Prev in Thread] Current Thread [Next in Thread]