A description of what we intended our circuit/program to do and a description of our design process.
Our circuit was created to control the display of a board of lights. We began by creating a four-bit light register to control output to four lights. There are three 4-bit input vectors and two control bits that determine the state of the register.
The accumulator is a general-purpose register capable of performing a wide range of interesting functions. These functions include adding, subtracting, and shifting the values in the register. It also communicates with the program counter and light register. Via the accumulator's communication with the program counter, one can implement simple loops.
The instruction register divides the 14 data bits it gets from program memory into useful output packets. These packets include the address of the next instruction, the data and control bits for the accumulator and light register, and a conditional jump bit.
The virtual program counter enables the implementation of simple loops and conditionals. If the least significant data bit is a one value, and the jump bit is set then the virtual program counter will add one to the address of the next instruction, thereby jumping to that instruction.
Program memory contains the 14-bit instructions that determine the behavior of the entire circuit.
The clock is internal, its behavior is regulated by the clock divider designed by Professor Bruce Maxwell. The VHDL for the clock divider is located here.
Click here to go to the previous part of the lab write-up.