A USB FPGA Project(s)

SourceForge.net Logo
The USB 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. 

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.

See the Getting Started Page for more information on the USB FPGA development board.

Recent Changes

  • 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 here.
  • 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.
The following links contain a simple overview of each of the elements for this project.
HardwareFirmwareGateware (HDL)Software

Latest SourceForge

Projects and/or Companies Using USBP

Related Links

LIBUSBLIBUSB Win32SCons Build Tool,  NSIS Install Script,  SDCC 8051 C Compiler,  Open CollectorOpen Cores
FX2 Open Source Projects