discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Discuss-gnuradio Digest, Vol 170, Issue 10


From: Andy Walls
Subject: Re: [Discuss-gnuradio] Discuss-gnuradio Digest, Vol 170, Issue 10
Date: Sun, 15 Jan 2017 18:58:50 -0500

Hi Luke,

See the attached GRC for what can be done in GNURadio.

1. You need the baseband noise filter.
2. You may or may not need the deemphasis filter.  It appears to make things better,
but it introduces receiver side ISI, since the filter doesn't get dumped at every symbol
peak. (APCO 25 expects an integrate and dump deemphasis filter, this one just
integrates).
3. You may wish to use the FM detector PLL instead of the Quad Demod block.  You
can limit symbol peak frequency deviation using the Max Freq and Min Freq parameters.
Currently, I have them set at +/-3 * 600 Hz * 190%.  Leave the loop bandwidth alone;
it is set at symbol_rate/2 * 1.20 Hz = 2880 Hz, which is where the transmitter Nyquist
filter should cut off.

The signal you provided really does have a very poor SNR.  The attached low SNR
png shows the best I could do with it.  There are some of the 4 levels visible in the chaos,
but it's not good.  I have attached a png from a high SNR test signal for comparison.

So what you can do "outside" of GNURadio:

1. Attach an external receiver bandpass filter for the 470 - 512 MHz safety
band to your radio.  The only small, reasonably priced, off the shelf ones I could find
are ceramic packages that are expected to be soldered to a board. :(

2. Set your gains on your SDR smartly to maximize your receiver noise figure.
Set the RF gain as high as you can without clipping the IF stage, set the
IF gain as high as you can without clipping the Base Band stage.  Set the Base
Band gain as high as you can without clipping the ADC inputs.

https://en.wikipedia.org/wiki/Friis_formulas_for_noise
"... the overall noise figure of a radio receiver is primarily established by the noise figure of its first amplifying stage. Subsequent stages have a diminishing effect on signal-to-noise ratio. "

Regards,
Andy


On Thu, Jan 12, 2017 at 12:00 PM, <address@hidden> wrote:
Message: 6
Date: Wed, 11 Jan 2017 21:56:51 -0500
From: Luke Berndt
To: Marcus M?ller ,   GNURadio Discussion List
        <address@hidden>
Subject: Re: [Discuss-gnuradio] Improve FSK4 decodes in OP25

Thanks Marcus! I will try putting in a low pass in first after the Quad demod. That BPF / Polyphase Channelizer approach sounds pretty cool too!

I have attached a GRC file that I use for debugging and a link the raw dump from a File Sink. The sample rate at the sink is 96k/s, the system channel rate is 48k/s, with 10 samples per symbol. The FSK Level has to be set to about 0.66.

I am sure that some of the problem is that I don?t have a great signal coming in, but if there is any additional processing I could do to improve the reception that would be great.



Wav file
https://www.dropbox.com/s/ncpz6wt8tubm2v3/32784-1484187802_4.90762e%2B08.wav?dl=0 <https://www.dropbox.com/s/ncpz6wt8tubm2v3/32784-1484187802_4.90762e+08.wav?dl=0>

Raw capture from a file sink
https://www.dropbox.com/s/810zj7pudc66yo3/32784-1484187802_4.90762e%2B08.raw?dl=0 <https://www.dropbox.com/s/810zj7pudc66yo3/32784-1484187802_4.90762e+08.raw?dl=0>



> On Jan 11, 2017, at 12:12 PM, Marcus M?ller <address@hidden> wrote:
>
> Hi Luke,
>
> you don't happen to have a waterfall plot or a raw IQ recording?
> Quadrature demodulation isn't the most resilient to noise. So, a low-pass filter that makes sure that events that are sufficiently shorter than a symbol after the Quadrature demodulator would sound wise. Then again, I don't know the OP25 infrastructure overly well, so chances are the FSK4 demod already contains one.
>
> An alternative to your Quad FM demod would be a four-bandpasses-based decider. An easy way to build one is to either use four individual BPFs, or use one set of filter taps in the Polyphase Channelizer (which divides your f_sample_in  stream into four f_sample_in/4 -rate streams with channel centers). Just use a filter that would select the "zeroth" carrier. The magic of polyphase math will add three f_sample_in/4-shifted versions (you might need to use Rotator or similar to put the zeroth subcarrier at f=0). I have a "playing with channelizers" flow graph [1]. Advantage of the polyphase channelizer is that it uses very little more ressources than a single bandpass filter would ? basically, you get the three additional filters for the cost of a short FFT. Yay!
>
> Cheers,
>
> Marcus
>
> [1] https://gist.github.com/babffaa88f54a7fba9b52fc09bda0462 <https://gist.github.com/babffaa88f54a7fba9b52fc09bda0462>
>
> On 01/11/2017 04:44 PM, Luke Berndt wrote:
>> I am using the C++ OP25 libs to capture and record the P25 transmissions from a trunked radio system ( https://github.com/robotastic/trunk-recorder <https://github.com/robotastic/trunk-recorder> ).
>>
>> Transmission can either use 4-Level FSK or CPSK. I am getting great decodes from a system using CPSK but I am having a lot of trouble with a system using 4FSK.
>>
>> At a high level, here is my 4FSK flow graph (https://github.com/robotastic/trunk-recorder/blob/master/trunk-recorder/recorders/p25_recorder.cc <https://github.com/robotastic/trunk-recorder/blob/master/trunk-recorder/recorders/p25_recorder.cc>):
>> Xlating + LPF to roughly capture the channel
>> ARB Resampler to get the system sample rate
>> Quad FM Demod
>> Multiply Const - to get the right levels, -3 to 3
>> FSK4 Demod - from OP25
>> FSK4 Slicer - from OP25
>> OP25 Decode
>> it then converts it to what is needed to record it as a Wav file
>>
>> Are there some obvious blocks I should add in to help condition the input better? I think the incoming levels may not be constant. There also seems to be occasional interference. Is there a block that will discard values above a certain range? It would be great to throw-away samples above 3.5 or below -3.5.
>>
>> Attached is a picture with what I think is an example of the interference.
>>
>> Here is an example of a very clean recording: https://beta.openmhz.com/wmata?call-id=587652495833790100186198 <https://beta.openmhz.com/wmata?call-id=587652495833790100186198>
>>
>> Here is an example of a bad decode: https://beta.openmhz.com/wmata?call-id=58765250583379010018619c <https://beta.openmhz.com/wmata?call-id=58765250583379010018619c>
>>
>> Any tips would be greatly appreciated!!
>>
>> - Luke

Attachment: p25_4fsk.grc
Description: Binary data

Attachment: P25_4FSK_high_SNR.png
Description: PNG image

Attachment: P25_4FSK_low_SNR.png
Description: PNG image


reply via email to

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