
Have you ever wondered how your FPGA remembers its configuration after you unplug it?
The answer is SPI flash memory — and in this course, you will build a complete driver for it from the ground up, in VHDL, on real hardware.
This is a hands-on, board-level course. By the end, you will have designed a working system that lets you type a message into a terminal, store it permanently in flash memory, power the board off, power it back on — and watch your message reappear. No microcontroller. No operating system. Pure hardware logic running on a Xilinx Spartan-6 FPGA.
What you will build
The course is structured around five practical deliverables:
A reusable SPI master — a VHDL state machine that generates SCLK, drives MOSI, and captures MISO at any clock speed
A flash driver — a command-level FSM that implements READ, PAGE PROGRAM, SECTOR ERASE, and WIP polling on top of the SPI master
A UART interface — a 19200-baud 8N1 transmitter and receiver so you can interact with the board from any terminal
A complete testbench
The Message Board capstone project — a persistent EEPROM-style storage system that ties all four components together into a single top-level design
What you will learn
How the SPI protocol works
How flash memory stores, erases, and protects data at the cell level
How to design layered hardware — a transport layer, a command layer, and an application layer that are each independently testable
Who this course is for
This course is for engineers and students who already know the basics of VHDL — you should be comfortable writing a simple process and understanding a state machine — and who want to move beyond toy examples into real peripheral design.
It is also for embedded software developers who want to understand what is happening at the hardware level below their HAL drivers. If you have ever called spi_write() without really knowing what the FPGA or microcontroller is doing on the wire, this course will fill that gap permanently.
You do not need to be an expert. You need to be curious, willing to read a datasheet, and ready to build something real.