Recording I-Q stream with uhd_rx_cfile

Hello,

I want to transmit a continuous stream of 1’s or 0’s (with bpsk
modulation)
and record the received I-Q stream. I am trying to use the
‘digital_bert_tx.py’ code for transmission and the uhd_rx_cfile code
(gr-uhd/apps) for reception. Thereafter, I use the read_complex_binary
code
to read the data in Matlab.

Surprisingly, I am receiving similar type of I-Q stream (around 0.3 + j
0.3) for both 1 and 0 transmission. I am using the following commands:

self._bits = gr.vector_source_b([1,], True) (I
either
transmit infinite 1 or infinit 0’s. When I transmit infinite 0’s, I
replace
‘1’ by ‘0’ in the command)

./digital_bert_naz_tx.py -r 5M -m bpsk -f 450M --gain 0.1
–non-differential (I am using non-differential since I want to see
the
different amplitude levels for '1’s or 0’s)

./uhd_rx_cfile -N 1000 -f 450M --samp-rate 5M file.dat (Since I am
using
bpsk, sample-rate should be equal to bit rate, I assume)

Ideally, the I-Q stream of bpsk should show 180 degree phase shift for 1
and 0 transmission. I am getting the same value for both transmission.
Can
anyone suggest where I am making mistakes?

Thanks,

Nazmul


Muhammad Nazmul I.

Graduate Student
Electrical & Computer Engineering
Wireless Information & Networking Laboratory
Rutgers, USA.

On Thu, May 24, 2012 at 7:07 PM, Nazmul I.
[email protected] wrote:

Ideally, the I-Q stream of bpsk should show 180 degree phase shift for 1 and
0 transmission. I am getting the same value for both transmission. Can
anyone suggest where I am making mistakes?

Thanks,

Nazmul

Nazmul,
Hard to say from this info. A few things to note on, though. First,
1000 samples isn’t that much. There are startup transients in
hardware, so you might just be seeing effects of those. I’d capture
ten thousand or a million and just read out the last 1000.

Also, the transmitter and receiver are running on two different
clocks, so their frequency and phases aren’t going to match, unless
you’ve locked them to the same source. It’d be hard to say what you’ll
see, exactly, due to this. That’s why we use recovery loops for all of
these things.

What I would recommend is to create a transmitter that transmits a
long string of 1’s followed by a long string of 0’s (100 or 200 each).
When you plot the last 1000 samples, you should see something that
moves between two amplitudes. I wouldn’t trust what you see from one
run to another, so just do it at the same time.

Tom