The virtual lab uses the following software:
- An embedded system based on Linux software and FX12 FPGA hardware. This acts as an interface between a TCP/IP network and an FPGA board, allowing the board to be programmed and controlled using a serial protocol. I modified the Linux kernel for this device and wrote the embedded application in C.
- An FPGA board, such as the Spartan 3E Starter Kit, but (more generally) any Xilinx FPGA board with JTAG support.
- A client library to allow programs to access FPGA functions. I wrote this library using Twisted Python.
- A client GUI, written using wxwidgets.