Hi John,

more of a note pad than an email:

*PFB*

>      firdes.low_pass(2.0, oversampled_width, fm_dev*2 ,1000,
>           firdes.WIN_HAMMING, 6.76) 
low_pass(double gain, double sampling_freq, double cutoff_freq, double
transition_width, gr::filter::firdes::win_type window, double beta=6.76)

gain = 2
sampling_freq = oversampled_width =15e3*8 = 120e3,
cutoff = fm_dev *2 = 10e3,
transition_width= 1000 = sampling_freq/120

Those are pretty reasonable numbers; if anything, you could try to
slightly relax the transition width; the ratio between sampling rate and
transition width of a FIR typically [1] influences the length, and thus
the delay, of a linear phase filter.

eyeballing, this should be a filter of about 300 taps length

*LPF*

>      firdes.low_pass(1.0, hardware_rate, oversampled_width /
>           2,chan_width, firdes.WIN_HAMMING, 6.76)
transition_width = chan_width = sampling_rate/66.66

this filter should be about half as long as the one above.

*Conclusion*

While these filters aren't the smallest filters in the world, a group
delay of ca 150 and 75 samples shouldn't be the issue here.

Best regards,

Marcus

[1] https://dsp.stackexchange.com/a/31077/13320


On 24.05.2017 20:45, John Ackermann N8UR wrote:
> pfb_taps is (with some variable names simplified for clarity):
>
>      firdes.low_pass(2.0, oversampled_width, fm_dev*2 ,1000,
>           firdes.WIN_HAMMING, 6.76)
>
> where oversampled_width = channel_width * (num_chan + 1)
>
> for channel_width = 15 kHz, fm_dev = 5 kHz, and num_chan = 7.
>
> For what it's worth, lpf_taps (used in the frequency xlating filter) is
>
>      firdes.low_pass(1.0, hardware_rate, oversampled_width /
>           2,chan_width, firdes.WIN_HAMMING, 6.76)
>
> where hardware rate = 1 msps.
>
>
> On 05/24/2017 01:00 PM, Marcus Müller wrote:
>> what's the pfb_taps design spec? (i.e. what did you use as argument for
>> firdes.lowpass()?)
>>
>> Best regards,
>>
>> Marcus
>>
>>
>> On 05/24/2017 04:38 PM, John Ackermann N8UR wrote:
>>> Here's the whole flowgraph.
>>>
>>> Once I get the code functioning, I'm planning to clean this up, maybe
>>> add a few more channels, and make it easier to customize -- so you'd
>>> just enter the ch0 carrier frequency and channel spacing, and the rest
>>> is automatic.
>>>
>>> On 05/23/2017 07:24 PM, John Ackermann N8UR wrote:
>>>> Interesting point, Marcus.  I'll post the complete flowgraph tomorrow
>>>> when I am at my development machine.  I did revert the audio rate
>>>> out of
>>>> the demod to 15ksps and that helped somewhat.  So maybe that can go
>>>> further.
>>>> On May 23, 2017, at 7:18 PM, "Marcus Müller" <marcus.muel...@ettus.com
>>>> <mailto:marcus.muel...@ettus.com>> wrote:
>>>>
>>>>     Hi John,
>>>>
>>>>     3 to 5 seconds doesn't sound all that much considering that
>>>> you're doing
>>>>     stuff at a nominal 7.5 kS/s – compare [1]; the typical buffer size
>>>>     between two blocks is 8 kB, and with floats (i.e. 32 b = 4 B),
>>>> that's
>>>>     2000 S, and at 7.5 kS/s, that's 2/7.5 s = 0.26667 seconds for the
>>>>     buffers between NBFM demod and add, and between add and
>>>> resampler. In
>>>>     fact, NBFM demod internally is a hier block (might have more
>>>> low-rate
>>>>     buffers); so, that's half a second for these two buffers alone...
>>>>
>>>>     In your very specific use case, using a higher sampling rate
>>>> might make
>>>>     the problem more manageable. If you'd share the first half of
>>>> your flow
>>>>     graph, we could discuss options for that!
>>>>
>>>>     Best regards,
>>>>
>>>>     Marcus
>>>>
>>>>     [1] http://gnuradio.org/blog/buffers
>>>>
>>>>
>>>>     On 23.05.2017 22:04, John Ackermann N8UR wrote:
>>>>
>>>>         Hi Marcus and Kevin, and thanks for the info.
>>>>
>>>>         I've set all squelch gates off. In that case, I get good audio
>>>>         if "OK
>>>>         to block" in the audio sink is set to "yes" but the latency
>>>> is awful
>>>>         -- 3 to 5 seconds! If "OK to block" is "no", then I get lots
>>>> of aU
>>>>         and unusable audio.
>>>>
>>>>         If setting the squelch gates off means that samples are
>>>> continuously
>>>>         sent through the adder to the sink, I don't understand why
>>>> blocking
>>>>         makes the difference, or why the latency builds up so fast.
>>>> I'd try
>>>>         using 44.1ksps on the sink, but the dropdown doesn't allow
>>>> that
>>>>         choice.
>>>>
>>>>         John
>>>>         ----
>>>>         On 05/23/2017 02:51 PM, Kevin Reid wrote:
>>>>
>>>>             On Tue, May 23, 2017 at 11:31 AM, John Ackermann N8UR
>>>>             <j...@febo.com
>>>>             <mailto:j...@febo.com>> wrote:
>>>>
>>>>             I'm continuing to work on a multi-channel NBFM receiver
>>>>             using the
>>>>             polyphase filter. I have the basic system working, but am
>>>>             hung up
>>>>             on how to get audio out of the system; most of my attempts
>>>>             end up
>>>>             either with audio underruns, or stalls that result in
>>>> overruns.
>>>>
>>>>
>>>>             You're using only one RF source hardware device, correct?
>>>>
>>>>             Even then, /some/ amount of overrun/underrun is inevitable
>>>>             because the
>>>>             RF receiver and the audio output are not using the same
>>>> clock
>>>>             oscillator, so the resampling rate you've implemented is
>>>> not the
>>>>             resampling rate you would ideally need (which there is no
>>>>             way in GR to
>>>>             actually detect or implement).
>>>>
>>>>
>>>>             The relevant portion of the flowgraph is attached. Each
>>>> channel
>>>>             ends up at a 15ksps rate and is fed into a power squelch,
>>>> then a
>>>>             mult block that's used to mute or unmute the audio, then
>>>> NBFM
>>>>             demod. The demodulated outputs are at 7.5ksps (though I
>>>> get the
>>>>             same results with 15ksps) and the seven channels are
>>>> added.
>>>>             Then a
>>>>             rational resample to 48ksps, volume control, and audio
>>>> sink at
>>>>             48ksps.
>>>>
>>>>             I've tried the "gate" param of the power squelch block
>>>> both
>>>>             off and
>>>>             on, and the "OK to block" option of the audio sink in
>>>> various
>>>>             combinations, but I'm not able to get clean audio.
>>>>
>>>>
>>>>             "Gate" should be off. What that option does is drop
>>>> samples.
>>>>             The problem
>>>>             is that the Add block requires samples from every input to
>>>>             produce an
>>>>             output, so if any one of the inputs drops samples then
>>>>             eventually your
>>>>             flowgraph will not be able to make progress because some
>>>>             buffers are
>>>>             overfull and some are empty.
>>>>
>>>>             Any flowgraph that has paths that split (here, polyphase
>>>>             channelizer)
>>>>             and rejoin (here, add) MUST have exactly the same
>>>>             input-samples-to-output-samples ratio on all of the paths,
>>>>             or it will
>>>>             eventually lock up.
>>>>
>>>>             "OK to block" does not do very much, but in this type of
>>>>             application it
>>>>             should be off. This means that if there is an overrun, the
>>>>             audio sink
>>>>             will discard samples rather than the internal buffers
>>>>             filling up and
>>>>             causing the RF source block to have to discard them
>>>> instead;
>>>>             while this
>>>>             is very similar in principle, it means a higher
>>>>             input-to-output latency.
>>>>             The time to use "OK to block" is when your source has no
>>>>             clock (e.g. it
>>>>             is a file or an internal signal source of some sort) so
>>>> the
>>>>             audio sink
>>>>             has to be responsible for deciding when it's time to take
>>>>             more samples.
>>>>
>>>>
>>>>             I'd appreciate any suggestions. One thing I wonder about
>>>> is the
>>>>             placement of the blocks in the stream; would a different
>>>>             order work
>>>>             better?
>>>>
>>>>
>>>>             The ordering should not matter (as long as it is not
>>>>             incorrect in some
>>>>             other way, of course).
>>>>
>>>>
>>>>             When you have "Gate" off, which type of misbehavior do
>>>> you get?
>>>>
>>>>             Have you confirmed that your sound card/driver actually
>>>>             supports 48 kHz?
>>>>             What happens if you try a different sample rate?
>>>>
>>>>             Have you tried resampling to a rate slightly under or over
>>>>             48 kHz, as
>>>>             appropriate? That will help if you actually have a severe
>>>>             clock skew
>>>>             problem.
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>>         Discuss-gnuradio mailing list
>>>>         Discuss-gnuradio@gnu.org
>>>>         https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>>     Discuss-gnuradio mailing list
>>>>     Discuss-gnuradio@gnu.org
>>>>     https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Discuss-gnuradio mailing list
>>>> Discuss-gnuradio@gnu.org
>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>
>>>
>>>
>>> _______________________________________________
>>> Discuss-gnuradio mailing list
>>> Discuss-gnuradio@gnu.org
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> Discuss-gnuradio@gnu.org
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

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

Reply via email to