Forum Discussion
Altera_Forum
Honored Contributor
10 years ago --- Quote Start --- Would you mind sending me the links? --- Quote End --- The protocol was first reverse-engineered by Kawk (Kolja Waschk) http://ixo-jtag.sourceforge.net/ https://github.com/swetland/jtag/blob/master/usb-blaster-protocol.txt The protocol has been used in other projects to interface to the USB-Blaster, eg., open-cores debug core. Under Windows I have used libftd2xx and under Linux I have used libusb and confirmed some basic Avalon-MM operations work fine. Did you read both the JTAG tutorial and the JTAG analysis documents? Scroll down to "Altera JTAG-to-Avalon Analysis" https://www.ovro.caltech.edu/~dwh/correlator/cobra_docs.html The JTAG-to-Avalon-MM tutorial source contains a Tcl script that implements the SystemConsole equivalent commands for the JTAG Avalon-MM protocol ... altera_jtag_to_avalon_mm_tutorial\tcl\altera_jtag_to_avalon_stp\altera_jtag_to_avalon_stp.tcl Look at this source along with the analysis document, as well as running a few SignalTap II traces using a second FPGA board, and you should be able to understand the protocol at the bytes layer once inside the FPGA. The USB-Blaster protocol tells you how to send packets to the USB-Blaster circuit to produce these byte streams. You can re-implement the quartus_stp commands easily enough using the USB-Blaster protocol commands. Before implementing the USB-Blaster command protocol, go and write some C/C++ code that implements the FTDI MPSSE protocol. You'll find that it contains similar concepts to the USB-Blaster protocol. You can actually connect an MPSSE cable to the USB-Blaster 10-pin JTAG header and produce the byte-streams shown in my JTAG analysis document. Note that the USB-Blaster logic itself is not that complicated either. You can implement the control state machine based on a knowledge of the protocol. I've created versions with the FT245 and FT232H device. Unfortunately Altera has bugs in their software that makes the FT232H devices fail (my guess is a hard-coded buffer size somewhere in the Altera USB-Blaster interface code). Anyway, the work started to be an effort in futility, so I moved on :) Cheers, Dave