[Top][All Lists]

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

Re: [Discuss-gnuradio] TETRA demodulator advices

From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] TETRA demodulator advices
Date: Tue, 1 Dec 2015 10:33:14 -0500

On Fri, Nov 27, 2015 at 11:54 AM, Timothée COCAULT <address@hidden> wrote:

I am writing a TETRA demodulator with GNU Radio Companion without any OOT block. 

My flowgraph works but as I don't have a signal processing background, I'm not really sure that my choice of the blocks and their parameters is the best for my purpose. 

The TETRA modulation uses PI/4 DQPSK with a bitrate of 36 kHz (symbol rate of 18 kHz), and a RRC filter.

For now, my decoder consists of :

* Freq Xlating FIR Filter : to center and low-pass the signal, and lower the sample rate to have about 2 SPS.
* Fractional resampler : to have exactly 2 SPS
* Feed Forward AGC : to normalize the amplitude to 1
* FLL Band Edge : to fine-tune the frequency
* Polyphase Clock Sync : to sample the symbols at the right timing
* Differential Phasor : to get the difference between two symbols
* Constellation decoder : to discretize the symbols
* Unpack K bits : to convert the symbols to bits.

The flowgraph and screenshots can be found at https://github.com/Tim---/tetra-toolkit/tree/master/grc .

Do you have any advice on how to improve this flowchart ?

This is a very open-ended question. It'd take a lot of work for someone to go through your receiver and make any suggestions. Your best bet is to ask very pointed questions about a behavior or block.

Bonus questions :

* using the FLL band edge after the low-pass seems odd because, even if it can recover frequency offset, some of the bandwidth will be lost.
Should I use the error ouput of the FLL to change the freq used by the Freq XLating FIR FIlter ? If yes, is there an example of this somewhere ?

That's more like it! This is a question we can actually answer.

Yes, you have the issue that you described. You could think to make a block that could pass a message the frequency translating filter that would adjust its center frequency, but you won't be able to do that very quickly. It would be a slow, very coarse frequency correction.

Instead, I would try to figure out the expected maximum frequency offset and make the LPF of the frequency translating filter block large enough to accommodate that. This LPF is a channel filter meant to reduce noise power from adjacent channels, so there is always a tradeoff between that and being able to lock on to your signal. The clock sync block performs the actual matched filtering, though, so you're not using this LPF to just isolate the signal exactly.

* at first I wanted to use the Constellation receiver, but from what I understand the constellations in gnuradio work by first discretizing the signal, then doing the diff.
This does not work with PI/4 DQPSK because you need to first diff the complex samples, then discretize.
Is there any way I could cheat to create a PI/4 DQPSK constellation in gnuradio ?

I could see overloading the constellation object to have a child class with memory to handle this case.
Thanks in advance,



reply via email to

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