How to use an FTDI chip with Quartus¶
You can use anything you want to program Altera/Intel devices, but if you want to use tools such as SIgnalTap you have to use an approved JTAG adapter. In the past, the USB Blaster and USB Blaster 2 devices used several components including a CPLD with unknown/unavailable bitstreams.
Arrow came out with a Max10 board that had an onboard JTAG which was supported by Quartus but was only an FTDI chip, no CPLD. These FTDI devices have a high speed serial mode called MPSSE which has been used by literally dozens of adapters to provide a simple and straightforward JTAG interface, but until Arrow did it nobody had support for their device in Quartus. Later, Trenz started selling these devices and supplying documentation and the files needed to add support for them into Quartus.
I developed an FPGA board for a client with an onboard FT2232H but wasn’t expecting to be able to use my onboard hardware to debug the FPGA since it wouldn’t be supported by Quartus, but this Arrow USB Blaster changes everything.
So, for posterity, here’s how it’s done. It’s probably also doable with the single-port FTDI chip, but that is untested.
- Wire up the MPSSE port on the first serial channel (ADBUS0-3)
- Configure the serial EEPROM so that both ports are configured as RS232 UART and using the virtual COM driver
- The String Descriptor for the Product Description must be “Arrow USB Blaster”
- (I have the MFG still as FTDI with auto generated serial and serial prefix at the default “ST”)
- copy the .so into the Quartus linux64 directory (along with the other libjtag*.so libraries)
- copy the udev rules file into
/etc/udev/rules.d- all this does is set up a couple of rules to disconnect the default serial driver and grant permission 666 to the device
Now Quartus should be able to see the programmer and you’re off to the races. See the readme for changing the JTAG speed etc.