Virtual Lab

The virtual lab provides a remote FPGA service, allowing distant FPGA hardware to be programmed and controlled via any computer network including the Internet. A previous incarnation of the virtual lab has been used for research; the new version will be used for both teaching and research into computer architectures and non-standard computation. Replacement of the previous incarnation is necessary in order to achieve greater flexibility and scalability: I have been able to use the previous system to inform the design decisions for the new system.

The manual for the virtual lab is now online. Some of the software, such as client libraries, can be downloaded.

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.