Thursday, September 5, 2013

On-board JTAG controller lives!


This was a little frustrating.

My bityExpress PCB has a built-on programmer for the FPGA that includes a FTDI FT245R USB/FIFO IC and an Altera Max V CPLD.  I grabbed a copy of ixo.de's usb_jtag project for the CPLD and modified it to disable active serial mode and to match the pinout that I selected.  The code compiled cleanly for a 80 LE Max V.

The problem started when I tried to update the USB vendor ID on the FT245R to match the Altera USB-Blaster.  Installing FTDI's FT_Prog on my Windows 7 box never worked.  I ran across a Linux app called ftdi_eeprom that looked very promising.  I was able to change the vendor ID to 0x09FB and Quartus recognized the on-board programmer, but 'Auto Detect' in Quartus did not recognize the FPGA.  Two symptoms quickly emerged:  The JTAG TCK signal coming from the CPLD was constantly running and the FT245R's RXFn pin was stuck low (indicting that data was always in the FIFO).

Somehow the ftdi_eeprom app tells the FT245R that it is a FT232 and I could not find a way to recover the part.  Even when I successfully installed FT_Prog on an older XP box, I could not restore the original state of the FT245R.  I ended up replacing the FT245R and changing the vendor ID using FT_Prog on the XP system.  That's when the magic happened:



Perhaps I'll look deeper into ftdi_eeprom and try to understand why it fails on the FT245R.  I'd love to contribute something back.

No comments: