Basic Frequency Hopping In GNURadio

I am more-or-less a beginner with SDR, but I’ve had a few weeks to familiarize myself with GNURadio using a set of old USRPs. One of my first projects trying to learn how to use both was developing a short, simple script for some crude frequency hopping. The USRPs and the USRP blocks in GNURadio provided methods for synchronizing hops using timing synchronization functions with a PPS. If you’re familiar, those were things like set_time_source() (which initializes the USRP with a PPS connected externally), set_time_next_pps(), get_time_last_pps(), get_time_now(), etc… Essentially you had a handy way of timing synchronization for issuing commands in both transmitter and receiver.

Recently I started work with a set of LimeSDR USB. I noticed that there isn’t exactly a port for an external PPS, nor is there support for any sort of external clock synchronization in the gr-limesdr source and sink blocks. Additionally, running a timeit on the limesdr.set_rf_freq(), I found that the time it takes to change the center frequency in the LimeSDR is around 30 milliseconds, doing it that way.

Exactly how fast can LimeSDR be made to hop and what is the best way to go about achieving that rate? I’m drawing the conclusion that doing it through GNURadio’s libraries probably isn’t the best.

I’m curious to know as well if there’s any introductory literature on writing VHDL for the LimeSDR. Maybe it would be better to move on to that.

1 Like