USRP2 FM TX and FM RX working together

Hello community!

I initiated myself in GNU radio two weeks ago and I am learning as fast
as I
can. To begin with, I decided to play with GRC and my URSP2.
I successfully built a FM modulator that works fine.
I successfully built a FM demodulator that works fine.
But there are still several things I do not understand.

While building the FM modulator:
1)Wave file source
2)Rational resampler
3)LPF
4)Rational resampler
5)Frequency Mod
6)Multiply const
7)USRP2 sink

Why is block 6 necessary? I tried with lots of values over 2 and all of
them
are ok. I realized that the smaller the number, the higher the noise in
my
receiver (my mobile phone). Is it related to the amplitude of the
modulated
signal?

Another thing very strange is that if I create a GRC file with both,
transmitter and receiver with exactly the same blocks and the same
parameters I cannot hear any demodulated signal. I can see information
with
a FFT block connected to the receiver chain, and I am able to demodulate
the
signal with my mobile phone when the example is running but in my
computer I
do not hear anything else besides noise mixed with some sort of
non-understandable signal. Thus, I guess I have to change something in
the
receiver chain although it works alone in my FM demodulator. I changed
every
single parameter but I cannot get any improvement.

Any suggestions?

Many thanks in advance,
Jorge.

Hi Jorge,
Can you copy the .grc file you created?

I forgot to mention, but I get a lot of messages like:
…SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSaUSSSSSSSSSSSSSSS…

I did the calculations and with the 104 interpolation USRP sink and 208
decimation USRP source and 16 bits per sample means that less than
100Mbs
are taken from the 1Gbps ethernet wire. So there souldn’t be any
overload.

Furthermore I still don’t know why is necessary the multiply cont block
in
the modulator.

Can anybody help me? I am very close !

Regards,
Jorge.

This is my grc generated file. It is probably that now the sample rates
are
not adjusted because I tried everything to make my receiver work.
I would appreciate any help. I remind you that modulator and demodulator
work when they are alone but they don’t when running together.

Many thanks,
Jorge.

GRC CODE:

<flow_graph>
Wed Sep 22 08:14:26 2010


variable_slider

id tune_filter - _enabled True - label LPF Cutoff Freq - value 75000 - min 15000 - max 150000 - num_steps 1000 - style wx.SL_HORIZONTAL - converver float_converter - grid_pos - notebook - _coordinate (0, 127) - _rotation 0 - gr_frequency_modulator_fc - id gr_frequency_modulator_fc_0 - _enabled True - sensitivity 0.980 - _coordinate (454, 315) - _rotation 0 - blks2_rational_resampler_xxx - id blks2_rational_resampler_xxx_0_0 - _enabled True - type fff - decim 1 - interp 5 - taps [] - fractional_bw 0 - _coordinate (233, 68) - _rotation 0 - note - id Chain1 - _enabled True - note MODULATOR - _coordinate (233, 9) - _rotation 0 - note - id Chain1_0 - _enabled True - note DEMODULATOR - _coordinate (181, 427) - _rotation 0 - blks2_rational_resampler_xxx - id blks2_rational_resampler_xxx_1 - _enabled True - type fff - decim 1 - interp 4 - taps [] - fractional_bw 0 - _coordinate (699, 122) - _rotation 0 - wxgui_fftsink2 - id wxgui_fftsink2_0_0 - _enabled True - type complex - title FFT Plot - samp_rate 200000 - baseband_freq 2000000 - y_per_div 10 - y_divs 10 - ref_level 50 - fft_size 512 - fft_rate 50 - peak_hold False - average False - avg_alpha 0 - grid_pos - notebook - _coordinate (370, 568) - _rotation 0 - audio_sink - id audio_sink_0 - _enabled True - samp_rate 32000 - device_name plughw:0,0 - ok_to_block True - num_inputs 1 - _coordinate (607, 648) - _rotation 0 - usrp2_sink_xxxx - id usrp2_sink_xxxx_0 - _enabled True - type complex - interface - mac_addr - interpolation 104 - frequency fm_freq_mod - lo_offset float('inf') - gain 0 - _coordinate (874, 283) - _rotation 0 - usrp2_source_xxxx - id usrp2_source_xxxx_0 - _enabled True - type complex - interface - mac_addr - decimation 64 - frequency tune_osc_dem - lo_offset float('inf') - gain 20 - _coordinate (162, 521) - _rotation 0 - variable_slider - id fm_freq_mod - _enabled True - label FM frequency modulator - value 94000000 - min 0 - max 110000000 - num_steps 300 - style wx.SL_HORIZONTAL - converver float_converter - grid_pos - notebook - _coordinate (0, 253) - _rotation 0 - variable_slider - id tune_osc_dem - _enabled True - label Tunned frequency demodulator - value 94000000 - min 88000000 - max 108000000 - num_steps 800 - style wx.SL_HORIZONTAL - converver float_converter - grid_pos - notebook - _coordinate (1, 1) - _rotation 0 - gr_wavfile_source - id gr_wavfile_source_0 - _enabled True - file /home/thales/Desktop/outfile2.wav - repeat True - nchan 1 - _coordinate (223, 186) - _rotation 180 - gr_multiply_const_vxx - id gr_multiply_const_vxx_1 - _enabled True - type complex - const 32000 - vlen 1 - _coordinate (645, 315) - _rotation 0 - blks2_rational_resampler_xxx - id blks2_rational_resampler_xxx_1_0_0 - _enabled True - type ccc - decim 25 - interp 32 - taps [] - fractional_bw 0 - _coordinate (371, 467) - _rotation 0 - low_pass_filter - id low_pass_filter_0 - _enabled True - type fir_filter_ccf - decim 2 - interp 1 - gain 10 - samp_rate 256000 - cutoff_freq tune_filter - width 5000 - window WIN_HAMMING - beta 6.76 - _coordinate (583, 443) - _rotation 0 - blks2_fm_demod_cf - id blks2_fm_demod_cf_0 - _enabled True - chan_rate 128000 - audio_decim 4 - deviation 75000 - audio_pass 1000 - audio_stop 16000 - gain 20.0 - tau 75e-6 - _coordinate (784, 443) - _rotation 0 - low_pass_filter - id low_pass_filter_0_0 - _enabled True - type interp_fir_filter_fff - decim 1 - interp 1 - gain 1 - samp_rate 160000 - cutoff_freq 1.5e3 - width 2e3 - window WIN_HAMMING - beta 6.76 - _coordinate (458, 44) - _rotation 0 - options - id top_block - _enabled True - title - author - description - window_size 1280, 1024 - generate_options wx_gui - category Custom - run True - realtime_scheduling - _coordinate (2, 384) - _rotation 0 - low_pass_filter_0_0 blks2_rational_resampler_xxx_1 0 0 - blks2_rational_resampler_xxx_0_0 low_pass_filter_0_0 0 0 - blks2_rational_resampler_xxx_1 gr_frequency_modulator_fc_0 0 0 - gr_frequency_modulator_fc_0 gr_multiply_const_vxx_1 0 0 - gr_multiply_const_vxx_1 usrp2_sink_xxxx_0 0 0 - gr_wavfile_source_0 blks2_rational_resampler_xxx_0_0 0 0 - usrp2_source_xxxx_0 blks2_rational_resampler_xxx_1_0_0 0 0 - usrp2_source_xxxx_0 wxgui_fftsink2_0_0 0 0 - blks2_fm_demod_cf_0 audio_sink_0 0 0 - blks2_rational_resampler_xxx_1_0_0 low_pass_filter_0 0 0 - low_pass_filter_0 blks2_fm_demod_cf_0 0 0

Jorge,

Your sample rates do not match. The sample rates your USRP2 is operating
at is fixed for a given decimation/interpolation, and you must choose
sample rates in your upstream and downstream blocks to match.

For instance, in your receiver chain, you are using a decimation rate of
64. This means that your USRP2 will provide samples to the rest of your
flowgraph at 1.5625Msps. This is connected to an FFT sink operating at
200ksps – this is not correct. If you want to operate at 200ksps you
must provide a resampling block to get there. Likewise, your rational
resampler at (32/25) outputs a sample rate of (1.5625e6 * (32/25)) = 2e6
samples per second. Your low pass filter which follows is expecting a
sample rate of 256k. This will cause the filter coefficients to be
incorrectly calculated, and eventually will cause over/underruns when
you finally get to a block which operates at a fixed sample rate, like
your audio sink.

The “SSSSSSSSSSSS” you are seeing is caused by the audio sink being
overrun by providing it with 250ksps when it is expecting 32ksps.

Nick

Sorry, in my previous email the code was corrupted… This is the right
code
of my GRC:

<?xml version='1.0' encoding='ASCII'?>

<flow_graph>
Wed Sep 22 08:14:26 2010

variable_slider

id
tune_filter


_enabled
True


label
LPF Cutoff Freq


value
75000


min
15000


max
150000


num_steps
1000


style
wx.SL_HORIZONTAL


converver
float_converter


grid_pos



notebook



_coordinate
(0, 127)


_rotation
0



gr_frequency_modulator_fc

id
gr_frequency_modulator_fc_0


_enabled
True


sensitivity
0.980


_coordinate
(454, 315)


_rotation
0



blks2_rational_resampler_xxx

id
blks2_rational_resampler_xxx_0_0


_enabled
True


type
fff


decim
1


interp
5


taps
[]


fractional_bw
0


_coordinate
(233, 68)


_rotation
0



note

id
Chain1


_enabled
True


note
MODULATOR


_coordinate
(233, 9)


_rotation
0



note

id
Chain1_0


_enabled
True


note
DEMODULATOR


_coordinate
(181, 427)


_rotation
0



blks2_rational_resampler_xxx

id
blks2_rational_resampler_xxx_1


_enabled
True


type
fff


decim
1


interp
4


taps
[]


fractional_bw
0


_coordinate
(699, 122)


_rotation
0



wxgui_fftsink2

id
wxgui_fftsink2_0_0


_enabled
True


type
complex


title
FFT Plot


samp_rate
200000


baseband_freq
2000000


y_per_div
10


y_divs
10


ref_level
50


fft_size
512


fft_rate
50


peak_hold
False


average
False


avg_alpha
0


grid_pos



notebook



_coordinate
(370, 568)


_rotation
0



audio_sink

id
audio_sink_0


_enabled
True


samp_rate
32000


device_name
plughw:0,0


ok_to_block
True


num_inputs
1


_coordinate
(607, 648)


_rotation
0



usrp2_sink_xxxx

id
usrp2_sink_xxxx_0


_enabled
True


type
complex


interface



mac_addr



interpolation
104


frequency
fm_freq_mod


lo_offset
float(‘inf’)


gain
0


_coordinate
(874, 283)


_rotation
0



usrp2_source_xxxx

id
usrp2_source_xxxx_0


_enabled
True


type
complex


interface



mac_addr



decimation
64


frequency
tune_osc_dem


lo_offset
float(‘inf’)


gain
20


_coordinate
(162, 521)


_rotation
0



variable_slider

id
fm_freq_mod


_enabled
True


label
FM frequency modulator


value
94000000


min
0


max
110000000


num_steps
300


style
wx.SL_HORIZONTAL


converver
float_converter


grid_pos



notebook



_coordinate
(0, 253)


_rotation
0



variable_slider

id
tune_osc_dem


_enabled
True


label
Tunned frequency demodulator


value
94000000


min
88000000


max
108000000


num_steps
800


style
wx.SL_HORIZONTAL


converver
float_converter


grid_pos



notebook



_coordinate
(1, 1)


_rotation
0



gr_wavfile_source

id
gr_wavfile_source_0


_enabled
True


file
/home/thales/Desktop/outfile2.wav


repeat
True


nchan
1


_coordinate
(223, 186)


_rotation
180



gr_multiply_const_vxx

id
gr_multiply_const_vxx_1


_enabled
True


type
complex


const
32000


vlen
1


_coordinate
(645, 315)


_rotation
0



blks2_rational_resampler_xxx

id
blks2_rational_resampler_xxx_1_0_0


_enabled
True


type
ccc


decim
25


interp
32


taps
[]


fractional_bw
0


_coordinate
(371, 467)


_rotation
0



low_pass_filter

id
low_pass_filter_0


_enabled
True


type
fir_filter_ccf


decim
2


interp
1


gain
10


samp_rate
256000


cutoff_freq
tune_filter


width
5000


window
WIN_HAMMING


beta
6.76


_coordinate
(583, 443)


_rotation
0



blks2_fm_demod_cf

id
blks2_fm_demod_cf_0


_enabled
True


chan_rate
128000


audio_decim
4


deviation
75000


audio_pass
1000


audio_stop
16000


gain
20.0


tau
75e-6


_coordinate
(784, 443)


_rotation
0



low_pass_filter

id
low_pass_filter_0_0


_enabled
True


type
interp_fir_filter_fff


decim
1


interp
1


gain
1


samp_rate
160000


cutoff_freq
1.5e3


width
2e3


window
WIN_HAMMING


beta
6.76


_coordinate
(458, 44)


_rotation
0



options

id
top_block


_enabled
True


title



author



description



window_size
1280, 1024


generate_options
wx_gui


category
Custom


run
True


realtime_scheduling



_coordinate
(2, 384)


_rotation
0



<source_block_id>low_pass_filter_0_0</source_block_id>
<sink_block_id>blks2_rational_resampler_xxx_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>blks2_rational_resampler_xxx_0_0</source_block_id>
<sink_block_id>low_pass_filter_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>blks2_rational_resampler_xxx_1</source_block_id>
<sink_block_id>gr_frequency_modulator_fc_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>gr_frequency_modulator_fc_0</source_block_id>
<sink_block_id>gr_multiply_const_vxx_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>gr_multiply_const_vxx_1</source_block_id>
<sink_block_id>usrp2_sink_xxxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>gr_wavfile_source_0</source_block_id>
<sink_block_id>blks2_rational_resampler_xxx_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>usrp2_source_xxxx_0</source_block_id>
<sink_block_id>blks2_rational_resampler_xxx_1_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>usrp2_source_xxxx_0</source_block_id>
<sink_block_id>wxgui_fftsink2_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>blks2_fm_demod_cf_0</source_block_id>
<sink_block_id>audio_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>blks2_rational_resampler_xxx_1_0_0</source_block_id>
<sink_block_id>low_pass_filter_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>blks2_fm_demod_cf_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>

</flow_graph>

Nick,

Now all my sample rates match. But I cannot demodulate the signal.
However,
I tune my FM phone receiver and the transmitted signal is ok. I can
listen
to it perfectly.

This is the message code I get on GRC:
…SSSaUSSSSSSSaUSSSSSSSaUSSSSSSSSaUSSSSSSSaUSSSSSSSS
aUSSSSSSSaUSSSSSSSSaUSSSSSSSSaUSSSSSSSSaUSSSSSSSSSaUSSSSSSS
SaUSSSSSSSSSSaUSSSSSSSSSaUSSSSSSSaUSSSS…

Furthermore I found out that my Ethernet interface is discarding a lot
of
received packages (the ones that carry de demodulated signal to my
computer). See:

~$ ifconfig
eth0 Link encap:Ethernet HWaddr 5c:ff:35:06:ad:06
inet addr:10.0.0.87 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::5eff:35ff:fe06:ad06/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:29666606 errors:0 dropped:75746045 overruns:0
frame:0
TX packets:4750896 errors:0 dropped:0 overruns:0 carrier:0
collisions:26 txqueuelen:10
RX bytes:3107428110 (3.1 GB) TX bytes:2389205908 (2.3 GB)
Memory:f2600000-f2620000

But my interface is in 1000Mbps mode and full duplex.
Why do I have dis problem?

With my configuration I have 15,35Mbps to the USRP2 (Tx) and 3.2Mbps
from
the USRP2 (Rx). Is is by far less than the capacity of the Ethernet
interface which is in this state:

~$ sudo ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Link partner advertised link modes: Not reported
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: No
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: off
Supports Wake-on: pumbag
Wake-on: g
Current message level: 0x00000001 (1)
Link detected: yes

Modulator chain by itself works fine and do the demudulator chain does.
But
together I have this problem of Bandwidth?

Any ideas?

This is my new GRC code:

<?xml version='1.0' encoding='ASCII'?>

<flow_graph>
Thu Sep 23 09:18:32 2010

options

id
top_block


_enabled
True


title



author



description



window_size
1280, 1024


generate_options
wx_gui


category
Custom


run
True


realtime_scheduling



_coordinate
(2, 384)


_rotation
0



note

id
Chain1


_enabled
True


note
MODULATOR


_coordinate
(233, 9)


_rotation
0



variable_slider

id
fm_freq_mod


_enabled
True


label
FM frequency modulator


value
94000000


min
0


max
110000000


num_steps
300


style
wx.SL_HORIZONTAL


converver
float_converter


grid_pos



notebook



_coordinate
(0, 253)


_rotation
0



variable_slider

id
tune_filter


_enabled
True


label
LPF Cutoff Freq


value
75000


min
15000


max
150000


num_steps
1000


style
wx.SL_HORIZONTAL


converver
float_converter


grid_pos



notebook



_coordinate
(0, 127)


_rotation
0



variable_slider

id
tune_osc_dem


_enabled
True


label
Tunned frequency demodulator


value
94000000


min
88000000


max
108000000


num_steps
800


style
wx.SL_HORIZONTAL


converver
float_converter


grid_pos



notebook



_coordinate
(1, 1)


_rotation
0



note

id
Chain1_0


_enabled
True


note
DEMODULATOR


_coordinate
(361, 500)


_rotation
0



gr_frequency_modulator_fc

id
gr_frequency_modulator_fc_0


_enabled
True


sensitivity
0.980


_coordinate
(596, 297)


_rotation
0



gr_multiply_const_vxx

id
gr_multiply_const_vxx_1


_enabled
True


type
complex


const
32000


vlen
1


_coordinate
(797, 297)


_rotation
0



low_pass_filter

id
low_pass_filter_0_0


_enabled
True


type
interp_fir_filter_fff


decim
1


interp
1


gain
1


samp_rate
240000


cutoff_freq
18e3


width
2e3


window
WIN_HAMMING


beta
6.76


_coordinate
(507, 44)


_rotation
0



usrp2_source_xxxx

id
usrp2_source_xxxx_0


_enabled
True


type
complex


interface



mac_addr



decimation
500


frequency
tune_osc_dem


lo_offset
float(‘inf’)


gain
20


_coordinate
(180, 583)


_rotation
0



blks2_rational_resampler_xxx

id
blks2_rational_resampler_xxx_1_0_0


_enabled
True


type
ccc


decim
5


interp
6


taps
[]


fractional_bw
0


_coordinate
(391, 591)


_rotation
0



low_pass_filter

id
low_pass_filter_0


_enabled
True


type
fir_filter_ccf


decim
1


interp
1


gain
20


samp_rate
240000


cutoff_freq
tune_filter


width
5000


window
WIN_HAMMING


beta
6.76


_coordinate
(613, 568)


_rotation
0



blks2_fm_demod_cf

id
blks2_fm_demod_cf_0


_enabled
True


chan_rate
240000


audio_decim
5


deviation
75000


audio_pass
1000


audio_stop
16000


gain
20.0


tau
75e-6


_coordinate
(867, 417)


_rotation
0



audio_sink

id
audio_sink_0


_enabled
True


samp_rate
48000


device_name
plughw:0,0


ok_to_block
False


num_inputs
1


_coordinate
(945, 654)


_rotation
0



gr_wavfile_source

id
gr_wavfile_source_0


_enabled
True


file
/home/thales/Desktop/outfile2.wav


repeat
True


nchan
1


_coordinate
(195, 196)


_rotation
0



blks2_rational_resampler_xxx

id
blks2_rational_resampler_xxx_0_0


_enabled
True


type
fff


decim
1


interp
5


taps
[]


fractional_bw
0


_coordinate
(280, 68)


_rotation
0



usrp2_sink_xxxx

id
usrp2_sink_xxxx_0


_enabled
True


type
complex


interface



mac_addr



interpolation
104


frequency
fm_freq_mod


lo_offset
float(‘inf’)


gain
0


_coordinate
(1011, 265)


_rotation
0



blks2_rational_resampler_xxx

id
blks2_rational_resampler_xxx_1


_enabled
True


type
fff


decim
1


interp
4


taps
[]


fractional_bw
0


_coordinate
(756, 68)


_rotation
0



<source_block_id>blks2_rational_resampler_xxx_1</source_block_id>
<sink_block_id>gr_frequency_modulator_fc_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>gr_multiply_const_vxx_1</source_block_id>
<sink_block_id>usrp2_sink_xxxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>gr_frequency_modulator_fc_0</source_block_id>
<sink_block_id>gr_multiply_const_vxx_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>blks2_rational_resampler_xxx_0_0</source_block_id>
<sink_block_id>low_pass_filter_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>low_pass_filter_0_0</source_block_id>
<sink_block_id>blks2_rational_resampler_xxx_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>gr_wavfile_source_0</source_block_id>
<sink_block_id>blks2_rational_resampler_xxx_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>blks2_fm_demod_cf_0</source_block_id>
<sink_block_id>audio_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>blks2_fm_demod_cf_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>blks2_rational_resampler_xxx_1_0_0</source_block_id>
<sink_block_id>low_pass_filter_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>


<source_block_id>usrp2_source_xxxx_0</source_block_id>
<sink_block_id>blks2_rational_resampler_xxx_1_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>

</flow_graph>

But my interface is in 1000Mbps mode and full duplex.
Why do I have dis problem?

With my configuration I have 15,35Mbps to the USRP2 (Tx) and 3.2Mbps from
the USRP2 (Rx). Is is by far less than the capacity of the Ethernet
interface which is in this state:

How?

   <key>decimation</key>
   <value>500</value>
 </param>

100e6/500 != 3.2Mbps

 <param>
   <key>interpolation</key>
   <value>104</value>
 </param>

100e6/104 != 15,35Mbps

-Josh

schrieb Jorge M. am 2010-09-22 13:10:

I forgot to mention, but I get a lot of messages like:
…SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSaUSSSSSSSSSSSSSSS…

I did the calculations and with the 104 interpolation USRP sink and 208
decimation USRP source and 16 bits per sample means that less than
100Mbs are taken from the 1Gbps ethernet wire. So there souldn’t be any
overload.

Connection capacity is not the problem, but consuming the data.
GNU Radio has no intrinsic concept of sample rate. It processes data in
pipes as far as possible and blocks when sources do not provide data or
sinks do not consume data. The blocks are connected by buffers that are
not infinite in size.
If your input rate (Ethernet) does not match your output rate (Audio),
at some point either the buffers are all empty (underrun) or all buffers
run full (overrun). This is the point where you get notifications in
form of S, aU, aO, etc.
It is your task to calculate the data/sampling rates correct and convert
rates with resamplers.
Maybe you want to have a look at the example FM receiver and compare
your rates with the ones used there.

Furthermore I still don’t know why is necessary the multiply cont block
in the modulator.

This is your volume/gain knob. In GRC you can connect it to a slider and
try different values in real-time.
Depending on your sink data type (complex, short) you have different
ranges for full scale signals.
Generally you would want to scale your signal nearly to the maximum
amplitude to use the full precision, especially when working with
non-floats.


Engineers motto: cheap, good, fast: choose any two
Patrick S.
Student of Telemati_cs_, Techn. University Graz, Austria

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs