summaryrefslogtreecommitdiffstats
path: root/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README')
-rw-r--r--fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README173
1 files changed, 173 insertions, 0 deletions
diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README
new file mode 100644
index 0000000..451f25a
--- /dev/null
+++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README
@@ -0,0 +1,173 @@
+
+xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB
+==================================================================
+
+This program can be used to play SVF and XSVF files on the "Xilinx
+Platform Cable USB" family of JTAG probes.
+
+It is based on the libxsvf library:
+http://www.clifford.at/libxsvf/
+
+This tool replaces the original CPLD firmware from Xilinx when run
+on one of the probes. See the notes below on how to restore the Xilinx
+firmware on the CPLD.
+
+The file 'firmware.c' also contains a brief description of the pin mappings
+between the the Cypress CY7C68013A-100AIX and the Xilinx XC2C256-7VQ100
+on the probe as used by this software, as well as a brief description of
+the USB protocol this software is using.
+
+With this software it is possible to use JTAG clock speeds up to 24 MHz.
+But with the high frequencies there are "gaps" in the transmission resulting
+in an effective transfer rate of approx 6 MBit/s.
+
+This tool contains firmware for the CY7C68013A-100AIX (firmware.c) and for the
+XC2C256-7VQ100 (hardware.v) on the probe. Some more exotic tools are needed to
+build these. So pre-compiled versions of this firmware images are distributed
+along with the xsvftool-xpcu source code. You need to set the USE_PREP_* config
+options in the Makefile to '0' if you prefer building the firmware yourself.
+
+
+xsvftool-xpcu vs. Xilinx USB cable driver
+-----------------------------------------
+
+When installed, the Xilinx "USB cable driver" tries to load its own FX2 firmware
+to the probes as soon as the probe is connected to the system. Once the Xilinx
+firmware is loaded into the probe the probe can't be accessed using xsvftool-xpcu.
+
+So in order to use xsvftool-xpcu with a probe you need to uninstall or disable
+the Xilinx driver. This can usually be done by commenting out the udev rules in
+the /etc/udev/rules.d/xusbdfwu.rules file.
+
+A probe that shows up as 03fd:0008 in the lsusb output is running the Xilinx
+firmware. You won't be able to access this probe with xsvftool-xpcu unless you
+deactivate the Xilinx driver as explained above, disconnect the probe from the
+PC and reconnect it.
+
+You can always load the Xilinx FX2 firmware in the probe manually without using
+the udev rules (see "fxload" examples below).
+
+
+Supported and unsupported hardware
+----------------------------------
+
+This software has been tested using the following probes:
+
+ - A Xilinx Platform Cable USB
+ - The on-board probe of a Spartan-6 development board
+ - A self-built clone of the Xilinx Platform Cable USB
+
+Per default the software recognizes the following USB vendor IDs and device IDs
+(VID:PID) as a supported probe:
+
+ 03fd:0009 Xilinx Platform Cable USB
+ 03fd:000d Xilinx Platform Cable USB (embedded)
+ 03fd:000f Xilinx Platform Cable USB (low power)
+ 04b4:8613 Cypress FX2 without configuration PROM
+
+Currently there is no support for the "Xilinx Platform Cable USB II" in this
+software.
+
+
+Notes on device permissions
+---------------------------
+
+To run xsvftool-xpcu as unprivileged user you need to set the permissions on
+the USB device accordingly. E.g.:
+
+ $ lsusb -d 04b4:8613
+ Bus 002 Device 021: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
+
+ $ sudo chmod 0666 /dev/bus/usb/002/021
+
+ $ ./xsvftool-xpcu -Pc
+ Scanning JTAG chain..
+ idcode=0x16d4a093, revision=0x1, part=0x6d4a, manufactor=0x049
+ Total number of JTAG clock cycles performed: 79
+ READY.
+
+Instead of doing this manually each time the device is connected one might
+prefer to create a udev rule that does set the permissions automatically:
+
+ $ sudo vi /etc/udev/rules.d/xsvftool-xpcu.rules
+ # Allow everyone access to the Xilinx Platform Cable USB (see 'man 7 udev' for details)
+ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE:="0666"
+ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE:="0666"
+ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE:="0666"
+ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE:="0666"
+ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="04b4", ATTR{idProduct}=="8613", MODE:="0666"
+
+NOTE: The line for 03fd:0008 is for the re-enumerated device when the original
+Xilinx firmware is used on the probe. It is not used nor needed when using
+xsvftool-xpcu exclusively, but isn't harmful either.
+
+
+Restore Xilinx CPLD Firmware with "xsvftool-xpcu"
+-------------------------------------------------
+
+The Xilinx ISE comes with XSVF files for programming the CPLD with the Xilinx
+firmware. You can simply use "xsvftool-xpcu" to program the CPLD to the original
+firmware:
+
+ $ ./xsvftool-xpcu -P -x /opt/Xilinx/13.1/ISE_DS/ISE/data/xusb_emb.fmwr
+
+After that you need to disconnect and reconnect the probe before you can load
+the Xilinx FX2 firmware and use the probe with impact:
+
+ $ lsusb -d 04b4:8613
+ Bus 001 Device 106: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
+
+ $ fxload -t fx2 -D /dev/bus/usb/001/106 -I /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/xusb_emb.hex
+
+ ### usually you need to wait a few seconds here for the device to re-enumerate and settle ###
+ $ lsusb -d 03fd:0008
+ Bus 001 Device 108: ID 03fd:0008 Xilinx, Inc.
+
+ ### just scan the JTAG chain to test the probe ###
+ $ /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/impact -batch /dev/null
+ > setMode -bs
+ > setCable -port usb21
+ > identify
+ > quit
+
+NOTE: Use the *.hex file from the "ISE/bin/lin/" directory! It is different
+from the one in the "ISE/data/" directory and only this one seams to work.
+
+
+Restore Xilinx CPLD Firmware with "impact"
+------------------------------------------
+
+Up to ISE 11 the Xilinx "impact" program did automatically reprogram the CPLD on
+the probe whenever needed. Since ISE 12 this does only work when there is already
+an (older) Xilinx firmware on the probe. So in order to reprogram the CPLD on
+the probe with "impact" you need ISE 11 installed. Then it is possible to
+reprogram the CPLD just by loading the fx2 firmware and running impact on the
+probe:
+
+ $ lsusb -d 04b4:8613
+ Bus 002 Device 021: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
+
+ $ fxload -t fx2 -D /dev/bus/usb/002/021 -I /opt/Xilinx/11.3/ISE/bin/lin/xusb_emb.hex
+
+ ### usually you need to wait a few seconds here for the device to re-enumerate and settle ###
+ $ lsusb -d 03fd:0008
+ Bus 002 Device 022: ID 03fd:0008 Xilinx, Inc.
+
+ $ vi impatch_batch.cmd
+ setMode -bs
+ setCable -port usb21
+ quit
+
+ ### this automatically reprograms the CPLD without doing anything else with the probe ###
+ $ /opt/Xilinx/11.3/ISE/bin/lin/impact -batch impatch_batch.cmd
+
+The "reset-probe.sh" shell script in this directory (libxsvf/xsvftool-xpcu.src/)
+does this automatically:
+
+ $ bash reset-probe-impact.sh
+
+WARNING: For some reason this procedure fails when the probe has been used with
+xsvftool-xpcu between being connected to USB and loading xusb_emb.hex into the
+FX2. So disconnect and reconnect the probe before running the reset-probe.sh
+script!
+