OpenCores

ZTEX USB-FPGA Module 2.04

Introduction

his SDK is primarily designed for the FPGA Boards, but also works with other EZ-USB based hardware. It consists in a Firmware Development Kit for EZ-USB devices, a Java API for host software development as well as many examples.

The package is Open Source and distributed under the GPLv3. A macro approach allows to configure the USB endpoints by just a few macros commands.
The USB descriptors and descriptor handling routines are created automatically.

The package is known to work under Linux and Windows (both 32 and 64 Bit), but should work on every operating system which supports libusb and Java, see also the porting page on the Wiki. The Java API allows the development of platform-independent host software consisting in one .jar file.

Overview

The following diagram gives an overview about the usage of the different components of the ZTEX EZ-USB SDK.

SDK for ZTEX FPGA Boards: overview

Features

  • Firmware Kit (for EZ-USB FX2 Microcontrollers):
    • Written in C (requires SDCC compiler).
    • Firmware assembled using a powerful macro processor which allows to specify required settings by a few macros. The necessary USB descriptors and the descriptor handling routines are generated automatically.
  • Host software API:
    • Written in Java, allows platform independent host software.
    • File loading from .jar archives allows to build platform independent software packages that consist in one .jar file
  • Main functions of the Firmware Kit / Java API:
    • Firmware upload directly into the EZ-USB FX2 Microcontroller
    • Access to EEPROM memory
    • Firmware upload to EEPROM
    • Access to microSD/*SD/MMC Flash cards in SPI mode as secondary Flash for Series 2 Boards
    • Access to SPI Flash
    • Bitstream upload directly to the FPGA
    • Bitstream upload to Flash memory and autonomous FPGA configuration using Bitstream from Flash memory
    • Support of the Configuration-Booster-CPLD's used on certain ZTEX FPGA Boards (configuration speed up to up to 24MByte/s via USB)
    • MAC-EEPROM support (contains a non-erasable MAC address and is used to store firmware settings)
  • DeviceServer (G)UI:
    • DeviceServer is an easy-to-use user interface for ZTEX Boards
    • Two access methods: HTTP (using web browser) and a simple socket protocol
    • Supports uploading of Firmware and Bitstream into volatile and non-volatile memory
    • Supports simple I/O: read and write to Endpoints
  • FWLoader utility:
    • Command line utility to upload Firmware and Bitstream
    • Supports upload methods and targets of the API / Firmware Kit
  • Licensed as Open Source under GPLv3
  • Many examples (interfacing DDR/DDR2/DDR3 SDRAM, high speed USB transfers via EZ-USB FX2, accessing Flash memory)

Other programming languages

The JAVA API implements functions like uploading Firmware and Bitstream to to the FPGA Board. But there are various ways to write host software using other languages:

  • If Firmware and Bitstream are stored in non-volatile memory (using FWLoader or the DeviceServer) the ZTEX API is not required. In this case (almost) any programming language and USB API can be used.
  • The DeviceServer allows to access the FPGA Board through a simple socket interface. Neither ZTEX API nor USB API are required. This method even works with simple script languages.
  • The Host software can call FWLoader to upload Bitstream and Firmware. Almost any programming language and USB API can be used in this way.