News for

5/4:Lecture video 14 posted.

5/2: Lab 5 updated with more code snippets on the tunable notch filter.

4/29: I just updated Lab4 problem 1c with an option to test the ARM FIR filtering function that uses float32_t over the int16_t version. See the PDF for more details.

4/11: Lab 4 and 5 assignment PDFs, code ZIPs posted. Corresponding Jupyter notebooks for the Chapter 6 (FIR) and Chapter 7 (IIR) updated and posted. The Chapter 4 IPYNB ZIP also contains, that you need for equal ripple filter design.

An alternative to the Analog Discovery is Soundcard Scope. You may need to get an external sound card interface such as AFUNTA or similar. Only has mono mic input. A line input is available in the iMic and USBGear.

To get going with Python see the right column where I provide a link to Anaconda, a good scientific Python install.

Background Requirements

I hope that each student/student team will purchase the Cypress $50 kit. I have a few loaner kits get the class started in lab on the first day of class. The syllabus contains many more links.

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,

Learning MATLAB

Learning Python

Python Basics (beta) a tutorial written in IPython Notebook

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

An IDE I recommend is Pycharm Community Edition.

NumPy2MATLAB and IPython reference card

App nap on OSX 10.9 results in a sluggish IPython. See appnope.

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: 27005@LM-AGILENT.UCCS.EDU. 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 10:56 PM on Saturday, January 09, 2016.

Chapter 1 as of 03:41 PM on Monday, January 25, 2016.

Chapter 2 as of 05:29 PM on Monday, February 09, 2015.

Chapter 3 as of 04:04 PM on Friday, March 04, 2016. 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:13 PM on Monday, March 14, 2016. Codec codebase.

Chapter 6 as of 03:53 PM on Monday, April 11, 2016. Associated IPYNB zip as of 09:26 PM on Monday, April 18, 2016. IPYNB pdf as of 09:36 PM on Monday, April 18, 2016. Project support FIR.

Chapter 7 as of 09:59 PM on Saturday, April 25, 2015. Associated IPYNB zip as of 09:26 PM on Monday, April 18, 2016. IPYNB pdf as of 09:26 PM on Saturday, April 25, 2015.

Chapter 8 as of 03:30 PM on Monday, April 25, 2016.

Chapter 9 as of 04:16 PM on Monday, April 25, 2016 Chapter 9 FFT code base.

Chapter 10.

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 2015 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 200 MB.

Problem Sets/Labs/Midterm - Cortex M4
Course Materials - Course Notes, m-Code - C6x

Course Syllabus as of [an error occurred while processing this directive].

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 05:24 AM on Tuesday, April 17, 2012.

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).