Transmitting with 4 antennas

I am part of the Hydra group at UT Austin
(http://hydra.ece.utexas.edu). We have developed a MIMO prototype
utilizing GNU Radio & the USRP board. The physical layer for our
design is based on the draft standard for IEEE 802.11n. Our current
system is designed to support 2 antennas (i.e. utilizing one USRP
board per node), however, we would like to extend this to 4 antennas.

We are currently following the directions on the ‘USRPClockingNotes’
page for synchronizing the local oscillators of two USRP boards. The
only problem that remains is aligning the samples. I have been looking
through the GNU Radio codebase for some insight on how to do this. I
found ‘usrp_multi.py’ which describes how to do this for the receive
chain. However, I also have to be able to align samples for the
transmit chain.

Does anyone have any experience with transmitting waveforms using
multiple USRP boards? Specifically, do you have to go through any
special process to ensure that transmitted samples are properly
aligned?


Ketan M.
http://www.ece.utexas.edu/~mandke

Ketan M. wrote:

through the GNU Radio codebase for some insight on how to do this. I
found ‘usrp_multi.py’ which describes how to do this for the receive
chain. However, I also have to be able to align samples for the
transmit chain.

Does anyone have any experience with transmitting waveforms using
multiple USRP boards? Specifically, do you have to go through any
special process to ensure that transmitted samples are properly
aligned?

Yes you do need special measures to make sure the samples are aligned.
I am the author of the usrp_multi code (and the modified usrp firmware)
I was working on the transmit site but with the current framework this
got quite complicated.

The m-blocks framework which is currently in development will make it
much easier to synchronize multiple receive or multiple transmit streams
on seperate USRPs.
So this work has been on hold waiting for the m-blocks become available
and usuable in the main tree.

One other thing is the phase relationship between the different USRPs.
At the moment we use the upconverters (DUCs) of the ADC/DAC chips.
Unfortunately the starting phase of these can not be set.
Only after power-up these are in a known state.
After you have used the usrp these are in an unknown state.
This means that every time you start a gnuradio script the phase
relationship between the multiple USRPs will have a fixed unknown phase
difference.

Depending on your application this can be a problem.

The only solution is not to use the DUCs in the DAC but do the
upconversion in the FPGA.
This can be developed but you would probably also have to disable some
other functionality because the FPGA is already very full.
(disable the RX halfbandfilters, or reduce the number of RX channels)

I hope this clears it up for you.

Greetings,
Martin DvH

Olifantasia
Software Defined Radio, GnuRadio, USRP development