This contains code and relevant schematics from my Applied Digital Signal Processing class, where we developed various digital filters on the NXP FRDM K22F development board.

Related tags

CLI dsp_class
Overview

#dsp_class

Summary

This repo is meant to hold any of the C and MATLAB programming I did over the course of my Applied Digital Signal Processing class (ECE444) here at North Dakota State University. There are also some KiCAD files for a little audio amplifier board I made for the last assignment of the class, which involved making an equalizer FIR filter for some audio processing. Even though this class at times felt like climbing Mount Everest in the depths of winter naked, it is easily one of my favorite classes of all time. The challenge was great, I learned a lot, and some serious black magic was witnessed!

What Types of Problems Were Encounted In These Classes

We used the FRDM K22F development board from NXP to implement what we learned in lecture onto a DSP. We demonstrated to ourselves digital Fourier Series, DFTs, and slowly worked our way to making the highest order IIR and FIR filters we could. Along the way, we also had to come up with efficient programming to ensure we wasted as little time as we could.

Structure of This Repo and How To Navigate Through

There are a lot of MATLAB function files spread all throughout, along with image files and pdfs. This makes the repo as it stands as of 10/30/2021 pretty messy. I do not have time to organize it at the moment, but plan to get to it as soon as I can. For now, the best way to browse through the repo is to go through my assignments. The folders have a title to indicate what the assignment was primarily about, at least as far as a lab was concerned.

Note, for the most part, after getting the development environment set up, all we really worked on was whatever went into the timer interrupt ISR. Within the interrupt, we would sample from the ADC, then do some processing, then output the result onto the DAC. We did not care to do much anything else, so we violated a lot of the general rules for interrupt routines, and at run-time, the board spent 80-90% of its time in the ISR... Part of the reason for this was we wanted to get the highest order filters we could, and with filter order, the needed computations grew! For the final assignment, where we made an FIR filter to produce an equalizer for audio processing, we even utilized fixed-point arithmetic. I myself was able to get my filter to an order of 600, which was awesome! However, I scaled it down to an order of 50 I believe, as it was more than sufficient to meet my needs.

Finally, for the IIR and FIR filter code, 70% of the work was done in MATLAB. The reason being was we had to come up with code to generate the coefficients needed for whatever filter we were designing, and the scripts had to be generic enough that we could change specifications (like pass-band and stop-band requirements) and not have to re-write the entire scripts. The deliverable from the code was a header file (something like "coeff.h") that would be included within main.c for each assignment uVision project.

References

Owner
Abdullah Almosalami
Student at North Dakota State University majoring in Electrical Engineering with a minor in Math. Primary interests lay in electronics & embedded systems.
Abdullah Almosalami
This repository contains the source code of the project(StereoCraft) that we have developed for the Mixed Reality Hackathon organized by Microsoft using StereoKit SDK

StereoCraft - A block-building like experience built using StereoKit This repository contains the source code of the project that we have developed fo

G Bhanuteja 2 Dec 23, 2021
The gflags package contains a C++ library that implements commandline flags processing.

The gflags package contains a C++ library that implements commandline flags processing. It includes built-in support for standard types such as string and the ability to define flags in the source file in which they are used. Online documentation available at:

gflags 2.4k Jun 27, 2022
nicegraf-shaderc is a command-line tool that transforms HLSL code into shaders for various graphics APIs.

User Manual Table of Contents Introduction Project Status Obtaining the Source Code and Building Running Defining Techniques Generated Header File Pip

nicebyte 88 Jun 20, 2022
This is the massive repository for all code for the class CIS3250 Fall Semester.

========================================== Transforming Shapes Through Matrix Multiplication ========================================== Description o

null 4 Nov 25, 2021
Exploits for the house of IO class of vulnerabilities

House of IO - Heap Reuse What Is This? A heap exploitation technique that allows for returns an arbitrary memory address from Malloc. An exploit primi

Maxwell 11 Oct 29, 2021
A single-class C++ library for reading animated GIF files

EasyGifReader EasyGifReader is a single-class C++ library that aims to simplify reading an animated GIF file. It is built on top of and depends on gif

Viktor Chlumský 5 Feb 7, 2022
Implementation of a lock-free ring buffer class.

Lock-free ring buffer This is an implementation of a lock-free ring buffer, using only C++11 STL level features. Originally designed for the NymphCast

Maya Posch 12 Apr 9, 2022
Tool that generates unit test by C/C++ source code, trying to reach all branches and maximize code coverage

What is UTBotCpp? UTBotCpp generates test cases by code, trying to cover maximum statements and execution paths. We treat source code as source of tru

null 26 Jun 24, 2022
A single header C++ library for parsing command line arguments and options with minimal amount of code

Quick Arg Parser Tired of unwieldy tools like getopt or argp? Quick Arg Parser is a single header C++ library for parsing command line arguments

null 44 Feb 21, 2022
null 76 Apr 18, 2022
DollarSkip is a short piece of C code designed to ignore the dollar symbol at the start of commands.

DollarSkip is a short piece of C code designed to ignore the dollar symbol at the start of commands.

null 19 Apr 15, 2022
A simple command line application in order to create new Code workspaces.

mkcws Summary A simple command line application in order to create new Code workspaces. License This project's license is GPL 2. The whole license tex

Kevin Matthes 0 Apr 1, 2022
Spitfire is a basic terminal language that can exicute code via the terminal.

Spitfire is a basic terminal language that can exicute code via the terminal. It is easy to learn and runs fast, considering that its just a 300 line c++ file.

jhomas tefferson 0 Nov 18, 2021
A command-line tool to generate Linux manual pages from C source code.

mangen A command-line tool to generate Linux manual pages from C source code. Description mangen is, as said above, a program to generate Linux manual

null 2 Nov 15, 2021
CodeCompactor is an open source program designed for reducing the size of your code!

CodeCompacter An exciting, new and open source program for reducing the length of your code! Usage: ./CodeCompacter {ARGUMENTS} Arguments: -L {languag

Henry Dewsnap 1 Nov 28, 2021
Advent-of-Code: 2021 Edition

?? ?? Advent of Code 2021 ☃️ ❄️ Description Advent of code 2021 Awesome Advent of Code Advent of Code is an Advent calendar of small programming puzzl

Lento Manickathan 6 Apr 5, 2022
CppCompetitor - A program for dueling code bots.

CPP Competitor CPP Competetior is a mini program that's let you battle code bots. To get it running you only need A class for controlling the game's s

Nikola Dimitroff 1 Apr 23, 2020
A small self-contained alternative to readline and libedit that supports UTF-8 and Windows and is BSD licensed.

Linenoise Next Generation A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. Unlik

ArangoDB 334 Jun 5, 2022
A readline and libedit replacement that supports UTF-8, syntax highlighting, hints and Windows and is BSD licensed.

Read Evaluate Print Loop ++ A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. Unl

Marcin Konarski 572 Jun 27, 2022