[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: |
cswiger |
Subject: |
Re: [Discuss-gnuradio] Weaver SSB (was: gr.firdes_hilbert () usage) |
Date: |
Fri, 26 Nov 2004 16:38:22 -0500 (EST) |
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 ()
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, (continued)
- Re: [Discuss-gnuradio] gr.firdes_hilbert () usage, Matt Ettus, 2004/11/24
- 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 <=
- Re: [Discuss-gnuradio] Weaver SSB (was: 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), 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