1 |
2 |
ZTEX |
/*%
|
2 |
|
|
Java host software API of ZTEX SDK
|
3 |
|
|
Copyright (C) 2009-2017 ZTEX GmbH.
|
4 |
|
|
http://www.ztex.de
|
5 |
|
|
|
6 |
|
|
This Source Code Form is subject to the terms of the Mozilla Public
|
7 |
|
|
License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
8 |
|
|
You can obtain one at http://mozilla.org/MPL/2.0/.
|
9 |
|
|
|
10 |
|
|
Alternatively, the contents of this file may be used under the terms
|
11 |
|
|
of the GNU General Public License Version 3, as described below:
|
12 |
|
|
|
13 |
|
|
This program is free software; you can redistribute it and/or modify
|
14 |
|
|
it under the terms of the GNU General Public License version 3 as
|
15 |
|
|
published by the Free Software Foundation.
|
16 |
|
|
|
17 |
|
|
This program is distributed in the hope that it will be useful, but
|
18 |
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
19 |
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
20 |
|
|
General Public License for more details.
|
21 |
|
|
|
22 |
|
|
You should have received a copy of the GNU General Public License
|
23 |
|
|
along with this program; if not, see http://www.gnu.org/licenses/.
|
24 |
|
|
%*/
|
25 |
|
|
/**
|
26 |
|
|
The Java API of the <a href="http://www.ztex.de/firmware-kit/index.e.html">ZTEX SDK</a>.
|
27 |
|
|
<p>
|
28 |
|
|
This API implements access to all ZTEX FPGA Board specific functions from host side. It uses <a href="http://usb4java.org">usb4java</a>, a Java wrapper
|
29 |
|
|
for libusb 1.0.
|
30 |
|
|
<p>
|
31 |
|
|
<h2>Features</h2>
|
32 |
|
|
The main features are:
|
33 |
|
|
<ul>
|
34 |
|
|
<li> Platform independent host software. It is possible to pack all necessary files (JNI libraries, firmware, bitstream) into
|
35 |
|
|
one single jar archive which runs on all supported OS
|
36 |
|
|
<li> Firmware upload directly to the EZ-USB FX2 and FX3 Microcontrollers
|
37 |
|
|
<li> Firmware upload to non-volatile memory (EEPROM or Flash)
|
38 |
|
|
<li> Bitstream upload directly to the FPGA
|
39 |
|
|
<li> Bitstream upload to Flash memory
|
40 |
|
|
<li> Access to various kinds of non-volatile memory (EEPROM, SPI-Flash, SD-cards)
|
41 |
|
|
<li> Configuration memory (MAC-EEPROM) support
|
42 |
|
|
<li> <a href="http://www.ztex.de/firmware-kit/default.e.html">Default Interface</a> support
|
43 |
|
|
<ul>
|
44 |
|
|
<li> Multiple communication interfaces: high speed, low speed, GPIO's, reset signal
|
45 |
|
|
<li> Compatibility allows board independent host software
|
46 |
|
|
</ul>
|
47 |
|
|
</li>
|
48 |
|
|
<li>Licensed as Open Source under GPLv3</li>
|
49 |
|
|
</ul>
|
50 |
|
|
|
51 |
|
|
<p>
|
52 |
|
|
<h2>Communication with the FPGA Board</h2>
|
53 |
|
|
Firmware built using the <a href="http://www.ztex.de/firmware-kit/index.e.html">ZTEX SDK</a> supports an additional descriptor, the ZTEX descriptor 1. This descriptor
|
54 |
|
|
identifies the device and firmware, provides compatibility information (e.g. to avoid that a device is loaded with the wrong firmware)
|
55 |
|
|
and specifies the communication protocol. A description of the descriptor is given in {@link ztex.ZtexDevice1}.
|
56 |
|
|
<p>
|
57 |
|
|
The communication protocol defines how the functions provided by the firmware (see main features above)
|
58 |
|
|
can be accessed. Currently there is only one protocol implemented, the so called interface 1.
|
59 |
|
|
A description of the interface is given in {@link ztex.Ztex1v1}.
|
60 |
|
|
<p>
|
61 |
|
|
The most important classes for the interaction with the EZ-USB device / firmware are
|
62 |
|
|
<p>
|
63 |
|
|
<table bgcolor="#404040" cellspacing=1 cellpadding=4>
|
64 |
|
|
<tr>
|
65 |
|
|
<td bgcolor="#ffffff" valign="top">{@link ztex.ZtexDevice1}</td>
|
66 |
|
|
<td bgcolor="#ffffff" valign="top">Represents an EZ-USB device that supports ZTEX descriptor 1. These devices can be found using {@link ztex.ZtexScanBus1}. </td>
|
67 |
|
|
</tr>
|
68 |
|
|
<tr>
|
69 |
|
|
<td bgcolor="#ffffff" valign="top">{@link ztex.Ztex1}</td>
|
70 |
|
|
<td bgcolor="#ffffff" valign="top">Implementation of interface-independent part of the communication protocol, e.g. uploading the firmware to the EZ-USB and renumeration management.</td>
|
71 |
|
|
</tr>
|
72 |
|
|
<tr>
|
73 |
|
|
<td bgcolor="#ffffff" valign="top">{@link ztex.Ztex1v1}</td>
|
74 |
|
|
<td bgcolor="#ffffff" valign="top">Implementation of the Interface 1, i.e. the interface dependent part of the communication protocol.</td>
|
75 |
|
|
</tr>
|
76 |
|
|
</table>
|
77 |
|
|
|
78 |
|
|
<p>
|
79 |
|
|
<h2>SDK overview</h2>
|
80 |
|
|
The following diagram gives an overview about the components of the <a href="http://www.ztex.de/firmware-kit/index.e.html">ZTEX SDK</a>.
|
81 |
|
|
<p>
|
82 |
|
|
<img src="../../imgs/ztex_firmware_kit-diagram2.png" width="800" height="430" alt="SDK for ZTEX FPGA Boards">
|
83 |
|
|
<p>
|
84 |
|
|
Java host software built with the SDK usually consists in a single jar archive which contains
|
85 |
|
|
<ul>
|
86 |
|
|
<li> all necessary Java bytecode </li>
|
87 |
|
|
<li> the libusb-1.0 JNI wrapper libraries for Linux/X86 (32 and 64 Bit), Linux/ARM (32 Bit), Windows/X86 (32 and 64 Bit) and OSX/X86 (32 and 64 Bit) </li>
|
88 |
|
|
<li> optional: the firmware for the EZ-USB device </li>
|
89 |
|
|
<li> Bitstream for the FPGA </li>
|
90 |
|
|
</ul>
|
91 |
|
|
This single jar archive runs on all supported operating systems.
|
92 |
|
|
<p>
|
93 |
|
|
On Linux this jar archive has no additional software requirements. The usb4java/libusb-1.0 library communicates directly with the EZ-USB device using kernel routines.
|
94 |
|
|
<p>
|
95 |
|
|
On Windows a libusb-1.0 driver must be installed and assigned to the device, see the <a href="http://wiki.ztex.de/doku.php?id=en:software:tutorial_example">Tutorial on the Wiki</a>.
|
96 |
|
|
The usb4java library communicates with the EZ-USB device using that driver.
|
97 |
|
|
|
98 |
|
|
<h2>Related Resources</h2>
|
99 |
|
|
Additional information can be found at
|
100 |
|
|
<ul>
|
101 |
|
|
<li> <a href="http://www.ztex.de/firmware-kit/index.e.html">ZTEX SDK</a>
|
102 |
|
|
<li> <a href="http://wiki.ztex.de/">ZTEX Wiki</a>
|
103 |
|
|
</ul>
|
104 |
|
|
*/
|
105 |
|
|
|
106 |
|
|
package ztex;
|