|
Hello,
I have a question about the details of transmitting using gnuradio. I have set up a 2x2 MIMO transmitter using 2 USRP2's (or N200's) that are connected via a MIMO cable. In C++, I initialize a single USRP sink, and set the # channels to 2 (excluding the other settings). I am currently using the uhd send() function to transmit data, and my first question is: Does issuing a single send() function transmit samples on both USRP2's simultaneously, to achieve MIMO spatial diversity? I also want to send different samples on each USRP2, to achieve MIMO spatial multiplexing. Since the buffer that is passed to the send() function is a vector, does specifying a vector of size 2, with each vector holding different data, do the trick? In that case, to achieve MIMO diversity, the 2 vectors would have to carry the same data, correct? Thanks, Lara _______________________________________________ Discuss-gnuradio mailing list [hidden email] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio |
|
On 02/11/2013 02:51 PM, Lara Deek wrote: > Hello, > > I have a question about the details of transmitting using gnuradio. I > have set up a 2x2 MIMO transmitter using 2 USRP2's (or N200's) that > are connected via a MIMO cable. In C++, I initialize a single USRP > sink, and set the # channels to 2 (excluding the other settings). > > I am currently using the uhd send() function to transmit data, and my > first question is: Does issuing a single send() function transmit > samples on both USRP2's simultaneously, to achieve MIMO spatial > diversity? > > I also want to send different samples on each USRP2, to achieve MIMO > spatial multiplexing. Since the buffer that is passed to the send() > function is a vector, does specifying a vector of size 2, with each > vector holding different data, do the trick? In that case, to achieve > MIMO diversity, the 2 vectors would have to carry the same data, > correct? > Well in gnuradio, you dont have access to the send function. The scheduler will deliver two streams of equal length (from 2 ports). Inside of gr-uhd, internally the send() routine takes as an argument a vector of points, in this case of size 2. If you are curious about the UHD API usage, there is an example/rx_multi_samples.cpp in uhd. Its RX, but the usage of the streamer and 2 channels is very similar. -josh > Thanks, > Lara > > _______________________________________________ > Discuss-gnuradio mailing list > [hidden email] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > _______________________________________________ Discuss-gnuradio mailing list [hidden email] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio |
|
Thank you Josh for your reply!
> Well in gnuradio, you dont have access to the send function. I created a usrp sink using uhd_make_usrp_sink(), and using the pointer to the multi_usrp that is returned from calling get_device() on the usrp sink variable, I access send() (ofcourse including the necessary uhd libraries). In fact, the method I use to access the send() function is the same as that used in the gr_uhd_usrp_sink.cc work() and start() functions. > The > scheduler will deliver two streams of equal length (from 2 ports). I use the uhd send() function to transmit data, as shown in rx_multi_samples.cpp for the receiver, and I actually referred to tx_bursts.cpp to implement the transmitter. Then I guess to control the data [source] in the streams, I would have to transmit samples from a .dat file (as done in tx_samples_from_file.cpp) using an ifstream, correct? Can I avoid the gnuradio usrp_sink scheduler by doing this? I also want to control when to use MIMO vs SISO, sometimes I only want to use a single antenna/transmitter. I can't find a method to specify which usrp/channel to use in send(). Is there a way to transmit on a single antenna/channel in a MIMO setting? There's set_antenna() in gr-uhd (set_tx_antenna() in UHD multi_usrp.hpp), can it be used to implement this? Thanks again, Lara |
|
On 02/12/2013 01:38 PM, Lara Deek wrote: > Thank you Josh for your reply! > >> Well in gnuradio, you dont have access to the send function. > > I created a usrp sink using uhd_make_usrp_sink(), and using the pointer to > the multi_usrp that is returned from calling get_device() on the usrp sink > variable, I access send() (ofcourse including the necessary uhd libraries). > In fact, the method I use to access the send() function is the same as that > used in the gr_uhd_usrp_sink.cc work() and start() functions. > >> The >> scheduler will deliver two streams of equal length (from 2 ports). > > I use the uhd send() function to transmit data, as shown in > rx_multi_samples.cpp for the receiver, and I actually referred to > tx_bursts.cpp to implement the transmitter. Then I guess to control the data > [source] in the streams, I would have to transmit samples from a .dat file > (as done in tx_samples_from_file.cpp) using an ifstream, correct? Can I > avoid the gnuradio usrp_sink scheduler by doing this? Of course, you can use the same API (UHD) that the gr-uhd component. So, you dont really need to make a usrp sink block, but, this method works too :-) > > I also want to control when to use MIMO vs SISO, sometimes I only want to > use a single antenna/transmitter. I can't find a method to specify which > usrp/channel to use in send(). Is there a way to transmit on a single > antenna/channel in a MIMO setting? There's set_antenna() in gr-uhd > (set_tx_antenna() in UHD multi_usrp.hpp), can it be used to implement this? > It depends how quick you need to be able to reconfigure. You could 1) send out zeros to one of the channels when in single output (quick) 2) tear down the device object and make a new one for one channel (not quick) 3) tear down the streamer, and create a one channel one (not quick) 4) make two streamers, and feed them both TX data for MIMO, and just one for SISO -josh > Thanks again, > Lara > > > > -- > View this message in context: http://gnuradio.4.n7.nabble.com/How-to-implement-MIMO-transmissions-tp39546p39574.html > Sent from the GnuRadio mailing list archive at Nabble.com. > > _______________________________________________ > Discuss-gnuradio mailing list > [hidden email] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > _______________________________________________ Discuss-gnuradio mailing list [hidden email] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio |
| Powered by Nabble | Edit this page |
