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.

Thoughts Themselves

I’ve always wondered if our brains had the ability to create pocket universes. For example, dreams. What if every dream you had was a window to a small pocket universe that actually exists for the duration of the dream? In the waking world, each train of thought that passes through one’s mind is a pocket universe branched off a possible future path.

Furthermore, the length of each train of thought defines how long that possible future can exist. This has implications in the theory of infinite parallel universes because it can limit the lifetime of the different parallel paths. In other words, some of the possible parallel futures cannot proceed past a define-able point.

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.

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.