View all updates Feb 05, 2020

Developing SDR Applications with simpleFE

by Ning Wang

simpleFE can be used as a software defined radio (SDR) baseband system. It is equipped with an I+Q ADC and an I+Q DAC that runs at up to 7.5 MHz. You can build quite a few applications on top of simpleFE. Let’s start with the "hello world" of communication applications: BPSK modulation.

Suppose our message is a random sequence of bits, 01011101.... The first step before sending this signal to air involves mapping those to symbols. BPSK modulation maps the bits to 1, -1, 1, -1, -1, -1, 1, -1, etc. Then the waveform is generated using the root raised cosine pulse shaping.

This aritcle explains the details of a typical pulse shaping design. The symbol rate R is set to 100 kHz.

Now we will use simpleFE to make this waveform real! But first, download and install the software, load the firmware, and boot simpleFE.

Using GRC

SimpleFE is now ready to interface with GNURadio. Install GNURadio, then build and install gr-simplefe, which is included in the source tree. After that, run:


You will see that the simpleFE sink and source are now available.

Next, create a flow graph like this:

Set the Sample Rate to 1 MHz. This will mean that, for each symbol period, there will be 10 samples and thus the Samples/Symbol should set to 10. For BPSK, the number of constellation points is set to two, and there is no difference whether or not we use differential encoding. The raised cosine filter roll-off factor is set to 0.35. This means the bandwidth of the signal will be 50 k * 1.35.

And that’s it! You’ve turned simpleFE into a BPSK modulator.

Write You Own Code

GNURadio is both powerful and easy to use. Once you are familiar with the various processing blocks, you will be dragging, dropping, and connecting them in no time, which is quite handy for certain types of research work.

But you can also write your own code, especially if you want to:

  • Know exactly what's going on under the hood,
  • Ensure that all relevant math is included in your code, or
  • Make your code run faster and more efficiently.

To get started, refer to the sample code in examples/bpsk. But first, you will first need to compile libdsp:

cd libdsp
mkdir build
cd build
cmake ..

This will provide a block convolution engine using overlap-and-add. Next, go to examples/bpsk and type:


You should see a waveform generated from the TX_I port:

Reconstruction Filter

We designed a simple Sallen-Key 500 kHz low pass filter. You can easily home brew this circuit yourself (or just use a breadboard, as it’s rather low frequency and the layout is not very important).

With this filter, the waveform now looks like:

Which is quite pretty!

About the Author

Ning Wang


$693 raised

of $7,500 goal

9% Funded Time Expired
Feb 27 2020

Product Choices



One simpleFE mixed-signal frontend.


Ning Wang

I am a DSP engineer with a passion for communication and control circuits. I like home brew electronics and maintain a blog on the basics of signal processing and communication.

Ning Wang

Tingting Miao

See Also

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects: