Working with Software Defined Radio – My thoughts

Hi there! I have been busy working on quite a number of projects, one of which is making my own Software Defined Radio (SDR) transmitters and receivers. My, it really is a paradigm shift! In this article, I will talk about FPGAs for use in SDRs, since that’s what I am working on now, and also, give a general overview on why I think SDRs will be the way to go.

Quoting from the ARRL’s website, “Software Defined Radio attempts to place much or most of the complex signal handling involved in communications receivers and transmitters into the digital (DSP)┬ástyle.” Well, what this means is that parts of the signal processing chain, like filters and mixers, which are traditionally implemented as physical circuits, are now done digitally. That could be a computer doing the processing in software, or an FPGA chip that has been configured to do the processing.

I have a Terasic DE-0 Nano FPGA board, and it has a Cyclone IV FPGA chip (pictured below). As of now, I am working on getting simple things like AM and FM modulation to work. But then the question, why do I call it a paradigm shift?

Terasic DE0 Nano
Terasic DE0 Nano

When you get a new FPGA board, the FPGA chip does nothing. It isn’t configured for anything. If you want it to do anything, you must use a Hardware Description Language (HDL) to do so. A code example using a HDL called Verilog is pictured below:

verilog sample
Verilog code sample for a binary down counter

Omg! Sooooo confusing right? And even if you have had experience with software programming languages, like C or C++, the transition to a HDL can be quite confusing. Why? The reason is simply, as the name suggests, is because it is a *Hardware Description* language! Unlike programming, where the computer does everything step by step and in order, a HDL actually describes what the hardware is supposed to do. A FPGA is versatile in the sense that a single chip could do many different things at once. One part of the chip could be responsible for signal processing, and another part of the chip could be meant to control stuff or do digital logic, and this happens concurrently.

Basically, if you want to do anything on the FPGA, like a mixer for example, you got to do it digitally. No more of the usual analog stuff like using diodes and transformers or Gilbert Cells. You have to think about things from a hardware design point of view, and more specifically, a digital hardware design point of view. You may need to know how things like a RF mixer work mathematically as well.

Older hams may be thinking, why should I do this, when I can do everything using traditional circuits, like ICs, transistors, or even tubes! Simply because of versatility! A SDR’s capability can be changed! You could configure different kinds of modulation schemes in a SDR, or implement filters in a SDR.

In fact, check out this awesome piece of software called GNU Radio!

Image taken from GNU Radio site
Image taken from GNU Radio site

With the appropriate hardware like a HackRF, USRP, or even a plain old RTL-SDR, you can drag and drop elements like filters and demodulators, and even get the software to plot out a frequency spectrum for you! SDRs are really versatile pieces of equipment. Even Icom is going down the road of SDRs with their IC-7300, which uses FPGAs in the design. Who knows? Maybe one day, you might be able to upgrade your radio’s capabilities by downloading an update!

In essence, I think that SDRs are great, and while the workings of a SDR may be a bit technical to some (including myself! =P), I think as hams, we should spend the time to learn about them, and share our knowledge with others, so that in the future, the workings of SDRs will be more accessible to all of us. That being said, I may post up examples using FPGAs and Verilog HDL.

I hope you’ve enjoyed this article! 73!