discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Proper synchronization of f0T correction to use g


From: Andy Walls
Subject: Re: [Discuss-gnuradio] Proper synchronization of f0T correction to use gr-trellis for a receiver (Re: gr-trellis test_cpm.py question)
Date: Fri, 07 Apr 2017 09:49:29 -0400

So I did some thinking about how to synchronize to the 2*pi*f0*t phase
term.

After checking the papers again and the particular GMSK example in
test_cpm.py, that phase term cycles over 4 symbol periods, so it
definitely adds phase ambiguity.  Resetting it at every symbol is
definitely the wrong thing to do.

So I plugged in some real numbers from AIS to see what f0 actually was:

Rb = 1/T = 9600 bits/sec
h = 1/2 = f_dev / (Rb/2)  => f_dev = 2400 Hz

so the AIS GMSK signaling freqs are +/-2400 Hz.

>From Achilleas' paper, the expression for f0 is:

M = 2
f0 = -h(M-1)/(2T) = -9600/4 = -2400 Hz

So f0 is really the lower signaling frequency, at least for the
specific case of binary MSK.  (Achilleas, maybe you can comment on what
f0 is in the general case?)

I'm thinking that if I can pick off the phase of the lower signaling
frequency during the AIS preamble (where I know there are always spots
of -2400 Hz when a symbol repeats ), I can properly initialize the
phase of the the frequency shift by f0.

That seems kind of hokey to me, so I'm open to better ideas.  I'd also
like to hear if anyone thinks what I suggested will work or not.

I was trying to contemplate how the t in 2*pi*f0*t could be
incorporated into the FSM state, since this phase term appears to be
part of the phase memory of the system, though not part of the
modulation memory.  I couldn't see an obvious way to do that.

Regards,
Andy


On Thu, 2017-04-06 at 15:36 -0400, Andy Walls wrote:
> On Mon, 2017-04-03 at 09:06 -0400, Achilleas Anastasopoulos wrote:
> > sure, feel free to look into the gr-trellis documentation and
> > provide
> > some feedback.
> > If you have further questions please let us know.
> > 
> > best,
> > Achilleas
> 
> Hi Achilleas:
> 
> My objective is to implement an AIS (GMSK, BT=0.4, L=3) receiver,
> using
> the Viterbi algorithm for optimal demodulation of the CPM symbols.
> 
> In examining gr-trellis/examples/python/test_cpm.py, I see that
> everything is perfectly synchronized, for the purposes of
> demonstration. (The addition of a 0.0 to the end of the 99% energy
> orthonormal basis vectors for the matched filter correlators, to have
> the taps completely fall into the initial all-0 history of the fir
> filter blocks, was a nice trick BTW).
> 
> In my design concept for a receiver, I believe I have worked out
> carrier frequency offset correction, phase offset correction, symbol
> timing recovery at either 4 or 5 samples per symbol, and injecting
> samples to properly realign the symbols entering the decimating
> matched
> filter correlators when a new burst is received.
> 
> What I can't quite figure out is how to properly synchronize the
> correction of f0T carrier frequency shift introduced by the CPM
> decomposition, without unintentionally adding an arbitrary phase
> shift
> to the symbol's signal in the CPM decomposition.
> 
> Do I restart the complex exponential frequency shift sequence with a
> phase of 0 at the start of each symbol?  I think that works for Q=4. 
> But what about for Q=5?  
> 
> The reason I ask is that it appears the phase of the complex
> correlation output by the matched filters will affect the metric for
> which CPM decomposition signal gets selected as the best match.
> 
> Looking at the 16, 99% energy CPM decomposition signals generated by
> the test_cpm.py script:
> 
> > > > print abs(Sf.transpose())
> 
> [[ 1.81592306  0.83465307]
>  [ 1.81592306  0.83465307]
>  [ 1.90550352  0.600571  ]
>  [ 1.90550352  0.600571  ]
>  [ 1.96823385  0.34970555]
>  [ 1.96823385  0.34970555]
>  [ 1.90550352  0.600571  ]
>  [ 1.90550352  0.600571  ]
>  [ 1.90550352  0.600571  ]
>  [ 1.90550352  0.600571  ]
>  [ 1.96823385  0.34970555]
>  [ 1.96823385  0.34970555]
>  [ 1.90550352  0.600571  ]
>  [ 1.90550352  0.600571  ]
>  [ 1.81592306  0.83465307]
>  [ 1.81592306  0.83465307]]
> 
> Many of the signals can only be distinguished from each other
> properly
> when the correlator outputs have proper phase.
> 
> Thank you for any advice you can provide.
> 
> Regards,
> Andy



reply via email to

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