Skip to main content

Nexys 3 Spartan 6 FPGA Experience

Worcester Polytechnic Institute

2014

01Background

These photos are from three courses at Worcester Polytechnic Institute:

  • ECE 2029: Introduction to Digital Circuit Design [1]
  • ECE 2049: Embedded Computing in Engineering Design [2]
  • ECE 3829: Advanced Digital System Design with FPGAs [3]

Over the course of several lab projects, I progressed from basic combinational logic and display multiplexing to programming VGA controllers, and ultimately designing a complete System on a Chip (SOC) with a MicroBlaze 32-bit soft processor — all written in Verilog HDL.

02Hardware & VGA Output

The Nexys 3 board features a Xilinx Spartan-6 FPGA, toggle switches for binary input, 7-segment displays for output, and a VGA port for driving external monitors. Early lab assignments focused on combinational logic and display multiplexing, while later projects involved programming a VGA controller to generate test patterns on screen.

03VGA Box Controller

A more advanced VGA project involved rendering a colored box on screen whose position and color could be toggled using the board's switches and directional buttons. Each corner of the display could be targeted, and the box color changed between red, yellow, and blue. This project exercised finite state machine design in Verilog, handling real-time user input from physical switches and buttons to update the VGA frame buffer.

Combined functionality: VGA controller, switches, and directional buttons working together.

04MicroBlaze Soft Processor

The final project brought everything together into a complete System on a Chip (SOC). A Xilinx MicroBlaze 32-bit soft processor was synthesized onto the Spartan-6 fabric using LUTs, flip-flops, and 32KB of block RAM for program memory. The MicroBlaze controlled the VGA display logic through general purpose output (GPO) registers for position and color, while general purpose inputs (GPI) read the state of physical color switches. A DCM module generated the 100 MHz processor clock and 25 MHz VGA clock from the board's oscillator, and a UART interface provided USB keyboard input. This effectively turned the FPGA into a custom microcontroller — blurring the line between hardware and software design.

Block diagram for the final design — implementing the MicroBlaze 32-bit microcontroller.

05References

[1]ECE 2029: Introduction to Digital Circuit Design — Worcester Polytechnic Institute
[2]ECE 2049: Embedded Computing in Engineering Design — Worcester Polytechnic Institute
[3]ECE 3829: Advanced Digital System Design with FPGAs — Worcester Polytechnic Institute