07-17-2012 01:58 PM
After quite some woes getting this installed, I figured I'd share what I've found to work. ISE was pretty easy to get working. The hard part was getting Impact to talk over the USB cable.
# usb driver
Get the latest driver from here:
This requires libusb-dev fxload to be installed (using apt-get or whatever)
create a script like :
sudo restart udev
Obviously, you'll need to set the correct paths for both Xilinx, and the libusb-driver.so module.
The LED labelled "Cable Ready" should come on if it's working.
Restarting udev is only really necessary once.
If you prefer, you can create an init script to run the lines beginning "export ..." and "sudo ..." above.
Here's my example /etc/init/xilinx-libusb.conf :
# xilinx-libusb xilinx-libusb job file
description "load the xilinx libusb driver for impact"
author "Karol Hennessy <revkarol AT NOSPAM gmail DOT com>"
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel 
# When to stop the service
stop on runlevel 
# Automatically restart process if crashed
# Essentially lets upstart know the process will detach itself to the background
# Run before process
[ -d /var/run/xilinx-libusb ] || mkdir -p /var/run/xilinx-libusb
echo "preload libusb"
#sudo restart udev
# Start the process
exec restart udev
Again, note the path above. Note sure if this is the most elegant way to do it, but I'm happy something works.
08-21-2012 08:38 PM
There are a couple more steps I had to do to get this working with the ZC702 dev board (Digilent JTAG cable), and a couple of things to make some of the demos work. (My system is 64 bit, to make this work for 32 bit, wherever you see a lin64 below, replace it with lin)
* Had to link /usr/bin/make to /usr/bin/gmake (gmake required) to make (first?) example from UG873 work
> cd /usr/bin
> sudo ln -s make gmake
* Install Digilent Cable drivers
> sudo /opt/Xilinx/14.2/ISE_DS/common/bin/lin64/digilent/install_digilent.sh
* Download and install Diglent runtime and utilities from
(I think the installs were a simple sudo install.sh type one)
* Install libCseDigilent (there is a version on the Digilent site, however at the time of installation, the version that came with 14.2 was higher, and contained the plugins for the 14series, so I used that one)
> cd /opt/Xilinx/14.2/ISE_DS/common/bin/lin64/digilent/libCseDigilent_2.2.10-x86_64
> sudo ./install.sh instpath=/opt/Xilinx/14.2/ISE_DS/ISE silent=1
Actually, I can't remember if that worked or if I had to manually install. To manually install
> sudo cp -r /opt/Xilinx/14.2/ISE_DS/common/bin/lin64/digilent/libCseDigilent_2.2.10-x86_64/lin64/14.1/libCseDigilent /opt/Xilinx/14.2/ISE_DS/ISE/lib/lin64/plugins/Digilent/
* Install gtkterm to communicate over usb/serial (needs to be run as root once installed in order to be able to read the tty)
> sudo apt-get install gtkterm
* Note that no driver for the CP210x was needed for me, I think it's installed by default in most major distros
A couple of pointers for testing;
To see if the USB cables are properly connected
Cygnal Integrated Products, Inc. CP210x Composite Device
for the CP210x usb/serial converter
Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC
for the Digilent JTAG cable
To ensure JTAG is working correctly (also seems to help poke SDK to use JTAG correctly if it's not working);
> djtgcfg enum
Found 1 device(s)
Product Name: Digilent JTAG-SMT1
User Name: JtagSmt1
Serial Number: xxxxxxx
> djtgcfg init -d JtagSmt1 (in my case)
Initializing scan chain...
Found Device ID:xxxxxx
Found Device ID: xxxxx
Found 2 device(s):
Device 0: UNKNOWN
Device 1: UNKNOWN
To see what TTY devices the USB devices installed to;
> dmesg | grep ttyU
and look for the devices listed by lsub
You shouldn't really need to do that though as gtkterm only shows the ttyUSB that the serial adapter is connected to in the dropdown list (also set Baud to 115200, leave everything else alone, parity=none, bits=8, stopbits=1, flowcontrol=none)
Hope this helps someone