discuss-gnuradio
[Top][All Lists]
Advanced

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

[Discuss-gnuradio] Computing Power Spectra


From: Scott Johnston
Subject: [Discuss-gnuradio] Computing Power Spectra
Date: Tue, 15 Mar 2011 17:48:08 -0400
User-agent: Thunderbird 2.0.0.24 (X11/20100721)

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?

Any help would be appreciated.

Scott

--
Scott Johnston
MIT Lincoln Laboratory
244 Wood Street, Lexington, MA 02420-9108
(781) 981-8196
address@hidden

#!/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 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>

reply via email to

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