[Top][All Lists]

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

[Discuss-gnuradio] pseudo-dynamic reconfiguration (in stereo)

From: cswiger
Subject: [Discuss-gnuradio] pseudo-dynamic reconfiguration (in stereo)
Date: Wed, 2 Mar 2005 18:09:52 -0500 (EST)

Gang - here's an idea that worked out pretty good. I was thinking
of how to reconfigure flow-graphs on the fly, which is really impossible
AFAIK, but you can simulate it, low cost at audio-rates, just using
a network of gr.multiply_const_ff() and gr.add_ff().

For example, I want buttons to select upper sideband OR lower sideband
on demand, just like a real radio. Before, we would construct a graph
using an add or sum depending on the desired SB. Now, it's easy to
just calculate BOTH signals, then switch whichever one you want to
the headphones. As as added bonus, you can then listen to Independant
Sideband, with LSB in one ear and USB in the other. If you never tried
ISB you don't know what your missing.

Anyway the graph would look something like this:

from Weaver
mixers and filters
            |        |
           (+)--+   (-)--->-------+--------+
            |   |    |            |        |
      >-----+--------+            |   [sel_usb_1]
                |                 |        |
                V            [sel_usb_0]   V
                |                 |        |
                |                 |        |
                |                 |        |
                +-[sel_lsb_0]----(+)--->-------------- port 0
                |                          |                 \
                |                          |                  * audio.sink
                |                          |                 /
                +-[sel_lsb_1]----->-------(+)--->----- port 1

(+) gets the lower sideband
(-) gets the upper sideband

the sel_xxx_x blocks are all gr.multiply_const_ff(x)
and the selection matrix goes:

LSB     sel_lsb_0 = 1   sel_usb_0 = 0
        sel_lsb_1 = 1   sel_usb_0 = 0

USB     sel_lsb_0 = 0   sel_usb_0 = 1
        sel_lsb_1 = 0   sel_usb_1 = 1

ISB1    sel_lsb_0 = 1   sel_usb_0 = 0
        sel_lsb_1 = 0   sel_usb_1 = 1

ISB2    sel_lsb_0 = 0   sel_usb_0 = 1
        sel_lsb_1 = 1   sel_usb_1 = 0

I put the above behind a window with buttons to stuff the
sel_xxx_x.set_k(y) blocks with the right values and now we
can choose sidebands on the fly.

The *problem* with the ISB here is the carrier points are different
for USB and LSB - they *should* be at the same freq, with one
ear looking down and the other looking up from that *one* freq.
Here, one ear will be looking up in freq, while the other will
be about 3.6Khz above that looking down.


reply via email to

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