Simple UHD Transceiver Class

I wrote a simple transceiver class for the USRP1 (GNURadio) using the new UHD interface.

The class allows you to send and receive data.  What you fill in for the data is up to you.  Currently, the class performs simple energy detection (sends a 100 sample burst with constant envelope) and works when you hook the RX up to the TX on the Basic RX/TX boards (make sure you have proper attenuation as to not break the daughterboards).  But, with some simple modification, you can have it do more sophisticated processing.

The class creates two queues and three threads.

One queue is the TX queue and the other the RX queue. The TX queue is a vector of pointers to complex float vectors (variable length) and are waveforms to be transmitted. The RX queue is a vector of pointers to complex float vectors (const size) and are the data blocks received from the radio.

The three threads are the TX thread, the RX thread, and the processing thread.

The TX thread wakes up every 100ms and looks at the TX queue and sends any waveforms that are present.  The RX thread runs continuously and receives datablocks from the radio. The processing thread checks the RX queue and processes any blocks that are present on it.  Having an RX queue, RX thread, and processing thread allows the software to continually receive data without dropping packets and leaves the choice up to the software as to which packets to process.  For example, if the processing thread runs slower than the samples coming in (slower than real time), it may choose to intelligently process the remaining blocks instead of dropping data on the floor.  This would allow the processing thread to “catch up.”

The TX thread can be modified as to send the waveforms out immediately instead of on a queue for servicing.

I hope all this makes sense.

The code can be downloaded here.  I used this to compile:

g++ main.cpp SimpleTransceiver.cpp -lboost_thread -luhd -I/opt/uhd/include -L/opt/uhd/lib

Bugs, questions, comments welcomed.


USRP / Simulink Interface

I had been looking for some time for an interface for the USRP/GNU Radio to MATLAB Simulink. Well, I went looking through the MATLAB forums today and saw that someone responded to my post.  I checked the GNU Radio forums to make sure this information was seen to the users of that listserv.  I found where it was announced on there though the link didn’t work.  However, I did some searching and found the interface here.