FPGA Project provides a Python interface to USB FPGA boards. This project allows users and developers to build Python applications which communicate with the USB FPGA development boards. This project also includes some example Python applications built on top of the interface.
A USB FPGA Project(s)
Goals of this project:
- Provide a simple Python interface, control and data, for different USB FPGA boards.
- USB controller (FX2) firmware to support the Python interface.
- HDL reference design.
Currently a couple different FPGA development boards are supported. On this site PC software, USB controller firmware, FPGA HDL, and other embedded firmware can be found.
Page for more information on the USB FPGA development board.
- The host software is more Python centric. The USB interface library integrates with Python
via ctypes. The host software is now a Python package. The
Python package will install an usbp module. The python package latest installs can be downloaded
- LIBUSB support. The libusb drivers need to be installed. Most linux systems libusb is
installed. Download windows installer here,
libusb-win32 homepage. .
- FPGA (gateware) implemented with MyHDL. See the
MyHDL wiki site
for more information on the FPGA USB interface design. The HDL will be removed from the current
repository and hosted in a separate repository. See the
MyHDL wiki pages f
or more info.
- Wishbone controller added. Allows easy integration with existing HDL modules. The EP2, and EP6
endpoints are used for the Wishbone interface. The EP4 and EP8 endpoints are used for a data streaming
interface. Simple Python functions to read and write Wishbone bus addresses.
- CDC/ACM (virtual serial ports) support has been added to the firmware.
The linked code example
is a Python script that will download the FX2 firmware and the FPGA configuration to the USB Proto board.
This code segment illustrates the basics for USB FPGA configuration and connection.
The CyAPI (CyUSB) USB driver and the LIBUSB driver are used to interface the application code to the
USB FPGA devices. Python USB, ability to send data over USB from Python.
See the API documentation
(out of date!).
for more information on Python available methods.
More FPGA USB examples can be found at the RandomWiki.
The Wiki has a lot information and different FPGA projects.
Also see the sourceforge
repository and software releases for the code.