Virtual Lab

The virtual lab provided a remote FPGA service, allowing distant FPGA hardware to be programmed and controlled via any computer network including the Internet. The first incarnation of the virtual lab was used for research, the second version was used for both teaching and research.

Some of the software, such as client libraries, can be downloaded.

The virtual lab used 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.