We may earn an affiliate commission when you visit our partners.
Israel Gbati and BHM Engineering Academy

Do you want to learn practical digital signal processing (dsp) without confusion?

Here’s an overview of what you’re getting in this dsp on Arm processors course...

Read more

Do you want to learn practical digital signal processing (dsp) without confusion?

Here’s an overview of what you’re getting in this dsp on Arm processors course...

  • Understanding the foundations of signal processing without complications:

    Before going on to implement practical dsp algorithms from scratch, this course teaches you the foundation of signal processing step-by-step. We shall look at key topics in signal processing including:

             -Signal statistics and noise

             -Quantization and sampling theorem

             -Analog filter design

             -Performance metrics of the Chebyshev, Butterworth, and Bessel filters

             -Linear systems and their properties.

             -Finite Impulse Response Filters (FIR)

             -Infinite Impulse Response Filters (IIR)

             -Superposition, synthesis, and decomposition.

             -Convolution and its properties

             -Discrete Fourier Transform (DFT) and IDFT

  • Developing Digital Signal Processing Algorithms:

    We shall practically develop the signal processing algorithms we discussed in the theory class. Over here rather than use live signals we shall use some already acquired and generated signals to test our algorithms, to keep the focus on developing the algorithms and testing them, rather than signal acquisition.

    We shall develop the following algorithms:

             -Signal statistics algorithms: signal mean, signal standard deviation, signal variance

             -The Convolution algorithm

             -The Running Sum algorithm

             -The Discrete Fourier Transform (DFT) algorithm

             -The Inverse Discrete Fourier Transform (IDFT) algorithm

We shall also implement some of these algorithms using the CMSIS-DSP library and then compare the dynamic performance     of our algorithm to that of the ones provided by CMSIS-DSP.

  • Developing Drivers and Data Structures for Signal Acquisition:

    To be able to properly acquire signals from the external world and then apply our signal processing algorithms, we first need to develop analog-to-digital converter (ADC) drivers for acquiring the signals and appropriate data structures more storing and managing the signal. Over here we shall develop :

             -A bare-Metal ADC driver for acquiring the signal

             -A First-In-First-Out data structure for storing and managing the signal

       

  • Digital Filter Design and Implementations:

    We shall learn about the various types of digital filters available and then go on to implement them from scratch. We shall implement:

             -The Moving Average Filter

             -The Finite Impulse Response (FIR) filter

             -The Infinite Impulse Response (IIR) Filter

We shall also see how to design the filter kernel of the finite impulse response filters using Matlab.

  • Practical DSP Application on Live Signal:

    Over here, we shall apply all that we have learnt to process live signals from our microcontroller’s ADC.

This course is more than just getting the code to work. It will teach you how to ….

                                           Write Practical DSP Algorithms WITHOUT a fancy Engineering Degree

You will be able to understand the foundations of signal processing without the hassle of complex mathematical derivations.

                                                            Taken by 3000+ Students with 200+ Reviews

This course is the fully updated version of the 1st edition of the course. The first edition has been taken by over 3000 students with over 290 reviews.

Here is what what one student had to say about the course.

"The information covered in this course is exactly what I needed to learn for a new assignment. Both general information about DSP as well as how to implement things on the ARM Cortex M4."

Here is what another student had to say:

"It is exciting to see how MATLAB is used in embedded systems for signal generation and filter design. The explanation here is simple and to the point. Keeps the viewer's interest captured and avoids unnecessary details."

In summary, you really have nothing to lose. Give it a try, it comes with a full money back guarantee. Hope to see you in the course.

Enroll now

What's inside

Syllabus

Setting Up
Downloading CubeIDE
Installing CubeIDE
Getting the required documentation
Read more
Getting the required package for bare-metal development
Testing the project setup
Getting Stasrted
Programming : Enabling the Floating Point Unit (FPU)
Programming : Plotting Signals using the Internal Logic Analyzer
Programming : UART Driver - Analyzing the Documentation
Programming : UART Driver - GPIO Pin Configuration
Programming : UART Driver - Protocol Paramters Configuration
Programming : UART Driver - Transmission Function
Programming : UART Driver - Testing the Driver
Programming : UART Driver - Plotting Signals
Programming : Integrating the CMSIS-DSP Library
Programming : Testing the CMSIS-DSP float32_t
Source Code Download
Signal Statistics and Noise
Introduction to Signals
The Signal Mean and Standard Deviation
Programming : Developing the Signal Mean Algorithm
Programming : Developing the Signal Variance Algortihm
Programming : Developing the Signal Standard Deviation Algorithm
Programming : Computing the Signal Standard Deviation using CMSIS-DSP
Quantization and The Sampling Theorem
Understanding the Sampling Theorem
The Passive Low-Pass Filter
The Passive High-Pass Filter
The Active Filter
Chebyshev, Butterworth and Bessel Filters
ARM Cortex-M DSP Support Features
Overview of Arm Cortex-M DSP Support Features
Linear Systems and Superposition
Introduction to Linear Systems
Understanding Superposition
Impulse and Step Decomposition
Convolution
Introduction to Convolution
The Convolution Operation
Examining the Output of Convolution
The Convolution Sum Equation
Programming : Analyzing the Input Signals of Convolution
Programming : Developing the Convolution Algorithm
Programming : Analyzing the Output Signal of Convolution
Programming : Computing Convolution using CMSIS-DSP
Programming : Developing a SysTick Driver to Measure Dynamic Efficiency
Programming : Measuring the Dynamic Performance of CMSIS-DSP (Part I)
Programming : Measuring the Dynamic Performance of CMSIS-DSP (Part II)
A closer look at the Delta function
The First Difference and Running Sum
Programming : Implementing the Running Sum Algorithm
Discrete Fourier Transform (DFT)
Introduction to Fourier Transform
The Discrete Fourier Transform (DFT) Engine
The Inverse Discrete Fourier Transform (IDFT)
Programming : Developing the Discrete Fourier Transform (DFT) Algorithm
Programming : Analyzing the ECG Signal for Inverse DFT
Programming : Developing the Inverse DFT Algorithm (Part I)
Programming : Developing the Inverse DFT Algorithm (Part II)
Configuring the Clock Tree for Maximum Speed
Programming : Analyzing the Documentation
Programming : Listing out the Steps
Programming : Implementing the Clock Config function (PartI)
Programming : Implementing the Clock Config function (PartII)
Programming : Testing the Clock Tree by Running Inverse DFT at 100Mhz
Digital Filter Design
Programming : Generating Signals with Matlab
Programming : Combining Signals with Matlab
Programming : Designing a Low-pass Filter Kernel in Matlab
Programming : Designing a High-pass Filter Kernel in Matlab
Programming : Analyzing Frequency Components of Signals in Matlab
Programming : Designing Filters using the FDATool in Matlab
Programming : Implementing a Digital Low Pass Filter on Embedded Device
Programming : Implementing a Digital HighPass Filter on Embedded Device
Programming : Comparing the DFT Results of the Embedded Device to Matlab
Programming : Implementing a Moving Average Filter for Smoothening Noisy Signals
Signal Processing on Live Sensor Data
Programming : Developing a Bare-Metal ADC Driver- Analyzing the Documentation
Programming : Developing a Bare-Metal ADC Driver- Initialization Function
Programming : Developing a Bare-Metal ADC Driver- Testing the Driver
Programming : Implementing a Live Sample-by-Sample FIR Filter (Part I)
Programming : Implementing a Live Sample-by-Sample FIR Filter (Part II)
Developing the First-In-First-Out (FIFO) Data Structure
Programming : Implementing the Interface File
Programming : Implementing the Initialization Function
Programming : Implementing Fifo_Put Function
Programming : Implementing the Fifo_Get Function
Programming : Testing the FIFO
Developing a Background Thread for Sampling Sensor Data
Programming : Analyzing the Documentation
Programming : Implementing the Intialization Function
Programming : Testing the Background Thread
Performing Digital Signal Processing on Blocks of Sensor Data
Programming : Getting a Block of Sensor Data into the FIFO
Programming : Reading from the FIFO
Programming : Applying FIR Filters on a Block of Sensor Data
Programming : Performing Convolution on a Block of Sensor Data using CMSIS-DSP
Programming : Applying Moving Average Filters to a Block of Sensor Data
-----------------START OF OLD VERSION OF THE COURSE --------------------------

Save this course

Save DSP From Ground Up™ on ARM Processors [UPDATED] to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in DSP From Ground Up™ on ARM Processors [UPDATED] with these activities:
Review Linear Systems Theory
Reinforce your understanding of linear systems, superposition, and impulse responses, which are fundamental concepts for understanding signal processing.
Browse courses on Linear Systems
Show steps
  • Review definitions of linearity, time-invariance, causality, and stability.
  • Work through examples of determining if a system is linear or time-invariant.
  • Practice problems involving superposition and impulse response calculations.
Brush up on C programming
Strengthen your C programming skills, as the course involves bare-metal programming and driver development.
Browse courses on C Programming
Show steps
  • Review pointers, memory allocation, and data structures in C.
  • Practice writing simple C programs for embedded systems.
  • Familiarize yourself with bitwise operations and register manipulation.
Read 'Understanding Digital Signal Processing' by Steven W. Smith
Supplement your learning with a comprehensive DSP textbook that provides a broader and deeper understanding of the concepts covered in the course.
Show steps
  • Read chapters related to filter design and implementation.
  • Work through examples and exercises in the book.
  • Compare the book's approach to the course material.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement basic DSP algorithms in C
Solidify your understanding of DSP algorithms by implementing them from scratch in C, focusing on performance and efficiency.
Show steps
  • Implement convolution, DFT, and FIR filters in C.
  • Optimize the code for ARM processors using CMSIS-DSP library.
  • Compare the performance of your implementation with CMSIS-DSP functions.
Develop a simple audio processing application
Apply your knowledge by building a practical audio processing application on an ARM processor, such as a simple equalizer or noise reduction system.
Show steps
  • Acquire audio data using the ADC driver developed in the course.
  • Implement a digital filter to process the audio signal.
  • Output the processed audio signal using a DAC or speaker.
  • Test and refine the application on an ARM development board.
Write a blog post on filter design
Deepen your understanding of filter design by explaining the different types of filters and their applications in a blog post.
Show steps
  • Research different types of digital filters (FIR, IIR, Moving Average).
  • Explain the design process for each filter type.
  • Provide examples of how these filters are used in real-world applications.
  • Publish the blog post on a personal website or online platform.
Contribute to a DSP-related open-source project
Enhance your skills by contributing to an open-source project related to DSP on ARM processors, such as improving existing algorithms or adding new features.
Show steps
  • Find an open-source DSP project on GitHub or GitLab.
  • Identify an area where you can contribute (e.g., bug fix, new feature).
  • Submit a pull request with your changes.
  • Respond to feedback from the project maintainers.

Career center

Learners who complete DSP From Ground Up™ on ARM Processors [UPDATED] will develop knowledge and skills that may be useful to these careers:
Signal Processing Engineer
A Signal Processing Engineer analyzes, designs, and develops algorithms for processing signals, such as audio, image, or sensor data. This digital signal processing course helps understand the fundamentals of signal processing and implement various algorithms from scratch. The course covers essential topics like signal statistics, filter design, and Fourier transforms, all of which are crucial for a Signal Processing Engineer. Furthermore, this course provides a practical approach by implementing these algorithms on ARM processors, offering hands-on experience.
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests software and hardware for embedded systems, often involving real-time signal processing. This DSP course, with its focus on ARM processors, helps build a foundation in implementing digital signal processing algorithms on embedded platforms. You will understand how to acquire signals through ADC drivers and manage data using structures like FIFO, which are crucial for embedded systems. This course may be useful to learn how to design and implement digital filters, a core skill for any Embedded Systems Engineer.
Algorithm Developer
An Algorithm Developer designs and implements algorithms for various applications, often involving signal processing, image processing, or machine learning. This course helps develop a solid understanding of digital signal processing algorithms and their practical implementation on ARM processors. The course covers essential algorithms like convolution, Fourier transforms, and digital filters. The hands-on experience gained from this course is invaluable for an Algorithm Developer. In addition, this course helps gain a practical understanding of how to optimize algorithms for embedded systems.
Internet of Things Engineer
An Internet of Things Engineer designs and develops connected devices, often involving signal processing for sensor data and communication. This course helps build a foundation in signal processing, covering essential topics like signal statistics, filter design, and Fourier transforms. Furthermore, this course helps learn how to acquire and process live signals using ARM processors, which are commonly used in IoT devices. The experience gained from implementing digital filters and signal processing algorithms makes one a more effective Internet of Things Engineer.
Firmware Engineer
A Firmware Engineer develops low-level software that controls hardware devices. This course provides skills in developing drivers and data structures for signal acquisition, which are directly applicable to firmware development. The course's focus on ARM processors is particularly relevant, as many embedded systems use ARM-based microcontrollers. The practical DSP application on live signals helps the Firmware Engineer to integrate signal processing capabilities into the firmware to control devices. Learning about signal processing and algorithm implementation helps become a better Firmware Engineer.
Robotics Engineer
A Robotics Engineer designs, builds, and programs robots, often requiring signal processing for sensor data analysis and control systems. This course helps in developing the skills needed to process signals acquired from sensors using ADC drivers and data structures like FIFO. The course's focus on ARM processors is beneficial, as many robots use ARM-based microcontrollers for their embedded systems. You find the digital filter design and live signal processing aspects of the course to be extremely valuable, particularly when trying to filter noise acquired from sensors.
Biomedical Engineer
Biomedical Engineers apply engineering principles to solve medical and healthcare-related problems, often using signal processing for analyzing biological signals. This course helps develop a solid understanding of digital signal processing algorithms and their practical implementation. The course covers topics like signal statistics, filter design, and Fourier transforms, which are essential for analyzing biomedical signals. With a graduate degree, you will be in a strong place to develop new and advanced biomedical solutions.
Applications Engineer
Applications Engineers provide technical support to customers and develop applications using a company's products. This course helps gain a practical understanding of digital signal processing algorithms and their implementation on ARM processors, which is valuable for supporting customers using ARM-based products. The course's focus on ADC drivers, data structures, and digital filter design is highly relevant for developing customer applications and providing technical assistance. Overall, this course is useful to become a more effective Applications Engineer.
Machine Learning Engineer
A Machine Learning Engineer develops and implements machine learning models for various applications. Signal processing techniques are often used for feature extraction and preprocessing of data before it is fed into machine learning models. This course may be useful in learning the fundamentals of signal processing, including topics like Fourier transforms and filter design. With a solid understanding of signal processing, a Machine Learning Engineer can improve the accuracy and performance of machine learning models.
Data Scientist
Data Scientists analyze large datasets to extract meaningful insights and build predictive models. While not immediately obvious, a Data Scientist may find a background in signal processing useful when dealing with time-series data or sensor data. This course introduces key concepts like Fourier transforms and digital filter design. This course may be useful to understand and preprocess data effectively. You may find the practical implementations of algorithms to be a valuable asset to your career.
Test Engineer
A Test Engineer designs and implements tests to ensure the quality and reliability of products, often involving signal processing for analyzing test data. This course helps gain a foundation in digital signal processing, covering essential topics like signal statistics, filter design, and Fourier transforms. The practical implementation of algorithms on ARM processors provides valuable hands-on experience. This course may be useful to develop automated tests and analyze data to ensure product quality.
Audio Engineer
An Audio Engineer works with sound, whether it's recording, mixing, or mastering audio signals. This course, with its comprehensive look at signal processing, may be useful to understand the fundamentals needed to manipulate audio signals effectively. The course covers topics like filter design and Fourier transforms, which are essential for audio processing tasks. While the course focuses on ARM processors, the underlying principles are applicable to audio processing on various platforms. It would be useful to experiment with generating and filtering audio signals.
Aerospace Engineer
Aerospace Engineers design aircraft, spacecraft, and related systems. Signal processing is crucial in many aspects of aerospace engineering, such as radar systems, navigation, and control. This course may be useful in developing a foundation in digital signal processing, covering essential concepts like filter design, convolution, and Fourier transforms. The focus on ARM processors is helpful, as many aerospace applications use embedded systems for real-time signal processing. One can leverage this knowledge to analyze sensor data and control systems in aerospace applications.
Research Scientist
A Research Scientist conducts research in various scientific fields, often requiring advanced knowledge of signal processing for data analysis and modeling. This course may be useful in developing a strong foundation in digital signal processing, covering essential algorithms and their implementation on ARM processors. With a graduate degree, you will have a more complete foundation to publish novel research and write technical reports.
System Architect
System Architects design and oversee the implementation of complex systems, often requiring a broad understanding of signal processing for various components. The digital signal processing course may be useful to gain a high-level understanding of signal processing concepts and their applications. Although System Architects typically have a graduate degree, this course provides valuable insights into the design and implementation of signal processing systems. Exposure to essential algorithms further helps when communicating with signal processing engineers on how to build comprehensive system architectures.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in DSP From Ground Up™ on ARM Processors [UPDATED].
Provides a practical and intuitive approach to understanding DSP concepts. It covers a wide range of topics, including signal processing fundamentals, filter design, and spectral analysis. It is particularly useful for students who want to gain a deeper understanding of the underlying principles of DSP without getting bogged down in complex mathematical derivations. This book valuable reference for both beginners and experienced practitioners in the field.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser