FPGARelated.com
Forums

Xilinx Platform Cable USB protocol specifications and/or open-source firmware replacement

Started by Laurent Pinchart ●May 15, 2006
Hi everybody,

I recently bought a Xilinx Spartan-3E evaluation board, which comes with an
integrated Platform Cable USB. Looking for a Linux compatible solution to
program the FPGA, I found out that Impact requires the binary kernel driver
Jungo and is thus not an option.

As Xilinx decided to classify the cable USB protocol specifications as
"highly confidential", I started to reverse engineer the programmer to see
if I could write an open-source host software.

The programmer is made of a USB microcontroller (Cypress EZ-USB) and a CPLD.
After trying to understand the protocol from USB traces only without
success, I decided to disassemble the microcontroller firmware. The code
gave me more information regarding the protocol, but some USB commands are
forwarded to the CPLD through register read/write operations and/or general
purpose I/Os.

Not being able to understand the protocol, I thought I would write a
replacement firmware which would not require a kernel driver. I'm looking
for people interested in the project (or for people who have managed to
understand the Xilinx USB protocol :-)). I can take care of the Cypress
EZ-USB microcontroller, but needs someone with CPLD programming experience
to write a replacement for the Xilinx CPLD firmware.

Laurent Pinchart

I too had the same thought.  For a while.

A platform USB cable from the Xilinx store costs $150.  Given the time
to reverse engineer the protocol and design a board, and ...

And let's not forget that Xilinx owns the USB Vendor ID for the device,
so one can't re-use it without their permission.

You can't make one that's iMPACT compatable; might as well buy one of
the Digilent $38 versions.

> I too had the same thought. For a while. > > A platform USB cable from the Xilinx store costs $150. Given the time > to reverse engineer the protocol and design a board, and ... > > And let's not forget that Xilinx owns the USB Vendor ID for the device, > so one can't re-use it without their permission. > > You can't make one that's iMPACT compatable; might as well buy one of > the Digilent $38 versions.
I came accross the Digilent JTAG-USB programming cable, but haven't been to find its protocol specifications. I asked Digilent for more information, but my e-mail seems to have been discarded. Do you know if the cable protocol is available somewhere ? Or will I have to reverse engineer it as well ? Laurent Pinchart
> I too had the same thought. For a while. > > A platform USB cable from the Xilinx store costs $150. Given the time > to reverse engineer the protocol and design a board, and ... > > And let's not forget that Xilinx owns the USB Vendor ID for the device, > so one can't re-use it without their permission. > > You can't make one that's iMPACT compatable; might as well buy one of > the Digilent $38 versions.
I came accross the Digilent JTAG-USB programming cable, but haven't been to find its protocol specifications. I asked Digilent for more information, but my e-mail seems to have been discarded. Do you know if the cable protocol is available somewhere ? Or will I have to reverse engineer it as well ? Laurent Pinchart
not directly available. RE needed

> not directly available. RE needed
Has anyone started working on that ? Laurent Pinchart
And you're surprized that they're not giving away their design?

Not to rain on your parade, but the typical FPGA engineer has spent a
hundred bucks or so on the part, a grand or two on the PCB, and 1/2 a
man-year on the code.  $38 for a JTAG dongle is down in the noise.

If it's hobby use you're after, you can stretch the JTAG signals off of
your card to another target.

There is an open-JTAG effort on SourceForge.  You might want to check
it out.

Hi,

> And you're surprized that they're not giving away their design?
Who's talking about their design ? I'm not trying to create a cheap clone, but to drive the programmer using free software. I don't mind paying $38 (or even $150) for a good USB JTAG dongle, as long as I can use it.
> Not to rain on your parade, but the typical FPGA engineer has spent a > hundred bucks or so on the part, a grand or two on the PCB, and 1/2 a > man-year on the code. $38 for a JTAG dongle is down in the noise. > > If it's hobby use you're after, you can stretch the JTAG signals off of > your card to another target. > > There is an open-JTAG effort on SourceForge. You might want to check > it out.
I've checked that out, but it only support parallel port bit-banging adapters. I want to buy a USB JTAG programmer that I can actually use with free softwares. Why is there none available ? Laurent Pinchart
Laurent Pinchart wrote:
> > I want to buy a USB JTAG programmer that I can actually use with free > softwares. Why is there none available ? > > Laurent Pinchart >
I reread the thread and didn't see this asked. Why aren't you just using our iMPACT software. Linux is one of the supported OSes after all. You do have to compile the drivers into your Kernel as explained here: http://www.xilinx.com/xlnx/xil_ans_display.jsp?iLanguageID=1&getPagePath=22648 and the iMPACT software is included in the free WebPack download. Ed McGettigan -- Xilinx Inc.
Hi Ed,

>> I want to buy a USB JTAG programmer that I can actually use with free >> softwares. Why is there none available ? >> > > I reread the thread and didn't see this asked. Why aren't you just > using our iMPACT software. Linux is one of the supported OSes after all. > > You do have to compile the drivers into your Kernel as explained here: >
http://www.xilinx.com/xlnx/xil_ans_display.jsp?iLanguageID=1&getPagePath=22648
> > and the iMPACT software is included in the free WebPack download.
Because iMPACT requires the Jungo binary driver, which has serious security issues. Linux offers a user-space USB library called libusb (available for win32 as well) which would let iMPACT access the Platform Cable USB without using a binary kernel driver. As I can't modify iMPACT to get rid of the Jungo dependency, I went the other way and tried to write a simple command line software to drive the cable. Unfortunately, the USB protocol seems to be classified top secret, and reverse engineering the EZUSB firmware didn't give me enough information. That's why I asked for more information on here. Laurent Pinchart