Hi all, can I use one RX receive a wideband signal and then seperate it to many narrowband signals

Hi all, I need to receive many narrowband signals, but usrp hard ware
only
provide 4 RX,
so I need to receive more than one narrowband signals per RX. Is my idea
possible?
I dont want to use more than one usrp to achieve that, anyway which will
be
an
option if my first idea can’t work.

On Tue, Dec 21, 2010 at 06:02:44PM +0800, James Jordan wrote:

Hi all, I need to receive many narrowband signals, but usrp hard ware only
provide 4 RX,
so I need to receive more than one narrowband signals per RX. Is my idea
possible?
I dont want to use more than one usrp to achieve that, anyway which will be an
option if my first idea can’t work.

If your total bandwidth (sum of all bandwidths) does not exceed a couple
of MHz, you can use the polyphase channelizer (pfb_channelizer_ccf).
The result will be an equally spaced set of narrowband channels.

Happy DSP’ing,
MB


Karlsruhe Institute of Technology (KIT)
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.
Research Associate

Kaiserstraße 12
Building 05.01
76131 Karlsruhe

Phone: +49 721 608-3790
Fax: +49 721 608-6071
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and
National Laboratory of the Helmholtz Association

Martin,
Thank u very much. But how much MHz is the limit in your word “a couple
of
MHz”?

James Jordan wrote in post #969742:

Hi all, I need to receive many narrowband signals, but usrp hard ware
only
provide 4 RX,
so I need to receive more than one narrowband signals per RX. Is my idea
possible?
I dont want to use more than one usrp to achieve that, anyway which will
be
an
option if my first idea can’t work.

I just wrote a script to do that and record to disk. It does not use a
channelizing filter since the ham bands are 5 kHz spacing and that would
be too narrow. There is a channelizer example IIRC in the gnuradio
source tree.

http://idisk.mac.com/rfengr00-Public/nbfm_rec.py

Hi Martin,
pfb_channelizer_ccf will seperate all channels, But I dont need each
channel.
I only need the channel I am interested in. Seperating all channels will
eat
a lot of CPU resource.
I have check pfb_channelizer_ccf source, it finally use fftw to process
channelizer.
So can I directly use fftw to do my work.

Thanks Tom.
if I really don’t know how pfb_channelizer_ccf and pfb_decimator_ccf do,
but
they seem
use the same principle. And how to set the taps?

On Thu, Dec 23, 2010 at 1:19 AM, James Jordan
[email protected] wrote:

Hi Martin,
pfb_channelizer_ccf will seperate all channels, But I dont need each
channel.
I only need the channel I am interested in. Seperating all channels will eat
a lot of CPU resource.

Not really. It’s a very efficient algorithm and won’t cost you that
much.

I have check pfb_channelizer_ccf source, it finally use fftw to process
channelizer.
So can I directly use fftw to do my work.

Not quite. The PFB channelizer uses a filterbank where each filter is
specifically generated with a phase relation. The FFT part isn’t doing
exactly what you expect it’s doing. We’d have to go through the math,
though.

If you are looking to just get a single channel out, then use the
pfb_decimator_ccf(N, taps, channel) to split the bandwidth into “N”
channels, using filter taps “taps,” and you can specify which channel
you want to take by specifying the “channel.” Here’s the way to
translate the “channel” into the physical Nyquist zone you are looking
for N=7 (hopefully this format survives):

Channel: 4 5 6 0 1 2 3
Frequency: -3B | -2B | -1B | 0 | 2B | 2B | 3B

Tom

On Thu, Dec 23, 2010 at 3:53 AM, James Jordan
[email protected] wrote:

Thanks Tom.
if I really don’t know how pfb_channelizer_ccf and pfb_decimator_ccf do, but
they seem
use the same principle. And how to set the taps?

Yes, they are based on the same principle, but the decimator just
extracts the 1 channel while the channelizer produces all channels.

To create the taps, you want to build a prototype filter that will
have the bandwidth of the channelized signals at the input sampling
rate. So if the input to the channelizer is fs and the bandwidth of
each channel is B, you can build the taps with:
taps = gr.firdes.low_pass_2(1, fs, B/2, B/10, 80)

The “B/10” is the transition width, which you can make as tight as you
need to, this is just a random guess right now. The 80 is the stopband
attenuation. This should make a rather long filter, then each channel
uses a filter that is len(taps)/N.

In the examples directory, you can see how this is done in
pfb/cahnnelize.py and pfb/decimate.py.

Tom

Tom, thank u very much.

Hi Tom,
This is very old topic. I have read a DSP book. But I find that I still
not
very understand channelizer.
Why in channelizer use low pass filter, in my imagine channelizer will
use
band pass filter to filter each
channel like that: 600Mhz baseband signal have 4 channel each channel
have
100Khz bandwidth.
so the channel freq is: 599.8Mhz 599.9Mhz 600Mhz 600.1Mhz. So I need 4
bandpass filter to filter each
channel but actually the channelizer use lowpass filter, so why?

Thanks!

On 01/20/2011 09:42 PM, James Jordan wrote:

I know you’ve asked Tom, but he’s on the road. I haven’t looked at the
Gnu Radio channelizer, but one
way to implement a channelizer is to convert all the signals to
baseband, then low-pass filter.That
way, all channels are at baseband when you’re done.

Does that make sense?


Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org

Marcus, Thanks for reply.
That is make sense, so the point become how to convert the signal to
baseband.

On 01/20/2011 10:22 PM, James Jordan wrote:

Marcus, Thanks for reply.
That is make sense, so the point become how to convert the signal to
baseband.
Oh, that’s relatively easy–you multiply it with a complex signal at the
same frequency–that’s
exactly how it’s done in hardware, and it works equally-well in
software.

The Gnu Radio channelizer likely is more sophisticated than that, using
different
mathematical tricks to improve efficiency, etc.

When you multiply two sinusoids of Xhz and Yhz, you end up with a mixed
sinusoid–
Xhz+YHz and XHz-Yhz.

In direct-conversion, you mix (multiply) it with a signal of the same
center frequency, and you get
the baseband frequencies, but since this is baseband, you need to use
complex representation, otherwise
the + and - frequencies “fold” around each other.


Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org

Tom, thanks very much. though I still not fully understand it I will
read
the book u suggested.

Regards!

On Thu, Jan 20, 2011 at 10:30 PM, Marcus D. Leech [email protected]
wrote:

mathematical tricks to improve efficiency, etc.

When you multiply two sinusoids of Xhz and Yhz, you end up with a mixed
sinusoid–
Xhz+YHz and XHz-Yhz.

In direct-conversion, you mix (multiply) it with a signal of the same
center frequency, and you get
the baseband frequencies, but since this is baseband, you need to use
complex representation, otherwise
the + and - frequencies “fold” around each other.

Yes, the polyphase filterbank is a bit more clever than that. It’ll
sound like magic when you first hear about it, but what you are doing
using (or abusing) the concept of aliasing.

What happens is that you decimate the signal before you filter it. The
decimation process folds all of the Nyquist zones down to baseband,
but now they are aliased on top of each other. You filter the signal
at this point, but that doesn’t get rid of the aliases, of course.

That’s where the “despinning” operation comes in. See, when you’ve
brought all of the signals to baseband, you filter them with different
phases, so in the complex plane, each alias has a specific phase
rotation. You despin these according to what channel you want to pull
out. For this, you rotate all of the other channels such that when you
sum up the outputs of the filters, these channels cancel. For the
channel you want, you rotate them in a way that summing them up adds
the signals together. So the output is to suppress all of the other
channels and reinforce the channel you’ve asked for. So it’s a series
of multiply and adds.

If you want all channels together, these multiply and adds looking
amazingly like an FFT, which is how we normally implement this
operation. It’s a lot more efficient doing it this way than filtering
each channel and downconverting it to baseband.

If you really want to know more, read fred harris’ “Multirate Signal
Processing for Communication Systems.”

Tom

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs