{"id":15,"date":"2024-07-23T22:19:55","date_gmt":"2024-07-23T22:19:55","guid":{"rendered":"https:\/\/faculty.uccs.edu\/mwickert\/?page_id=15"},"modified":"2025-09-08T20:24:36","modified_gmt":"2025-09-09T02:24:36","slug":"ece-4680-signal-processing-laboratory","status":"publish","type":"page","link":"https:\/\/faculty.uccs.edu\/mwickert\/home\/ece-4680-signal-processing-laboratory\/","title":{"rendered":"ECE 4680 Signal Processing Laboratory"},"content":{"rendered":"\n<div class=\"wp-block-uagb-image aligncenter uagb-block-01661306 wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-center\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\" src=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/08\/ece4680_header.png\" alt=\"Course header graphic showing a speech waveform\" class=\"uag-image-340\" width=\"774\" height=\"254\" title=\"Course header graphic showing an ensemble of random waveforms\" loading=\"lazy\" role=\"img\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-53a81674\"><h2 class=\"uagb-heading-text\">Catalog Course Description<\/h2><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Analog filter design, design and simulation of digital processors including filters and FFT algorithms. <em>Prerequisite: <\/em>ECE 4650 or equivalent<br><em>Offered: <\/em>Fall<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">News for Fall 2025<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The syllabus for this course is updated for Fall 2025. Understand that the instructor is Chiranth Sidappa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Lab Zip Files Status 09-14-2024<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The ZIP files for Labs 3, 4, 5, and 6 are now in place for use with the older FM4 board. I will be working on file updates to allow Labs 3, 4, 5, and 6 to run on the newer and more powerful STM32F746 board. With the small class size we have enough loaner FM4 boards. If you want your own board the STM32F7 board is a good option, but don&#8217;t expect support files to be posted for a while yet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Choosing a New Board<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Since around 2016 the real-time DSP board used in Labs 3-6 has employed an ARM Cortex M4. The board has been great but is no longer available. We have dwindling supplies available for student checkout. If you want to have your own board for use after the course, I highly recommend purchasing the STM32F746 Discovery board. <a href=\"https:\/\/www.mouser.com\/ProductDetail\/STMicroelectronics\/STM32F746G-DISCO?qs=KuGPmAKtFKV4xEByQ7IKqA%3D%3D\" target=\"_blank\" rel=\"noreferrer noopener\">Buy From Mouser<\/a>. I notice the price has been creeping up from $49.95 earlier in the summer of 2024. DSP support for this board is provided by <a href=\"https:\/\/github.com\/arm-university\/Digital-Signal-Processing-Education-Kit\" target=\"_blank\" rel=\"noreferrer noopener\">ARM on GitHub<\/a> and I have developed an updated interface for using a modified GUI Slider that was used with the old FM4 and earlier boards.<\/p>\n\n\n\n<div class=\"wp-block-uagb-separator uagb-block-bf32ea01\"><div class=\"uagb-separator-spacing-wrapper\"><div class=\"wp-block-uagb-separator__inner\" style=\"--my-background-image:\"><\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-tabs uagb-block-ec3a4179 uagb-tabs__wrap uagb-tabs__vstyle6-desktop uagb-tabs__vstyle6-tablet uagb-tabs__stack1-mobile\" data-tab-active=\"0\"><ul class=\"uagb-tabs__panel uagb-tabs__align-left\" role=\"tablist\"><li class=\"uagb-tab uagb-tabs__active\" role=\"none\"><a href=\"#uagb-tabs__tab0\" class=\"uagb-tabs-list uagb-tabs__icon-position-left\" data-tab=\"0\" role=\"tab\"><div>Course Materials<\/div><\/a><\/li><li class=\"uagb-tab \" role=\"none\"><a href=\"#uagb-tabs__tab1\" class=\"uagb-tabs-list uagb-tabs__icon-position-left\" data-tab=\"1\" role=\"tab\"><div>Lab Assignments <br>FM4 Based<\/div><\/a><\/li><li class=\"uagb-tab \" role=\"none\"><a href=\"#uagb-tabs__tab2\" class=\"uagb-tabs-list uagb-tabs__icon-position-left\" data-tab=\"2\" role=\"tab\"><div>Lab Assignments<br>STM32F746 Based<\/div><\/a><\/li><\/ul><div class=\"uagb-tabs__body-wrap\">\n<div class=\"wp-block-uagb-tabs-child uagb-tabs__body-container uagb-inner-tab-0\" aria-labelledby=\"uagb-tabs__tab0\">\n<h3 class=\"wp-block-heading\">Syllabus<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/08\/4680_syl.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Course Syllabus<\/a> as of September 08, 2025 08:22:27 (UTC).<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-tabs-child uagb-tabs__body-container uagb-inner-tab-1\" aria-labelledby=\"uagb-tabs__tab1\">\n<p class=\"wp-block-paragraph\">The DSP hardware experiments of Labs 3, 4, 5, and 6 make use of FM4_GUI_slider.exe, which is a Windows app. The app and the associated run-time libraries cannot fit in an 8Mb zip, thus they are presently found as a ZIP in the course Slack workspace. I can also email the ZIP to you.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab1_f2021.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lab 1<\/a> as of July 25, 2024 02:20:52 (UTC). <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab_1_sample.ipynb_.zip\">Lab 1 isample notebooks (Python &amp; Julia)<\/a> as of August 08, 2024 02:48:20 (UTC).<\/li>\n\n\n\n<li><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab2_f2021.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lab 2<\/a> as of July 25, 2024 02:20:51 (UTC). <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/09\/Audio_Record_Playback.zip\" data-type=\"attachment\" data-id=\"554\">Jupyter notebook for recording and loop playback (two playback methods)<\/a> as of September 09, 2024 09:47:40 (UTC). This ZIP includes the two appendices to Lab 2 (Matrix_Tips_ipynb) as a Jupyter notebook. <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/08\/Music_Test.wav.zip\">Stereo audio wav test file<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab3_f2021.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lab 3<\/a> as of July 25, 2024 02:20:51 (UTC). <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/09\/FM4_tools_setup_with_Keil.pdf\" data-type=\"attachment\" data-id=\"599\" target=\"_blank\" rel=\"noreferrer noopener\">FM 4 tools setup and board check<\/a> as of September 13, 2024 07:27:43 (UTC). <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/09\/Lab3_4680.zip\" data-type=\"attachment\" data-id=\"609\">Lab3_zip<\/a> as of September 14, 2024 02:26:54 (UTC).<\/li>\n\n\n\n<li><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab4_f2021.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lab 4<\/a> as of July 25, 2024 02:20:50 (UTC). <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/09\/Lab4_4680.zip\" data-type=\"attachment\" data-id=\"610\">Lab4_zip<\/a> as of September 14, 2024 02:26:56 (UTC). Jupyter notebook inside project Python subfolder explains noise capture and spectrum estimation process.<\/li>\n\n\n\n<li><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab5_f2022.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lab 5<\/a> as of July 25, 2024 02:20:50 (UTC). <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/09\/Lab5_4680.zip\" data-type=\"attachment\" data-id=\"611\">Lab5_zip<\/a> as of September 14, 2024 02:26:57 (UTC).<\/li>\n\n\n\n<li><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab6_f2019.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lab 6<\/a> as of July 25, 2024 02:20:50 (UTC). <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/09\/Lab6_4680.zip\" data-type=\"attachment\" data-id=\"612\">Lab6_zip<\/a> as of September 14, 2024 02:26:57 (UTC).<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-tabs-child uagb-tabs__body-container uagb-inner-tab-2\" aria-labelledby=\"uagb-tabs__tab2\">\n<p class=\"wp-block-paragraph\">The basic STM32F746 board testing, including a GUI slider interface is complete. The major step remaining is modifying the code examples to work with the STM32F746 audio codec interface library based on the ARM GitHub repo <a href=\"https:\/\/github.com\/arm-university\/Digital-Signal-Processing-Education-Kit\">https:\/\/github.com\/arm-university\/Digital-Signal-Processing-Education-Kit<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab1_f2021.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lab 1<\/a> as of 03:23 PM on Wednesday, August 25, 2021. <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab_1_sample.ipynb_.zip\">Lab 1 sample notebooks (Python &amp; Julia)<\/a> as of August 08, 2024 02:48:20 (UTC).<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Lab2_f2021.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Lab 2<\/a> as of 09:20 PM on Thursday, September 30, 2021. <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/09\/Audio_Record_Playback.zip\" data-type=\"attachment\" data-id=\"554\">Jupyter notebook for recording and loop playback (two playback methods)<\/a> as of September 09, 2024 09:47:40 (UTC). This ZIP includes the two appendices to Lab 2 (Matrix_Tips_ipynb) as a Jupyter notebook. <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/08\/Music_Test.wav.zip\">Stereo audio wav test file<\/a>.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lab 3 as of . STM32F746 tools setup and board check as of . Lab3_zip as of .<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lab 4 as of . Lab4_zip as of . Jupyter notebook inside project Python subfolder explains noise capture and spectrum estimation process.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lab 5 as of . Lab5_zip as of .<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lab 6 as of . Lab6_zip as of .<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/lectures.scientific-python.org\/\">Learning Python<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Python_Basics_2019.pdf\">Python Basics<\/a> a tutorial written in Jupyter Notebook. <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/Python_Basics_2019.zip\">ZIP<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Link to <a href=\"https:\/\/anaconda.org\/anaconda\/python\">Anaconda<\/a>. This is the scientific Python I recommend. This applies to learning Python via just Jupyter Lab.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An IDE I recommend is <a href=\"https:\/\/code.visualstudio.com\">VS Code<\/a> with many nice extensions for Python, Julia, and Jupyter, C++, just to name a few.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cheatsheet for <a href=\"https:\/\/cheatsheets.quantecon.org\">MATLAB\/Python\/Julia<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/NumPy2MATLAB.pdf\" data-type=\"link\" data-id=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/NumPy2MATLAB.pdf\">NumPy2MATLAB<\/a> and <a href=\"https:\/\/faculty.uccs.edu\/mwickert\/wp-content\/uploads\/sites\/58\/2024\/07\/IPython_Ref_Card.pdf\">IPython reference card<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Catalog Course Description Analog filter design, design and simulation of digital processors including filters and FFT algorithms. Prerequisite: ECE 4650 or equivalentOffered: Fall News for Fall 2025 The syllabus for this course is updated for Fall 2025. Understand that the instructor is Chiranth Sidappa. The Lab Zip Files Status 09-14-2024 The ZIP files for Labs [&hellip;]<\/p>\n","protected":false},"author":64,"featured_media":0,"parent":7,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"mwickert","author_link":"https:\/\/faculty.uccs.edu\/mwickert\/author\/mwickert\/"},"uagb_comment_info":0,"uagb_excerpt":"Catalog Course Description Analog filter design, design and simulation of digital processors including filters and FFT algorithms. Prerequisite: ECE 4650 or equivalentOffered: Fall News for Fall 2025 The syllabus for this course is updated for Fall 2025. Understand that the instructor is Chiranth Sidappa. The Lab Zip Files Status 09-14-2024 The ZIP files for Labs&hellip;","coauthors":[],"author_meta":{"author_link":"https:\/\/faculty.uccs.edu\/mwickert\/author\/mwickert\/","display_name":"mwickert"},"relative_dates":{"created":"Posted 2 years ago","modified":"Updated 10 months ago"},"absolute_dates":{"created":"Posted on July 23, 2024","modified":"Updated on September 8, 2025"},"absolute_dates_time":{"created":"Posted on July 23, 2024 10:19 pm","modified":"Updated on September 8, 2025 8:24 pm"},"featured_img_caption":"","featured_img":false,"series_order":"","_links":{"self":[{"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":59,"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":1310,"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/pages\/15\/revisions\/1310"}],"up":[{"embeddable":true,"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/pages\/7"}],"wp:attachment":[{"href":"https:\/\/faculty.uccs.edu\/mwickert\/wp-json\/wp\/v2\/media?parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}