Series 2 FPGA Boards
  USB-FPGA Module 2.16
  USB-FPGA Module 2.14
  USB-FPGA Module 2.13
  USB-FPGA Module 2.04
  USB-FPGA Module 2.01
  FPGA Module 2.00
  Debug Board
  Series 1 Adapter
  Cluster Board
  FX3 port status
Obsolete products
  Series 1 FPGA Boards
  Microcontroller Boards
To the ZTEX Shop ZTEX Shop
 SDK and Examples 
  Default Firmware
  Release history
  ZTEX Wiki
OS Discount Program
Terms and Conditions

    Home / Products         SDK    
    To the ZTEX Shop Shop   
    Wiki / Forums         Downloads    
    deutsch     englisch    

SDK for ZTEX FPGA Boards

This SDK is designed for the ZTEX FPGA Boards, but also works with other EZ-USB based hardware. The SDK consists in a Firmware Development Kit for EZ-USB FX2 and FX3 devices, a Java API for development of the host software, utilities and many examples.

The package is Open Source and distributed under the GPLv3. A unique macro approach allows to configure the USB endpoints by just a few macros commands. These features distinguish the ZTEX SDK from the products of competitors.

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.

SDK overview

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

SDK for ZTEX FPGA Boards: overview


The main features are:
  • Firmware Kit for EZ-USB FX2 Microcontrollers:
    • Is written in C and requires SDCC compiler.
    • Firmware is assembled using the powerful macro processor bmp which allows to specify all required settings by a few macros. The necessary USB descriptors, the descriptor handling routines and USB setup routines are generated automatically.
  • Firmware Kit for EZ-USB FX3 Microcontrollers):
    • Is written in C and requires the Cypress SDK including the GCC compiler.
    • Firmware is assembled using the standard C macro processor CPP and allows allows to specify all required settings by a few macros. The necessary USB descriptors, the descriptor handling routines and USB and DMA setup routines are generated automatically.
  • Host software API:
    • Written in Java and 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 to the EZ-USB FX2 and FX3 Microcontrollers
    • Access to SPI-Flash
    • FX2: Access to EEPROM
    • Firmware upload to EEPROM (FX2) and Flash (FX3)
    • FX2: Access to microSD/*SD/MMC Flash cards in SPI mode
    • FX3S: Access to SD card (SDIO and other functions usable with the Cypress SDK)
    • Bitstream upload directly to the FPGA
    • Bitstream upload to Flash memory
    • Automatic Bitstream loading from Flash during start-up
    • MAC-EEPROM support, used to store configuration data
    • FX2: AVR ATxmega support: Programming of the firmware, access to the non volatile memories (NVM)
  • Default Firmware for Series 2 FPGA Boards
    • Bitstream uploading to volatile and non-volatile memory
    • Multiple communication interfaces: high speed, low speed, GPIO's, reset signal
    • Makes Firmware development obsolete in many cases
    • HDL modules for FPGA and host software API
    • Compatibility allows board independent development
  • 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 all upload methods and targets of the API / Firmware Kit
  • Licensed as Open Source under GPLv3
  • Many examples (interfacing DDR/DDR2/DDR3 SDRAM, bi-directional high speed USB transfers via EZ-USB FX2 and FX3, 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 for this.

A C example using the libusb library for the USB communication can be found in the SDK and on the examples page.

System requirements

The system requirements for the compilation of the firmware and the host software are The system requirements for the running the utilities, examples and the user developed applications are

[Home]  [Impressum]