FPGA Implementation of BSS Alogrithms

This was my master’s thesis research topic. I built my own DAQ (Data AQuisition) circuitry and interfaced it with a Nexys 4 Artix-7 FPGA development board.

An FPGA (Field Programmable Gate Array) is one of the fastest ways that digital electronics can be realized, coming only second to ASICs (Application Specific Integrated Circuits), and some DSP (Digital Signal Processor) based systems.

BSS (Blind Source Separation), also known as Blind Beamforming, is a technique by which a set of source signals can be extracted from a sampled set of observations of mixtures of those signals. For example, isolating a person’s voice from an audio recording taken at an airport. This is something that our brains carry out subconsciously and at a much more sophisticated level than a BSS algorithm can hope to accomplish.

The end goal of doing this research is to be a starting point for the research into a reliable digital computing system that might someday rival the sophistication of a brain. Ultimately, the applications are endless as this could be used on any type of signal as long as the sources are statistically significant.

This is the presentation material that accompanied my thesis defense.
Click on “Present” to load it. It is a very large presentation so it may take a while to load. Once loaded, you can use your arrow keys or the media controls to navigate my presentation.

EKG Noise Filtering

Filter a noisy EKG signal using an FPGA.

For this project, I created a simple EKG using a breadboard, circuit components and an AD620 instrumentation amplifier. I then passed the output signal through an FPGA into which I had programmed a filter to remove the 60 Hz noise. The following image shows the result of filtering.

The project was done two different ways; first using an FIR (Finite Impulse Response) filter, and second using an IIR (Infinite Impulse Response) filter. While the FIR filter was much simpler to program, the IIR filter used significantly fewer hardware resources to achieve a similar level of filtering.

Adaptive Noise Cancellation

Implement an adaptive filtering algorithm on an FPGA.

As an individual, I was given the task of implementing a simple LMS (Least Mean Squares) filter on an arbitrarily selected platform. The first attempt was on an Arduino Due, second was on a Raspberry Pi, and the final attempt was on a Spartan 3E FPGA (Field Programmable Gate Array) Development Board.

In the end I was able to implement this algorithm both on the Spartan 3E and Nexys 4 Artix-7 FPGAs. Below is a picture of the oscilloscope readout; in yellow is the input signal, and in green is the filtered signal.

Senior Design

LARC (LeTourneau Autonomous Robotics Competition)

Acted as programming sub-team lead. This project was a competition based project in which we were given the task of building a robot to compete at the annual IEEE Region 5 Autonomous Robotics Competition for the year 2013. I worked collaboratively with my team leader and my sub-team to create a program to carry out the given autonomous prompted tasks. This project was completed successfully.

Microcomputer Design

Create a single board computer and demonstrate it running a monitor program.

A course called Microcomputer Design is offered at LeTourneau at the junior level. It is a project course. The task is to design, build and assemble, and then program a single board computer. I successfully completed this project using a 68000 microprocessor. Initially, my board was design to work with a USB as well as a serial interface, but this was quickly changed as both of my DUARTs were fried on power-on. My final design used a basic DUART connected about an inch above the board with a tangled mess of wires. In the end, I was able to load a monitor program onto the on-board flash/ROM and carry out some basic functions through the serial interface such as loading another program into the RAM for temporary operation.

The monitor program was written in 68000 assembly and was run on my board at 8MHz and interfaced with a serial port running at up to 57,600 baud.

Yagi-Uda Antenna Project

Develop a lab to investigate Yagi-Uda Antennas.

Partnered with one other graduate student to create a lab for undergraduate students enrolled in Electromagnetic Fields and Waves at LeTourneau University. We specifically had the undergraduate students create and analyze a Yagi-Uda Antenna. Requirements included creation, testing to experimentally determine a radiation pattern, measuring the Voltage Standing Wave Ratio (VSWR) of their antenna using a network analyzer, and demonstrate the directivity of their new transmitter. This project was completed successfully.

Wireless Power Transfer

Derive a way to calculate power transfer between coils given input current to a transmitting coil.

Partnered with one other graduate student to create a lab for undergraduate students enrolled in Electromagnetic Fields and Waves at LeTourneau University. For this lab, we had the students come up with a theoretical derivation for the voltage transmitted to a receiving coil given the alternating current flowing through a transmitting coil. System variables such as coil shape and turn count were arbitrary. Requirements included creation of a testing system, and then comparison of experimental results to theoretical results derived from a custom for the voltage induced in the receiving coil. This project was completed successfully.

PCB ADC-Interface Board Project

The purpose of this project was to design an interactive ADC-interfacing circuit board from scratch and then to create a VHDL program for the CPLD. The board was to have several different modes of operation including frequency measurement, voltage measurement (positive and negative), and diagnostic mode. This was an individual project.

Re-Engineering Project

The purpose of this project was to take a marketed product and redesign it to improve one of its qualities. Our team arbitrarily picked the target quality. My role was testing/data collection and implementation of the chosen design improvements.

ASME H2Go Project

The purpose of this project was to create a machine which would harness the potential energy of a liter of water at a height of 1 meter. My role was co-designer and vehicle design and manufacture.