You are on page 1of 2

Programing a MIPS Processor using VHDL

Team Project By: Jamie Anderson, Ricardo Ramirez, Isaac Vrba, and Pinjia Zhang

Executive Summary:
Over the course of a semester in a group setting, our team programmed the basic components
of a Central Processing Unit (CPU). Our process was to program the main components such as
the Arithmetic Logic Unit (ALU) and Control Unit, using Hardware Description Language (VHDL)
and later combine them together. After that was accomplished, we were challenged with
improving the design by incorporating pipelining, a process used to quickly transfer data to
various spots on a linear 5-Stage process.

Summary:
While taking the course Computer Organization and Assembly Level Programming, we were to
work in a group to put together a working CPU that has implemented 5-Stage pipelining. This
task was divided up into different sections that were to be worked on by groups of two of us.
The main parts that we had to focus on were a program counter to keep tack of our location in
memory that tells us what to run next, areas that would read and write from memory, a
component responsible for all mathematical computation called the ALU, various control units,
and pipeline elements to quickly transfer data to various locations across the 5-stage process. I
was responsible for programing the ALU, the Instruction Fetch-Instruction Decode segment of
the pipeline that was used as the template for the other three, and then the control at the end
of fifth stage to determine what to do with our returned data values.
This project has taught me a tremendous amount on teamwork, time management, and
communication. The only way that a project this large could get completed on time is if
everyone works together to get it done, because due to the size and complexity, there is no
way that a single person could get it done. We had a member on our team, who is not listed
above, that did not help the rest of the group, and because of our shorthand, we had to work a
little harder to complete our work. We handled that situation the way we should, but moving
past that, the elements that made us excel at fluently advancing though our project was
constant communication and setting deadlines for when components needed to be constructed
and assembled together. Without keeping on one another’s progress, I do not believe we would
have finished the project.
One of the key takeaways I had from this project include constantly talking to so you can stay
up to date on the progress made overall and to establish a sense of comfort with one another
so when other members have a question, that they can ask it, that way nobody is stuck or
encouraged to stop for the day. Another take away was the amount of organization that went
into a large project. A shared document needs to be available to everyone as a home to list
variable names. My third takeaway was that you are not going to understand everything for a
project, and that learning how to do a particular task is necessary. There is a level of
understanding that goes into what is the best way to get that information and keep it for
reference. There are options to look it up online, ask team members, or in the case of school
sometime a Teacher’s Assistant. Shown below are some images taken while actively working on
the project.

A screen capture of our flowcharts, a visual indicator of the output


of certain components.

A diagram showing all of our connections to each of the individual components.

For more information on our project, or for access to the source code and documentation,
please visit https://github.com/JamAndCode/CprE381_Project1.

You might also like