HCS12 VGA generator

Posted on: 19 November 2011

This semester, I'm serving as a teaching assistant for ECE470, a class that deals with programming the HCS12 microcontroller. It was a while since I'd taken the class myself, so I thought it would be a good idea to spend a weekend working on a fun project to brush up on things. So, I decided to implement a VGA generator completely in software. Aside from three resistors, no custom hardware is used!

The motivation for this project has its origins in my EGR280 project, where I implemented a Tetris game. At the time, I used a hybrid FPGA/microcontroller approach. The game logic resided in the HCS12, while the FPGA took care of generating the VGA signals. (At the time, I hadn't taken a digital logic class, so I didn't know enough to implement the Tetris game entirely on the FPGA. And I didn't think it was possible to generate VGA signals on the HCS12 without any custom circuitry.)

I decided now to take a look and see if it was possible to do everything on the microcontroller. This runs somewhat counter to my area of research, which is focused on leveraging the incredible flexibility of FPGAs, not trying to cram more into a microcontroller. Still, I was enthralled with this MacGyverian notion of taking a fixed microprocessor and getting it to do something it wasn't designed for!

72-bit pipelined FPGA Mandelbrot generator

Posted on: 10 October 2010

In my free time for the past several weekends, I've been working on a complete revamp of the FPGA-based Mandelbrot generator our group created for our digital design class last year. My goal was to take all that I've learned about hardware design for the past several months as a research assistant in the Oakland University Nano-imaging laboratory, and apply it towards a redesign of this old project, to see how far I could push it.

My two design goals: (1) at least double the data width while (2) meeting or exceeding the performance of the original.

Levitating ball using a fuzzy control system

Posted on: 03 May 2010

Floating ping-pong ball using a fuzzy control systemFor our final project in Dr. Richard E. Haskell's ECE470 class (Microprocessor-based System Design) at Oakland University, Muawea Rawashdeh and I built a system to levitate a ping-pong ball at a desired height with the use of a fuzzy control system running on an HCS12 microcontroller.

A ping-pong ball is trapped within a Plexiglas tube, with a duct fan mounted at the base to provide life for the ball. An ultrasonic sensor mounted within the tube provides a feedback loop for the system, while an infrared sensor mounted at the side, parallel to the tube, provides for user input.

The basic goal is to make the ball hover smoothly at a desired level within the tube, by correctly controlling the speed of the fan mounted at the bottom of the tube, and by correctly interpreting the feedback information provided by the ultrasonic sensor mounted within the tube. The setup is that of a classic feedback loop. The system input (fan speed) is changed, and as a result the output (ball speed and position) is changed. The output is continuously observed to determine how to further adjust the input. Our project uses "fuzzy logic" to determine the proper output.

About Mark Bowers

Hello there! I'm a computer engineering grad student at Oakland University in southeast Michigan. This website is a collection of projects and writings that I've decided to share online.