On Fri, Nov 27, 2015 at 11:54 AM, Timothée COCAULT <
[email protected]> wrote:

> Hi,
>
> 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 ?
>


Timothee,
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,
>
> Timothée.
>


Tom
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to