News for

Lecture video 11 posted.

Assignment 5 posted. This is the last assignment.

Updated Assignment 4 doc following class with a few typo tweaks.

The Jupyter notebook sample for Assignment 4 inside the ZIP is updated. A PDF version is also linked.

Assignment #4 on FIR filtering is now updated with clarification on the state array length (bState) for ARM FIR filtering functions.

2019 midterm posted in PDF and ZIP updated for 2019. There are now two options for the second problem for ECE 4555, one option for 5655.

Good news, the Keil license server is back up. You connect as I originally described earlier in the semester.

Speech diversity combining update: I have carried out all of the recursive (exponential averaging) variance calculations for a single channel. I have changed the additive noise levels. With proper algorithm tuning I am getting nice SNR results over the ~40s play time of the speech vector. The combining algorithms should be able to work as expected. However I will not be pushing content tonight.

On setting up pyaudio_helper for Win10, you will most certainly have problems if you installed Python 3.7, using say Anaconda. The good news is it is possible to set up a virtual environment with Python 3.6, which can easily install PyAudio binaries. The problem with 3.7 is there are no prebuilt "wheels". The Conda tool can be used to create a virtual environment along with a .yml file that serves as a recipe for which packages to put into the new virtual environment. I hope to discuss this in class tonight.

The midterm will be updated before class today, but presently I am working the details of a new problem on speech diversity combining. The AGC problem will remain as in the 2018 exam.

I have posted a PDF extract from a Jupyter notebook showing a nice noise capture processed into a DAC frequency response plot of the FM4 running with fs = 24 kHz. Recall you are finding results for fs=32 kHz. The link is with Assignment 3.

Assignment 3 ZIP updated with more Pyaudio_helper information for noise captures.

Assignment 3 posted.

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. See the lower right column.

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. Note on this link if you follow the link to Buy From Distributor, you may find free shipping, e.g., Arrow. 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 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

Jupyter Lab is ready. Also see, Getting started with JupyterLab (Scipy2018).

Learning Markdown

EAS RATS and LATS Servers

Building a 3.5mm FM4 Adapter

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: 27000@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 07:45 PM on Friday, January 18, 2019.

Chapter 1 as of 03:38 PM on Monday, January 28, 2019.

Chapter 2 as of 03:13 PM on Monday, February 04, 2019.

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 03:53 PM on Monday, April 11, 2016. Python FIR design tools as of 04:01 PM on Saturday, November 05, 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. Python IIR design tools as of 12:22 PM on Wednesday, November 09, 2016. 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 04:32 PM on Monday, April 23, 2018. Chapter 8 Jupyter notebook as of 03:15 PM on Monday, April 09, 2018.

Chapter 9 as of 04:33 PM on Monday, April 23, 2018 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 2019 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

The content below is being reworked for Spring 2017 to eliminate the need for password protection. The first assignment will be available no later than Monday January 23, before the start of the first class. In the mean time you can become familiar with FM4_tools_setup_with_Keil, which will be part of the first assignment.

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