[Top][All Lists]

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

Re: [Discuss-gnuradio] Port flowgraph from Python to C++

From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] Port flowgraph from Python to C++
Date: Wed, 30 Jul 2014 09:32:54 -0400

On Tue, Jul 29, 2014 at 5:53 PM, Stefan Oltmanns <address@hidden> wrote:
I was able to create a flowgraph in GRC to demodulate a signal
(low-frequency battery telegram of wireless microphones). Now I started
to port the generated code from Python to C++.
I had to realize that some blocks are Python-only, like the FM
Demodulator. I was able to rebuild the FM Demodulator in C++, for one
exception: The FM demodulator uses optfir, which is implemented in
Python, so it cannot be used in C++. So I replaced it with firdes (I
noticed the parameter difference in transition band end and transition
band width).
Another thing is that the Frequency-Xlating-Filter uses a complex
lowpass, but in C++ I could only find a complex band-pass, so I used a
band-pass with lower frequency 0, is that the same?

Also it works, the signal is a lot noisier and the result cannot be
decoded in many cases. I think the reason are the different filters.
Could that be the reason?
As I understood, both optfir and firdes create just a bunch of numbers
and that´s it. As my program is not going change the filter parameters
they could be hardcoded in my program, right?

Best regards

You can use gr_filter_design (or in GRC call it with Tools->Filter Design Tool) to show you the filter you designed.

But I think your problem is the bandpass filter you created is probably only half of the bandwidth you want, so you're cutting out a large amount of information in your signal. The frequency xlating filter takes in the filter you define and moves it to the center frequency of the incoming signal by a complex multiply. You want this to then be a low-pass filter defined to be symmetric around 0. You can then use the freq_xlating_fir_filter_ccf version of the filter to take in the real taps defined by the lowpass filter. Alternatively, keep with the complex bandpass but define the lower passband edge as -B and the upper edge as +B.



reply via email to

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