News for

Grading continues through today. Midterm hist

The update to the Chapter 10 notes is complete is complete with added Costas loop example. This includes a hardware-in-the-loop test environment with demodulated shaped BPSK begin bit synched back in the Jupyter notebook. A ZIP is provided as well.

Getting Python and Jupyter Lab running on a lab PC will require creating a virtual environment under your user account.

Purchasing an Analog Discovery 2 from Digilent is definitely encouraged and a good investment.

The newest version of the GUI slider is available which supports saving and restoring all of the slider attributes. Unpack the ZIP in a project folder to replace the old .exe and the old FM4_GUI_slider Libs folder. An extra runtime DLL, XojoGUIFrameworks64.dll, will now be sitting outside the Libs folder.

A link to Ben's 3.5 mm Analog Discovery adaptor design is in the right column.

The address to the Keil license server is now updated and operational so you can use the full professional version via a VPN connection. See the lower right column.

Background Requirements

The required background for all students taking the course is an introductory graduate or junior/senior level undergraduate course in DSP and experience programming ANSI C. We will be making use of the ARM CMSIS-DSP library library for sure. The Yui text contains two DSP oriented chapters. If you need a C/C++ refresh consider the C/C++ Programmers Reference.




Office Hours

M 3:00 to 4:15 PM
or by appointment.
Office EN 292,
Phone 719-255-3500, [email protected].

Learning Python

Python Basics a tutorial written in Jupyter Notebook. ZIP.

Link to Anaconda. This is the scientific Python I recommend.

An IDE I recommend is Pycharm Community Edition.

NumPy2MATLAB and IPython reference card

3.5mm Analog Discovery adaptor design.

Jupyter Lab is ready

EAS RATS and LATS Servers

Obtaining Mathematica

Mathematica is available across the campus due to the CU system wide site license. This system-site license also means that students may install their own copy on home computers as well. Some links of interest regarding the CU site license for Mathematica are: download and installation and support information.

The Keil License Server

In short under the File menu, then License Management, then Flex LM, enter the server address as: [email protected]. You may have to run Keil as a Admin from startup. You need to use the campus resources VPN when connecting from off campus.

To help you get started with the Keil integrated development environment (IDE), here is the mdk5-getting started document.

Catalog Course Description

An introduction into the design, development, and implementation of signal processing alogithms on real-time hardware targets. The emphasis will be on high-level language (e.g., C), but assembly language will also be discussed.
Prerequisite: ECE 5650/4650, or ECE 2610/3205 or equivalent
Offered: Spring

Course Materials - Notes, ZIP, & IPYNB - Cortex M4

Course Syllabus as of 09:38 AM on Thursday, January 06, 2022.

Chapter 1 as of 01:14 PM on Monday, January 24, 2022.

Chapter 2 as of 02:20 PM on Monday, February 07, 2022.

Chapter 3 as of 04:19 PM on Monday, February 06, 2017. Chapter 3 asm examples zip as of 06:55 AM on Wednesday, February 24, 2016.

Chapter 4 as of 03:18 PM on Monday, March 07, 2016.

Chapter 5 as of 03:40 PM on Monday, March 05, 2018. Codec codebase.

Chapter 6 as of 06:15 PM on Tuesday, April 05, 2022. Python FIR filter design is now integrated into the Chapter 6 notes. The Assignment 4 ZIP contains a notebook in the Python folder that tracks the updated Chapter 6 Python examples.

Chapter 7 as of 11:05 AM on Monday, April 11, 2022. Python IIR filter design is now integrated into the Chapter 7 notes. The Assignment 5 ZIP contains a notebook in the Python folder that tracks the updated Chapter 7 Python examples.

Chapter 8 as of 02:57 PM on Monday, April 18, 2022. Adaptive Keil project with Jupyter notebook. as of 03:27 PM on Monday, April 13, 2020.

Chapter 9 as of 01:56 PM on Monday, April 20, 2020 FFT project with Jupyter notebook as of 09:30 PM on Monday, April 20, 2020.

Chapter 10 as of 12:25 PM on Wednesday, May 11, 2022. Costas loop project with Jupyter notebook as of 12:31 PM on Wednesday, May 11, 2022.

Appendix A as of 03:21 PM on Monday, February 15, 2016. Keil projects: FM4 UART code base and GUI slider interface, and ST32F4 Slider GUI ZIP, and Serial port debug ASM ZIP.

Appendix B as of 07:54 PM on Friday, February 13, 2015. Corresponding IPython notebook: IPYNB zip as of [an error occurred while processing this directive] (an .ini function file included), IPYNB PDF as of 07:50 PM on Friday, February 13, 2015

Appendix C as of 11:05 AM on Monday, February 23, 2015.

Appendix D as of 08:06 AM on Tuesday, February 24, 2015.

Appendix E as of 10:33 AM on Friday, March 13, 2015. GPIO example.

Appendix F. FM4_PN_lut_intr example.

Lecture Videos - Cortex M4

For the Spring 2020 offering of this course, MP4 video files will be produced.

Right clicking over the links should give you the option of copying the URL. The .mp4 file is in a high resolution 1280 x 720 format at 8 frames per second. The typical file size per lecture is about 300 MB.

Problem Sets/Labs/Midterm - Cortex M4

All of the content in this tab needs to be updated.

Course Materials - Course Notes, m-Code - C6x

Course Syllabus as of 09:38 PM on Sunday, January 19, 2014.

Chapter 1 Lecture Notes as of 12:02 AM on Monday, January 20, 2014.

Chapter 2 Lecture Notes as of 03:14 PM on Tuesday, February 07, 2012.

Chapter 3 Lecture Notes as of 03:30 PM on Tuesday, February 07, 2012.

Chapter 4 Lecture Notes as of 10:16 PM on Sunday, March 11, 2012.

Chapter 5 Lecture Notes as of 10:34 PM on Monday, February 27, 2012.

Chapter 6 Lecture Notes as of 10:39 PM on Monday, February 27, 2012.

Chapter 7 Lecture Notes as of 06:47 AM on Tuesday, March 13, 2012.

Chapter 8 Lecture Notes as of 05:15 AM on Tuesday, April 03, 2012.

Chapter 9 Lecture Notes as of 05:25 AM on Tuesday, April 17, 2012.

Chapter 10 Lecture Notes as of 04:35 PM on Monday, May 02, 2022.

Chapter 11 Lecture Notes as of 05:08 PM on Sunday, April 22, 2012.

Chapter 12 Lecture Notes as of 01:18 PM on Tuesday, April 24, 2012.

Chapter 13 Lecture Notes as of 09:24 AM on Tuesday, April 13, 2010.

Chapter 14 Lecture Notes as of 10:25 AM on Tuesday, April 13, 2010.

Appendix A Lecture Notes as of 05:05 PM on Tuesday, January 31, 2012.

Lecture Videos - Streaming and Download - C6x

For the Spring 2012/2013/2014 offering of this course, streaming QuickTime movies were produced.

You will need to have the free QuickTime player installed on your PC or Mac (get it). If clicking the link below does not start your QuickTime player you can manually start QuickTime, then the 'Choose File -> Open URL' menu item and enter the URL pointed to by the below links. The URLs are of the form lectures/ece5655/, where # is 1, 2, ... Right clicking over the links should give you the option of copying the URL. The .mov file is in a high resolution 1024 x 768 format at 8 frames per second. The typical file size per lecture is about 300 MB.

To directly download the lectures for playback at a later time, go to the lectures folder, right click, and download

Problem Sets - C6x


This course is about the use of general purpose digital signal processing microprocessors for solving signal processing problems in real-time. The new version of the course with utilize the ARM Cortex M4 processor family. Previously the course focus was on using the Texas Instruments (TI) C6x family of fixed and floating processors, and in particular implementing programs written in assembly, linear assembly, and C for the OMAP L138 (C6748 DSP). The old material is still available on the Web Site with the tag - C6x.

For both processor families the course will start out considering general signal processing applications of real-time DSP. A focus applications area will be communication system design using DSP algorithms. The course meeting time will be used for lecturing and laboratory time using Cortex M4 (old C6x) hardware/software development tools ARM Keil at first (old Code Composer Studio).