Working the following issue...any ideas?

System: Ubuntu 10.10, Gnuradio 3.3.0, uhd (Mar 2011), USRP2, TVRX

Using the attached grc model results in a floating point exception:



gnuradio_core_runtime.py (1476)

   top_block.py (96)

     top_block_gui.py (72)

       USRP2_WX.py (326)

General output in GRC:

Generating: "/home/jim/radiostuff/refs/gen/USRP2_WX.py"

Executing: "/home/jim/radiostuff/refs/gen/USRP2_WX.py"

linux; GNU C++ version 4.4.5; Boost_104200; UHD_003.000.000-3235792

Current recv frame size: 1476 bytes
Current send frame size: 1472 bytes
Making transport for DSP0...
Current recv sock buff size: 50000000 bytes
Making transport for DSP1...
Current recv sock buff size: 50000000 bytes
Making transport for ERR0...
mboard0 MIMO master

Warning:
    The hardware does not support the requested RX sample rate:
    Target sample rate: 3.200000 MSps    
    Actual sample rate: 3.225806 MSps   #Betting this is the culprit but 
haven't completed a trace
>>> gr_fir_ccc: using SSE

>>> Done

I'm looking through the UHD spec to see if there is a function that easily 
resolves this but nothing has jumped out, yet.

It might be a memory issue. An attempt to sample at the 6Mz limit with the TVRX 
(board responds with ~5.88...) results in gr_buffer:allocate_buffer: failed to 
allocate buffer of size 18760, which points to an installation issue that make 
check should have handled...a reinstall and closer scrutiny of the output 
should highlight any neglected warnings/errors.






                                          

Attachment: USRP2_WX.grc
Description: Binary data

#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Usrp2 Wx
# Generated: Thu Mar 31 00:08:03 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 gnuradio.wxgui import fftsink2
from gnuradio.wxgui import forms
from gnuradio.wxgui import waterfallsink2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx

class USRP2_WX(grc_wxgui.top_block_gui):

	def __init__(self):
		grc_wxgui.top_block_gui.__init__(self, title="Usrp2 Wx")

		##################################################
		# Variables
		##################################################
		self.usrp_inter = usrp_inter = 2
		self.usrp_dec = usrp_dec = 25
		self.cent_freq_m = cent_freq_m = 99.1e6
		self.cent_freq_f = cent_freq_f = 0
		self.adc_rate = adc_rate = 3.2e6
		self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass(1, adc_rate*usrp_inter/usrp_dec, 125000, 25000, firdes.WIN_HAMMING, 6.76)
		self.inc_dis = inc_dis = 10
		self.gain = gain = 50
		self.filter_gain = filter_gain = 10
		self.cent_freq = cent_freq = cent_freq_m+cent_freq_f
		self.audio_rate = audio_rate = 48
		self.audio_inter = audio_inter = 3
		self.audio_dec = audio_dec = 16

		##################################################
		# Blocks
		##################################################
		_gain_sizer = wx.BoxSizer(wx.VERTICAL)
		self._gain_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_gain_sizer,
			value=self.gain,
			callback=self.set_gain,
			label='gain',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._gain_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_gain_sizer,
			value=self.gain,
			callback=self.set_gain,
			minimum=0,
			maximum=100,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_gain_sizer, 4, 1, 1, 1)
		self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_c(
			self.GetWin(),
			baseband_freq=cent_freq,
			dynamic_range=100,
			ref_level=50,
			ref_scale=2.0,
			sample_rate=adc_rate,
			fft_size=1024,
			fft_rate=5,
			average=False,
			avg_alpha=None,
			title="Waterfall Plot",
			size=((250,100)),
		)
		self.GridAdd(self.wxgui_waterfallsink2_0.win, 1, 1, 1, 2)
		self.wxgui_fftsink2_1 = fftsink2.fft_sink_c(
			self.GetWin(),
			baseband_freq=0,
			y_per_div=10,
			y_divs=10,
			ref_level=50,
			ref_scale=2.0,
			sample_rate=adc_rate*usrp_inter/usrp_dec,
			fft_size=512,
			fft_rate=5,
			average=False,
			avg_alpha=None,
			title="FFT Plot",
			peak_hold=False,
			size=(200,300),
		)
		self.GridAdd(self.wxgui_fftsink2_1.win, 1, 3, 1, 1)
		self.uhd_usrp_source_0 = uhd.usrp_source(
			device_addr="",
			io_type=uhd.io_type.COMPLEX_FLOAT32,
			num_channels=1,
		)
		self.uhd_usrp_source_0.set_samp_rate(adc_rate)
		self.uhd_usrp_source_0.set_center_freq(cent_freq, 0)
		self.uhd_usrp_source_0.set_gain(gain, 0)
		_inc_dis_sizer = wx.BoxSizer(wx.VERTICAL)
		self._inc_dis_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_inc_dis_sizer,
			value=self.inc_dis,
			callback=self.set_inc_dis,
			label='inc_dis',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._inc_dis_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_inc_dis_sizer,
			value=self.inc_dis,
			callback=self.set_inc_dis,
			minimum=0,
			maximum=100,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_inc_dis_sizer, 5, 1, 1, 1)
		self.gr_freq_xlating_fir_filter_xxx_0 = gr.freq_xlating_fir_filter_ccc(audio_inter/audio_dec, (xlate_filter_taps), 0, adc_rate*usrp_inter/usrp_dec)
		_filter_gain_sizer = wx.BoxSizer(wx.VERTICAL)
		self._filter_gain_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_filter_gain_sizer,
			value=self.filter_gain,
			callback=self.set_filter_gain,
			label='filter_gain',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._filter_gain_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_filter_gain_sizer,
			value=self.filter_gain,
			callback=self.set_filter_gain,
			minimum=0,
			maximum=100,
			num_steps=100,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.Add(_filter_gain_sizer)
		_cent_freq_m_sizer = wx.BoxSizer(wx.VERTICAL)
		self._cent_freq_m_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_cent_freq_m_sizer,
			value=self.cent_freq_m,
			callback=self.set_cent_freq_m,
			label='cent_freq_m',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._cent_freq_m_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_cent_freq_m_sizer,
			value=self.cent_freq_m,
			callback=self.set_cent_freq_m,
			minimum=88e6,
			maximum=108e6,
			num_steps=1000,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_cent_freq_m_sizer, 2, 1, 1, 1)
		_cent_freq_f_sizer = wx.BoxSizer(wx.VERTICAL)
		self._cent_freq_f_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_cent_freq_f_sizer,
			value=self.cent_freq_f,
			callback=self.set_cent_freq_f,
			label='cent_freq_f',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._cent_freq_f_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_cent_freq_f_sizer,
			value=self.cent_freq_f,
			callback=self.set_cent_freq_f,
			minimum=-1e4,
			maximum=1e4,
			num_steps=1000,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.GridAdd(_cent_freq_f_sizer, 3, 1, 1, 1)
		self.blks2_rational_resampler_xxx_0 = blks2.rational_resampler_ccc(
			interpolation=usrp_inter,
			decimation=usrp_dec,
			taps=None,
			fractional_bw=None,
		)

		##################################################
		# Connections
		##################################################
		self.connect((self.uhd_usrp_source_0, 0), (self.blks2_rational_resampler_xxx_0, 0))
		self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_waterfallsink2_0, 0))
		self.connect((self.blks2_rational_resampler_xxx_0, 0), (self.gr_freq_xlating_fir_filter_xxx_0, 0))
		self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_fftsink2_1, 0))

	def get_usrp_inter(self):
		return self.usrp_inter

	def set_usrp_inter(self, usrp_inter):
		self.usrp_inter = usrp_inter
		self.set_xlate_filter_taps(firdes.low_pass(1, self.adc_rate*self.usrp_inter/self.usrp_dec, 125000, 25000, firdes.WIN_HAMMING, 6.76))
		self.wxgui_fftsink2_1.set_sample_rate(self.adc_rate*self.usrp_inter/self.usrp_dec)

	def get_usrp_dec(self):
		return self.usrp_dec

	def set_usrp_dec(self, usrp_dec):
		self.usrp_dec = usrp_dec
		self.set_xlate_filter_taps(firdes.low_pass(1, self.adc_rate*self.usrp_inter/self.usrp_dec, 125000, 25000, firdes.WIN_HAMMING, 6.76))
		self.wxgui_fftsink2_1.set_sample_rate(self.adc_rate*self.usrp_inter/self.usrp_dec)

	def get_cent_freq_m(self):
		return self.cent_freq_m

	def set_cent_freq_m(self, cent_freq_m):
		self.cent_freq_m = cent_freq_m
		self._cent_freq_m_slider.set_value(self.cent_freq_m)
		self._cent_freq_m_text_box.set_value(self.cent_freq_m)
		self.set_cent_freq(self.cent_freq_m+self.cent_freq_f)

	def get_cent_freq_f(self):
		return self.cent_freq_f

	def set_cent_freq_f(self, cent_freq_f):
		self.cent_freq_f = cent_freq_f
		self._cent_freq_f_slider.set_value(self.cent_freq_f)
		self._cent_freq_f_text_box.set_value(self.cent_freq_f)
		self.set_cent_freq(self.cent_freq_m+self.cent_freq_f)

	def get_adc_rate(self):
		return self.adc_rate

	def set_adc_rate(self, adc_rate):
		self.adc_rate = adc_rate
		self.uhd_usrp_source_0.set_samp_rate(self.adc_rate)
		self.set_xlate_filter_taps(firdes.low_pass(1, self.adc_rate*self.usrp_inter/self.usrp_dec, 125000, 25000, firdes.WIN_HAMMING, 6.76))
		self.wxgui_fftsink2_1.set_sample_rate(self.adc_rate*self.usrp_inter/self.usrp_dec)
		self.wxgui_waterfallsink2_0.set_sample_rate(self.adc_rate)

	def get_xlate_filter_taps(self):
		return self.xlate_filter_taps

	def set_xlate_filter_taps(self, xlate_filter_taps):
		self.xlate_filter_taps = xlate_filter_taps
		self.gr_freq_xlating_fir_filter_xxx_0.set_taps((self.xlate_filter_taps))

	def get_inc_dis(self):
		return self.inc_dis

	def set_inc_dis(self, inc_dis):
		self.inc_dis = inc_dis
		self._inc_dis_slider.set_value(self.inc_dis)
		self._inc_dis_text_box.set_value(self.inc_dis)

	def get_gain(self):
		return self.gain

	def set_gain(self, gain):
		self.gain = gain
		self._gain_slider.set_value(self.gain)
		self._gain_text_box.set_value(self.gain)
		self.uhd_usrp_source_0.set_gain(self.gain, 0)

	def get_filter_gain(self):
		return self.filter_gain

	def set_filter_gain(self, filter_gain):
		self.filter_gain = filter_gain
		self._filter_gain_slider.set_value(self.filter_gain)
		self._filter_gain_text_box.set_value(self.filter_gain)

	def get_cent_freq(self):
		return self.cent_freq

	def set_cent_freq(self, cent_freq):
		self.cent_freq = cent_freq
		self.uhd_usrp_source_0.set_center_freq(self.cent_freq, 0)
		self.wxgui_waterfallsink2_0.set_baseband_freq(self.cent_freq)

	def get_audio_rate(self):
		return self.audio_rate

	def set_audio_rate(self, audio_rate):
		self.audio_rate = audio_rate

	def get_audio_inter(self):
		return self.audio_inter

	def set_audio_inter(self, audio_inter):
		self.audio_inter = audio_inter

	def get_audio_dec(self):
		return self.audio_dec

	def set_audio_dec(self, audio_dec):
		self.audio_dec = audio_dec

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 = USRP2_WX()
	tb.Run(True)

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to