I’m using 2 USRP1s to send and receive a simple sine wave using UHD. The
TX/RX frequencies are 2.45 GHz as I have RFX 2400 as daughterboards.
I use the UHD example tx_waveforms to transmit a sine wave of 10 kHz,
sample
rate 250ksps. I received the waveform at the other end using the UHD
example
rx_samples_to_file to dump the output to a binary file. I used a
receiving
sample rate of 250ksps. I used this file as a file source in a grc
flowgraph, hooked up its output to the Oscope sink (after converting the
interleaved short I,Q binary file to complex in the chain). I’m seeing a
clear sine wave, but its frequency is 5kHz, rather than 10 kHz.
So, let’s keep in mind what’s going on here. The Tx side generates a
10KHz signal sampled at
250Ksps (which is then up-sampled to the rate for the ADC). The
resulting 10KHz signal is
then mixed up to 2.45GHz(+/- inherent frequency error). Which
produces a final signal frequency
of 2.45GHz(+/-inherent frequency error)+10KHz.
On Rx, the incoming signal arrives at 2.45GHZ(+/-inherent frequency
error)+10KHz, which is then
down-sampled with a local oscillator set at 2.45GHZ(+/-inherent
frequency error). Which means
that your signal converts to baseband at 10KHz(+/- inherent frequency
error). The inherent
frequency error can be a few PPM, which at 2.45GHz means a few KHz
frequency error. So your
Rx signal may arrive up to a few KHz “off” from where you expect it.
This is rather normal for
synthesized transmitters/receivers with crystal oscillator references.
The crystal oscillator on the USRP1 is “good”, but it’s not
$100.00/apiece “good”. But this frequency
error is entirely normal in RF communications gear.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.