Hide menu

Ph.D. Level Courses

Software Defined Radio - Introductory Lab Course

The division of Communication Systems have during 2010 developed a series of laborations using the GNU Radio software and the USRP hardware. We are now happy to offer these laborations as a PhD course. This course program will most likely be updated close to course start. Students that have indicated interest in this course will be notified when this page has been updated.


The philosophy behind Software Defined Radio (SDR) is to do as much as possible in a radio equipment in software, to facilitate flexibility. Ideally, a radio equipment should be able to switch between being, say, a mobile phone, a GPS receiver and a WLAN node. It should also be easy to update such an equipment to follow new versions of standards only by updating its software. This means that as much as possible of the signal processing involved should be implemented in software, and the only dedicated hardware involved should essentially be conversion between baseband and passband, sender and receiver amplifiers, sender and receiver antennas, and channel filtering.

There are several possible combinations of software and hardware to do SDR work. The division of Communication Systems and the division of Electronic Systems have purchased a number of hardware units called Universal Software Radio Peripherals (USRP) for this purpose. GNU Radio is an open source program library, consisting of blocks that can be connected to form a flow-graph. C++ is used for low-level programming of these blocks and Python is used to connect them. The USRP consists of a motherboard containing an FPGA, USB connection, A/D and D/A conversion and connections for Tx and Rx daughterboards dedicated to some specific frequency band. The FPGA is programmed for up- and downsampling filtering. The USRP is connected to a host computer, where GNU Radio software is used to do most of the signal processing. Combining the USRP hardware and the GNU Radio software in this way yields an environment suitable for experiments and prototyping.

Course Leaders and Indicating Interest

This course is given by <Unknown username: mikael> and <Unknown username: antonb>. If you are interested in following this course, or if you have questions regarding this course, contact <Unknown username: mikael> . Interest for the autumn version of the course should be indicated ASAP. Course is full.

Course start

Spring version: Tuesday 2011-04-19.
Autumn version: Thursday 2011-09-01, 15:15-17:00 in Hammingrummet


Basic knowledge about telecommunication and some programming experience. Essentially any PhD student at ISY should be able to attend the course, perhaps after some reading up on digital modulation.

Course litterature

The course litterature is software documentation and lab MEMOs. Some of that is available online and some will be distributed to the participants in due time.

  • Lab MEMOs:
  • GNU Radio C++ block documentation available on the lab computer. See lab memo for details.
  • Additional documentation and instructions may be distributed.

Course outline

There will be one initial lecture, followed by a series of laborations. More precisely, there are three laborations that we anticipate will take four hours each.

  • Lab 1: Getting in touch with GNU Radio and the USRP.
    This involves connecting blocks in GNU Radio Python code and interfacing with the USRP hardware.
  • Lab 2: Data modulation and transmission.
    This involves modulating and demodulating data both in an essentially noise-free environment and in a simulated noisy environment.
  • Lab 3: Frequency shift compensation.
    This involves writing a GNU Radio block i C++ and providing a python interface via SWIG for that block. Finally also verifying that the block works as intended.

Credits and Examination

Credits: 2 hp (ECTS credits).

Examination: Presence at the initial lecture. Active participation in the laborations. Oral report of each laboration.

Examiner: <Unknown username: mikael>

Page responsible: Mikael Olofsson
Last updated: 2016 02 23   19:04