Building Math Hardware implemented a math compute device on a Field Programmable Gate Array (FPGA). This sequel describes a protocol and implementation by which the FPGA can communicate with a microcontroller. The vision is to generate operands on an microcontroller; the Math Hardware then performs the operations and returns the results. The communication between the devices is the focus of this article.
The protocol that we will use is called Serial Peripheral Interface (SPI). It is a synchronous full-duplex serial interface , and is commonly used to communicate with on-board peripherals such as EEPROM, FLASH memory, A/D converters, temperature sensors, or in our case a Field Programmable Gate Array (FPGA).
We assume a working knowledge of the Verilog hardware description language. To learn more about Verilog refer a book such as “FPGA Prototyping with Verilog Examples” by Chu, do the free online class at verilog.com, or read through the slides Intro to Verilog from MIT. Alternatively, my short introduction to the Verilog IDEs can be found at Getting Started with FPGA programming on Altera or on Xilinx.
After describing the physical connections, we look into exchanging bytes between a microcontroller and an FPGA. The last part implements an layer that allows message passing.