I've been a C++ developer for 10 years. Quite high level. And I am completely new to Digital Signal Processing.

I am trying to implement a Software Defined Radio. Specifically I am trying to receive FM broadcasts, and more importantly DAB+.

I'm on my way to buy a SDR dongle: Basically a box which links an antenna to a tuner and a ADC. The data is then transferred to the computer through a USB cable. Then it can be delivered to my program thank to a library provided by the SDR dongle vendor.

From there my program will need to demodulate the signal. Well I know from Wikipedia that FM encodes the signal using Frequency modulation. And DAB+ is actually using D-QPSK modulation.

I really don't know how can my program process those modulation in order to get the underlying data.

Do you know any good resources over the internet which could help me?

Any good books for newbies?

If those books contains example code, then that'd be a bonus point. But if the book you want to advise are quite "theoretical", then it's quite fine to list them: the goal of all these is for me to understand the whole machinery of Digital Signal Processing, and I do not want to sacrifice theory for practice.

  • 2
    $\begingroup$ Check out GNU Radio for implementations and explanations of signal processing algorithms for software radio. There are also quite a few books dedicated to SDR. $\endgroup$
    – Matt L.
    Commented Jan 15, 2017 at 16:54
  • $\begingroup$ by the way, an RTL-SDR dongle is a receiver, so it contains an ADC (analog-to-digital), not a DAC (digital-to-analog converter)! $\endgroup$ Commented Jan 15, 2017 at 18:32
  • $\begingroup$ @MarcusMüller My bad !! I just fixed this. Thank you for pointing this out ! :-) $\endgroup$ Commented Jan 15, 2017 at 21:02
  • $\begingroup$ Thank you @MattL. :-) I'll have a close look at GNURadio :-) $\endgroup$ Commented Jan 15, 2017 at 21:20

1 Answer 1


Wow, I'm honored by Matt L. doing what I'm often doing: Referring people to GNU Radio.

The project actually has a list of recommended literature, but I don't know how well that'd fit you. It's probably still worth looking into.

Then, regarding QPSK: Well, it's one of the basic constellations, and you'd probably be best off reading a textbook intro to digital communications – I like Proakis' Digital Communication, personally, and the third edition (which sadly reduced the formula count) is available cheaply used from libraries.

Regarding DAB+: It uses a differential QPSK, but not directly on the air, but to drive the subcarriers of an OFDM signal, if I'm not mistaken; so you should understand both, as well as (at least superficially) the channel coding used. This again calls for some textbook knowledge!

There's already a Free and Open Source DAB+ transmitter implementation – opendigitalradio is the home of that.

There used to be a GNU Radio DAB (+) transceiver, maintained by Andreas Müller (not related to me, AFAIK), but I think it's for a long-gone/unsupported version of GNU Radio, so compiling that on a modern system would be a challenge already. However, looking at the source code and flow graphs might be pretty enlightening already! Mr. Michael Höhn implemented he receiver as his Master's thesis, and he came up with this structure (p. 67):

schema of Höhn's receiver

In my head, this diagram pretty neatly translates to a GNU Radio flow graph – that is, a graph built from GNU Radio signal processing blocks. GR is a system to exchange data between these signal processing modules and to implement such yourself. As such, it lends itself very well to implementations of receivers that understand their operation as flow of signal and data through multiple processing stages. In fact, there's a very popular graphical flow graph design tool (the GNU Radio companion) which represents this abstract idea of a signal flow graph as an actual image of connected rectangular blocks. I think, just to get an idea of what SDR implementations might look like, the GNU Radio Guided Tutorials might be a good start.

Furthermore, if you're interested in audio broadcasting, DRM (digital radio mondiale) might be of interest to you, too – and with gr-drm there's a working GNU Radio transmitter implementation for that.

I really do not want to stand between your enthusiasm and diving heads-on into software defined radio and digital signal processing – but you need to be aware that of all engineering disciplines, these are among the more mathematical, algebraically influenced. So your initial "I want to understand the whole machinery of DSP" might be a little too ambitious – I don't think there's anyone on here claiming that they'd do that – it's a huge field of expertise, and everyone can just know the basics and be an expert on their own specialization. There's audio processing, image processing, software defined radio, biosignal, radar, sonar, … experts on here, and some that I look up to as being pretty universally educated in DSP, but none of these is expert in everything. That is a good message for you – you don't have to be an expert in everything to be good in what you do!

So, personally, I might recommend starting slowly, using a Book on Signal Theory, which nowadays always introduces to the basics of DSP, too. Based on that, go for digital communications. You don't have to fully understand every bit of e.g. the information theory used in channel coders and source coders (source coders==compression algorithms), but it's necessary that you understand their role, so having a background in signal theory is not really optional if you want to understand how to recover your data from a very noisy observation.

Have a lot of fun!

  • $\begingroup$ Thank you very much Marcus. You post is very informative. I think I will buy "UNDERSTANDING DIGITAL SIGNAL PROCESSING" written by Lyons and dive into that. Indeed, as you told, I guess I won't be able to be expert on everything. But at least I have a better idea on how to make a good start thank to you ! :-) $\endgroup$ Commented Jan 15, 2017 at 22:07
  • $\begingroup$ Rick Lyons is actually on this site and comments once in a while :) seems to be a nice person. There's a book trial from Pearson (publisher). Rick writes a lot on DSPRelated.com. I think that is a good choice! $\endgroup$ Commented Jan 16, 2017 at 8:37
  • $\begingroup$ Great answer Marcus! $\endgroup$
    – Denis
    Commented Jan 2, 2019 at 3:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.