All GNURadio flowgraphs are at https://github.com/gallicchio/learnSDR
We use the GNURadio software along with RTL-SDR and ADALM-PLUTO hardware to explore the world of digital communication. We build up to a simple QPSK modem and rudimentary GPS reception.
- Installation --- Instructions for installing GNURadio
- Lesson 1 --- FM broadcast receiver with RTL-SDR
- Lesson 2 --- Signal Generator as sine-wave transmitter and RTL-SDR receiver
- Lesson 3a --- Complex Numbers in SDR
- Lesson 3b --- Negative Frequencies
- Lesson 4 --- What's Inside a Software-Defined Radio?
- Lesson 5 --- On-Off Keying with Adafruit Keyfob 4-Button RF Remote Control
- Lesson 6 --- Sampling
- Lesson 7 --- Frequency Spectrum, Fourier Transform, and FFT
- Lesson 8a --- Transmit and Receive from a PlutoSDR
- Lesson 8b --- Pluto Doppler RADAR
- Lesson 9 --- Tx from Pluto, Rx on RTL-SDR
- Lesson 10 --- On-Off Keying (OOK) from Pluto to RTL SDR
- Lesson 11 --- Amplitude-Shift Keying (ASK) from Pluto to SDR
- Lesson 12 --- PSK (BPSK) Phase-Shift Keying
- Lesson 13 --- QPSK Naive with no Pulse Shaping
- Lesson 14 --- Pulse Shaping and Nyquist Criteria
- Lesson 15 --- Pulse Shaping Matched Filter
- Lesson 16 --- Constellation Modulator
- Lesson 17 --- Frequency Locked Loop (FLL)
- Lesson 18 --- Symbol Timing Recovery and Synchronization
- Lesson 19 --- Carrier Phase Synchronization with a Costas Loop
- Lesson 20 --- Resolving the Phase Ambiguity and Differential Encoding
- Lesson 21 --- Linear Feedback Shift Registers (LFSR)
- Lesson 22 --- GPS Gold Codes; Spread Spectrum; Code-division multiple access (CDMA)
- Extra: Spectrum Analyzer Demo with USRP B210 or X310
- Absolute link to this index: https://gallicchio.github.io/learnSDR
- Chaudhari; Wireless Communications from the Ground Up: An SDR Perspective -- The book I first used to understand tricky things like timing synchronization. Lots of pictures and intuition. Explains GNUradio blocks. I wish he wouldn’t avoid complex numbers, because it makes many things messy and opaque with lots of trig identities.
- Rice; Digital Communications: A Discrete-Time Approach -- The second good book I read on this topic. A bit more mathy than Chaudhari, but great explanations. Introduces and uses complex notation. Many of my lessons are inspired by this book, including Symbol Timing Recovery and Carrier Phase Synchronization.
- Collins et al; Software-Defined Radio for Engineers A free PDF from Analog Devices. Uses Pluto as an example, which is good, but isn’t always as well written as the above.
- Proakis; Digital Communications 5th Edition Advanced and very mathy; proves optimality under certain conditions; only book here to really talk about FSK, MSK, GMSK and code-division multiple access (CDMA) with pseudo-random streams.
- PySDR: A Guide to SDR and DSP using Python (online book) https://pysdr.org/ Very good if you want to go to python directly without the live visual GNURadio flowgraphs.
This topic includes sampling, noise, FIR filters, correlation and convolution, quadrature (complex) signals, and all Fourier techniques DFT, FFT.
- Smith; Scientist & Engineer's Guide to Digital Signal Processing -- online and in print. A very concrete start. My only criticism is that I wish he’d introduce complex numbers earlier.
- Lyons; Understanding DSP -- another good self-study book with lots of figures.
- Oppenheim and Schafer; Discrete-Time Signal Processing -- the standard textbook. Assumes more background and introduces mathy things like z-transforms too early, at least for our applications.
- Learning DSP Illustrated: https://dspillustrations.com/ Lots of little python examples with plots. Confusing organization, popups, and ads.
- Borre et al; A Software-Defined GPS and Galileo Receiver -- where I started. Talks about acquisition through Fourier correlation and feedback-loop tracking.
- Tsui; Fundamentals of GPS Receivers A Software Approach -- I think this is the second thing I read.