[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Weaver SSB (was: gr.firdes_hilbert () usage)
From: |
Matt Ettus |
Subject: |
Re: [Discuss-gnuradio] Weaver SSB (was: gr.firdes_hilbert () usage) |
Date: |
Fri, 26 Nov 2004 14:50:26 -0800 |
User-agent: |
Internet Messaging Program (IMP) 4.0-cvs |
That should work. But you don't need to have 2 filters on each side. You could
combine lpf1i with lpf2i. Same for the q side.
Matt
Quoting cswiger <address@hidden>:
> Ok gang - this might be horribly inefficient but hey, it seems to work.
> Working from figure 8 in:
> <www.semiconductors.philips.com/acrobat_download/applicationnotes/AN1981.pdf>
> Their LO frequencies were confusing at first (7.2?) - but their quadrature
> generators are divide-by-four. (1.8Khz)
>
> -----------------------------------------
>
> #!/usr/bin/env python
> #
> # Weaver SSB demodulation
> #
> #
> # rf_loi af_loi
> # | |
> # |-----(X)---[lpf1i]--[lpf2i]---(X)---|
> # | rf_mixi af_mixi |
> # | |
> # signal ----| (+)----- ssb_demod
> # | |
> # | rf_mixq af_mixq |
> # |-----(X)---[lpf1q]--[lpf2q]---(X)---|
> # | |
> # rf_loq af_loq
> #
>
> from gnuradio import gr
> import sys
>
> def build_graph ():
>
> rf_LO = 501.8e3
> af_LO = 1.8e3
>
> signal = 501.5e3 # passband is 500-503.6 Khz USB
>
> rf_sample_rate = 8e6
> af_sample_rate = 32e3
>
> fir_decimation = (long)(rf_sample_rate / af_sample_rate)
>
> fg = gr.flow_graph ()
>
> src = gr.sig_source_f (rf_sample_rate,gr.GR_SIN_WAVE,signal,1.0,0)
>
> rf_loi = gr.sig_source_f (rf_sample_rate,gr.GR_COS_WAVE,rf_LO,1.0,0)
> rf_loq = gr.sig_source_f (rf_sample_rate,gr.GR_SIN_WAVE,rf_LO,1.0,0)
> af_loi = gr.sig_source_f (af_sample_rate,gr.GR_COS_WAVE,af_LO,1.0,0)
> af_loq = gr.sig_source_f (af_sample_rate,gr.GR_SIN_WAVE,af_LO,1.0,0)
>
> rf_mixi = gr.multiply_ff ()
> rf_mixq = gr.multiply_ff ()
>
> lpf1_taps = gr.firdes.low_pass ( \
> 1.0, rf_sample_rate, 160e3, 100e3, gr.firdes.WIN_HAMMING)
> lpf1i = gr.fir_filter_fff (fir_decimation, lpf1_taps)
> lpf1q = gr.fir_filter_fff (fir_decimation, lpf1_taps)
> lpf2_taps = gr.firdes.low_pass ( \
> 1.0, af_sample_rate, 1.8e3, 100, gr.firdes.WIN_HAMMING)
> lpf2i = gr.fir_filter_fff (1, lpf2_taps)
> lpf2q = gr.fir_filter_fff (1, lpf2_taps)
>
> af_mixi = gr.multiply_ff ()
> af_mixq = gr.multiply_ff ()
>
> sum = gr.add_ff ()
>
> out = gr.file_sink (gr.sizeof_float, "ssb_demod")
>
> fg.connect (src, (rf_mixi, 0))
> fg.connect (rf_loi, (rf_mixi, 1))
> fg.connect (rf_mixi, lpf1i)
> fg.connect (lpf1i, lpf2i)
> fg.connect (lpf2i, (af_mixi, 0))
> fg.connect (af_loi, (af_mixi, 1))
> fg.connect (af_mixi, (sum, 0))
>
> fg.connect (src, (rf_mixq, 0))
> fg.connect (rf_loq, (rf_mixq, 1))
> fg.connect (rf_mixq, lpf1q)
> fg.connect (lpf1q, lpf2q)
> fg.connect (lpf2q, (af_mixq, 0))
> fg.connect (af_loq, (af_mixq, 1))
> fg.connect (af_mixq, (sum, 1))
>
> fg.connect (sum, out)
>
> return fg
>
> def main ():
>
> fg = build_graph ()
>
>
> # fg.run ()
>
> fg.start ()
> raw_input ('Press Enter to quit: ')
> fg.stop ()
>
> if __name__ == '__main__':
> main ()
>
>
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, (continued)
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, cswiger, 2004/11/24
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Dan Gisselquist, 2004/11/24
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, cswiger, 2004/11/24
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Matt Ettus, 2004/11/24
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Dan Gisselquist, 2004/11/24
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Matt Ettus, 2004/11/24
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Eric Blossom, 2004/11/25
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Chuck Swiger, 2004/11/26
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Matt Ettus, 2004/11/26
- Re: [Discuss-gnuradio] Weaver SSB (was: gr.firdes_hilbert () usage), cswiger, 2004/11/26
- Re: [Discuss-gnuradio] Weaver SSB (was: gr.firdes_hilbert () usage),
Matt Ettus <=
- Re: [Discuss-gnuradio] Weaver SSB (was: gr.firdes_hilbert () usage), cswiger, 2004/11/26
- Re: [Discuss-gnuradio] Weaver SSB (was: gr.firdes_hilbert () usage), Eric Blossom, 2004/11/27
- Re: [Discuss-gnuradio] Weaver SSB (was: gr.firdes_hilbert () usage), Matt Ettus, 2004/11/28
Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Eric Blossom, 2004/11/24