discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Computing Power Spectra


From: Nick Foster
Subject: Re: [Discuss-gnuradio] Computing Power Spectra
Date: Tue, 15 Mar 2011 14:54:19 -0700

On Tue, 2011-03-15 at 17:48 -0400, Scott Johnston wrote:
> Hello,
> 
> I wrote a simple grc graph to compute power spectra of the output of the 
> usrp. My test setup is a signal generator outputting a tone at the same 
> frequency that I set as the usrp center frequency, directly connected to 
> the usrp. But when I examine the output in Matlab, the first vector is 
> exactly what I expect, a peak at the center and then the noise floor. 
> The following vectors show the peak at lower and lower power levels 
> until, after 10 or so, it disappears into the noise. My code is 
> attached. Anybody know what could be causing this?

My guess is DC offset correction. Receiving an unmodulated baseband
signal will just look like DC, which will get offset corrected in the
FPGA. Try generating a signal very slightly offset from the USRP receive
freq.

--n

> 
> Any help would be appreciated.
> 
> Scott
> 
> Python script attachment (logpowertest.py)
> #!/usr/bin/env python
> ##################################################
> # Gnuradio Python Flow Graph
> # Title: Logpowertest
> # Generated: Tue Mar 15 17:36:43 2011
> ##################################################
> 
> from gnuradio import blks2
> from gnuradio import eng_notation
> from gnuradio import gr
> from gnuradio import uhd
> from gnuradio import window
> from gnuradio.eng_option import eng_option
> from gnuradio.gr import firdes
> from optparse import OptionParser
> 
> class logpowertest(gr.top_block):
> 
>       def __init__(self):
>               gr.top_block.__init__(self, "Logpowertest")
> 
>               ##################################################
>               # Variables
>               ##################################################
>               self.samp_rate = samp_rate = 32000
> 
>               ##################################################
>               # Blocks
>               ##################################################
>               self.blks2_stream_to_vector_decimator_0 = 
> blks2.stream_to_vector_decimator(
>                       item_size=gr.sizeof_gr_complex,
>                       sample_rate=samp_rate,
>                       vec_rate=30,
>                       vec_len=1024,
>               )
>               self.gr_complex_to_mag_squared_0 = 
> gr.complex_to_mag_squared(1024)
>               self.gr_fft_vxx_0 = gr.fft_vcc(1024, True, 
> (window.blackmanharris(1024)), True)
>               self.gr_file_sink_0 = gr.file_sink(gr.sizeof_float*1024, 
> "/home/user/Desktop/logpowertest.bin")
>               self.gr_file_sink_0.set_unbuffered(False)
>               self.gr_nlog10_ff_0 = gr.nlog10_ff(10, 1024, 0)
>               self.uhd_single_usrp_source_0 = uhd.single_usrp_source(
>                       device_addr="addr=192.168.10.2",
>                       io_type=uhd.io_type.COMPLEX_FLOAT32,
>                       num_channels=1,
>               )
>               
> self.uhd_single_usrp_source_0.set_clock_config(uhd.clock_config.external());
>               self.uhd_single_usrp_source_0.set_samp_rate(.2e6)
>               self.uhd_single_usrp_source_0.set_center_freq(800e6, 0)
>               self.uhd_single_usrp_source_0.set_gain(0, 0)
> 
>               ##################################################
>               # Connections
>               ##################################################
>               self.connect((self.gr_fft_vxx_0, 0), 
> (self.gr_complex_to_mag_squared_0, 0))
>               self.connect((self.gr_complex_to_mag_squared_0, 0), 
> (self.gr_nlog10_ff_0, 0))
>               self.connect((self.uhd_single_usrp_source_0, 0), 
> (self.blks2_stream_to_vector_decimator_0, 0))
>               self.connect((self.blks2_stream_to_vector_decimator_0, 0), 
> (self.gr_fft_vxx_0, 0))
>               self.connect((self.gr_nlog10_ff_0, 0), (self.gr_file_sink_0, 0))
> 
>       def set_samp_rate(self, samp_rate):
>               self.samp_rate = samp_rate
>               
> self.blks2_stream_to_vector_decimator_0.set_sample_rate(self.samp_rate)
> 
> if __name__ == '__main__':
>       parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
>       (options, args) = parser.parse_args()
>       if gr.enable_realtime_scheduling() != gr.RT_OK:
>               print "Error: failed to enable realtime scheduling."
>       tb = logpowertest()
>       tb.start()
>       raw_input('Press Enter to quit: ')
>       tb.stop()
> 
> XML document attachment (logpowerTest.grc)
> <?xml version='1.0' encoding='ASCII'?>
> <flow_graph>
>   <timestamp>Tue Mar 15 17:36:42 2011</timestamp>
>   <block>
>     <key>variable</key>
>     <param>
>       <key>id</key>
>       <value>samp_rate</value>
>     </param>
>     <param>
>       <key>_enabled</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>value</key>
>       <value>32000</value>
>     </param>
>     <param>
>       <key>_coordinate</key>
>       <value>(10, 170)</value>
>     </param>
>     <param>
>       <key>_rotation</key>
>       <value>0</value>
>     </param>
>   </block>
>   <block>
>     <key>gr_complex_to_mag_squared</key>
>     <param>
>       <key>id</key>
>       <value>gr_complex_to_mag_squared_0</value>
>     </param>
>     <param>
>       <key>_enabled</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>vlen</key>
>       <value>1024</value>
>     </param>
>     <param>
>       <key>_coordinate</key>
>       <value>(910, 187)</value>
>     </param>
>     <param>
>       <key>_rotation</key>
>       <value>0</value>
>     </param>
>   </block>
>   <block>
>     <key>uhd_single_usrp_source</key>
>     <param>
>       <key>id</key>
>       <value>uhd_single_usrp_source_0</value>
>     </param>
>     <param>
>       <key>_enabled</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>type</key>
>       <value>complex</value>
>     </param>
>     <param>
>       <key>nchan</key>
>       <value>1</value>
>     </param>
>     <param>
>       <key>dev_addr</key>
>       <value>addr=192.168.10.2</value>
>     </param>
>     <param>
>       <key>ref_clk</key>
>       <value>ext</value>
>     </param>
>     <param>
>       <key>sd_spec</key>
>       <value></value>
>     </param>
>     <param>
>       <key>samp_rate</key>
>       <value>.2e6</value>
>     </param>
>     <param>
>       <key>center_freq0</key>
>       <value>800e6</value>
>     </param>
>     <param>
>       <key>gain0</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>ant0</key>
>       <value></value>
>     </param>
>     <param>
>       <key>bw0</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>center_freq1</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>gain1</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>ant1</key>
>       <value></value>
>     </param>
>     <param>
>       <key>bw1</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>center_freq2</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>gain2</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>ant2</key>
>       <value></value>
>     </param>
>     <param>
>       <key>bw2</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>center_freq3</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>gain3</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>ant3</key>
>       <value></value>
>     </param>
>     <param>
>       <key>bw3</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>_coordinate</key>
>       <value>(182, 75)</value>
>     </param>
>     <param>
>       <key>_rotation</key>
>       <value>0</value>
>     </param>
>   </block>
>   <block>
>     <key>gr_fft_vxx</key>
>     <param>
>       <key>id</key>
>       <value>gr_fft_vxx_0</value>
>     </param>
>     <param>
>       <key>_enabled</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>type</key>
>       <value>complex</value>
>     </param>
>     <param>
>       <key>fft_size</key>
>       <value>1024</value>
>     </param>
>     <param>
>       <key>forward</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>window</key>
>       <value>window.blackmanharris(1024)</value>
>     </param>
>     <param>
>       <key>shift</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>_coordinate</key>
>       <value>(654, 83)</value>
>     </param>
>     <param>
>       <key>_rotation</key>
>       <value>0</value>
>     </param>
>   </block>
>   <block>
>     <key>gr_nlog10_ff</key>
>     <param>
>       <key>id</key>
>       <value>gr_nlog10_ff_0</value>
>     </param>
>     <param>
>       <key>_enabled</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>n</key>
>       <value>10</value>
>     </param>
>     <param>
>       <key>k</key>
>       <value>0</value>
>     </param>
>     <param>
>       <key>vlen</key>
>       <value>1024</value>
>     </param>
>     <param>
>       <key>_coordinate</key>
>       <value>(914, 266)</value>
>     </param>
>     <param>
>       <key>_rotation</key>
>       <value>0</value>
>     </param>
>   </block>
>   <block>
>     <key>gr_file_sink</key>
>     <param>
>       <key>id</key>
>       <value>gr_file_sink_0</value>
>     </param>
>     <param>
>       <key>_enabled</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>file</key>
>       <value>/home/user/Desktop/logpowertest.bin</value>
>     </param>
>     <param>
>       <key>type</key>
>       <value>float</value>
>     </param>
>     <param>
>       <key>vlen</key>
>       <value>1024</value>
>     </param>
>     <param>
>       <key>unbuffered</key>
>       <value>False</value>
>     </param>
>     <param>
>       <key>_coordinate</key>
>       <value>(1108, 286)</value>
>     </param>
>     <param>
>       <key>_rotation</key>
>       <value>0</value>
>     </param>
>   </block>
>   <block>
>     <key>blks2_stream_to_vector_decimator</key>
>     <param>
>       <key>id</key>
>       <value>blks2_stream_to_vector_decimator_0</value>
>     </param>
>     <param>
>       <key>_enabled</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>type</key>
>       <value>complex</value>
>     </param>
>     <param>
>       <key>sample_rate</key>
>       <value>samp_rate</value>
>     </param>
>     <param>
>       <key>vec_rate</key>
>       <value>30</value>
>     </param>
>     <param>
>       <key>vlen</key>
>       <value>1024</value>
>     </param>
>     <param>
>       <key>_coordinate</key>
>       <value>(419, 89)</value>
>     </param>
>     <param>
>       <key>_rotation</key>
>       <value>0</value>
>     </param>
>   </block>
>   <block>
>     <key>options</key>
>     <param>
>       <key>id</key>
>       <value>logpowertest</value>
>     </param>
>     <param>
>       <key>_enabled</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>title</key>
>       <value></value>
>     </param>
>     <param>
>       <key>author</key>
>       <value></value>
>     </param>
>     <param>
>       <key>description</key>
>       <value></value>
>     </param>
>     <param>
>       <key>window_size</key>
>       <value>1280, 1024</value>
>     </param>
>     <param>
>       <key>generate_options</key>
>       <value>no_gui</value>
>     </param>
>     <param>
>       <key>category</key>
>       <value>Custom</value>
>     </param>
>     <param>
>       <key>run_options</key>
>       <value>prompt</value>
>     </param>
>     <param>
>       <key>run</key>
>       <value>True</value>
>     </param>
>     <param>
>       <key>realtime_scheduling</key>
>       <value>1</value>
>     </param>
>     <param>
>       <key>_coordinate</key>
>       <value>(10, 10)</value>
>     </param>
>     <param>
>       <key>_rotation</key>
>       <value>0</value>
>     </param>
>   </block>
>   <connection>
>     <source_block_id>gr_fft_vxx_0</source_block_id>
>     <sink_block_id>gr_complex_to_mag_squared_0</sink_block_id>
>     <source_key>0</source_key>
>     <sink_key>0</sink_key>
>   </connection>
>   <connection>
>     <source_block_id>gr_complex_to_mag_squared_0</source_block_id>
>     <sink_block_id>gr_nlog10_ff_0</sink_block_id>
>     <source_key>0</source_key>
>     <sink_key>0</sink_key>
>   </connection>
>   <connection>
>     <source_block_id>uhd_single_usrp_source_0</source_block_id>
>     <sink_block_id>blks2_stream_to_vector_decimator_0</sink_block_id>
>     <source_key>0</source_key>
>     <sink_key>0</sink_key>
>   </connection>
>   <connection>
>     <source_block_id>blks2_stream_to_vector_decimator_0</source_block_id>
>     <sink_block_id>gr_fft_vxx_0</sink_block_id>
>     <source_key>0</source_key>
>     <sink_key>0</sink_key>
>   </connection>
>   <connection>
>     <source_block_id>gr_nlog10_ff_0</source_block_id>
>     <sink_block_id>gr_file_sink_0</sink_block_id>
>     <source_key>0</source_key>
>     <sink_key>0</sink_key>
>   </connection>
> </flow_graph>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio





reply via email to

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