Forum Discussion
Hardware Reference Design
Hello I have been looking for a very simple programming circuit for cyclone III FPGA's for the past 6 months or so, and have not been able to find one...then the next thing I know bemicro came out with their usb stick...I am in the process of getting one, but I noticed they do not provide complete documentation for the blaster interface which was a bummer. I was hoping the reference design would come with hardware docs so I could expand on their design. I was wondering if altera has a recommended version similar to the bemicro one so that after I get some code going I can add some parts that I want to use to a board and have a quick easy way to debug my project. I also have the DE-270 board...but the blaster interface on that board is huge, so I do not want to use that. I was also hoping for recommended flash setup for independent use. Let me know if this is the right place to post this...any help is appreciated thanks.
26 Replies
- Altera_Forum
Honored Contributor
O.K., that basically answers my question. Functionally, the FTDI Multi-Protocol Synchronous Serial Engine (MPSSE) operation is very similar to USB Blaster operation, except for a higher repeat count with MPSSE and more compact commands with USB Blaster. But I expect, that the throughput isn't much diferent, because both are using a 6 MHz TCK. Also USB Blaster has additional commands to send AS programming data, this wouldn't work with an FTDI chip without changing the hardware connection.
- Altera_Forum
Honored Contributor
Anybody know if they might release the design for people to use. From the looks of the license agreement they are limiting it a good bit.
If this is not going to happen, is anybody aware of something similar produced by Altera? I must say that I like this interface technique much better, due to board space constraints. - Altera_Forum
Honored Contributor
Yes, taking the license agreement strictly, the usage of the Arrow-USB-Blaster driver and design is restricted to Altera FPGA supplied by Arrow.
I assume, that Arrow is distributing Altera devices at regular conditions, so you may want to accept the agreement. I see a problematic point however: The driver is basically using a software technology provided by FTDI. You could design a similar driver yourself, if you had the interface specification for the Quartus JTAG server hardware dll. Altera should be interested to provide a simple and inexpensive programming option for their FPGA. So they should either convince Arrow to release the driver and design to all Altera customers, or disclose the interface information. Altera uses the more complicated CPLD based technique for USB Blaster, because it was developed before the FTDI MPSSE chips have been available, I think. - Altera_Forum
Honored Contributor
Well hopefully something like this will be released soon, it would be nice if someone from altera and/or arrow would comment so that we would know if there is to be any future such developments or if we are still on our own for this type thing, but I don't really know how to go about asking besides posting on the forum like this.
I don't mind buying the chips from arrow but I still don't have the complete specs for the programmer so at this point it is not of any consequence... Hopefully this thing is released soon. I feel a bit uneasy reverse engineering it without asking. I would rather just get some sort of official ruling on the programmer. - Altera_Forum
Honored Contributor
As a short update, I verified that a FT2232 can be used with Arrow-USB-Blaster driver and configuration without additional hardware. It uses the same JTAG pin assignment as the FTDI JTAG tool (TCK = AD0, TDI = AD1, TDO = AD2, TMS = AD3).
To drive usual pull-up and pull-down resistors, the "High Current I/O's" option must be enabled in the PORT_A configuration. (It can be set in FTDI FT_PROG tool when writing the EEPROM configuration). This makes me think, that BeMicro uses additional buffers or pull-up and pull-down resistors of higher resistance. Also, the FT2232 I/O operation isn't specified for VCCIO below 3 V. I didn't check, if it possibly works at 2.5V as well. Furthermore, TCK is known to be susceptible to crosstalk from other fast digital signals, an unsuitable driver impedance can also cause ringing TCK edges and JTAG failure. So a TCK driver may be recommended in some applications. The Arrow USB Blaster uses a TCK of 6 MHz, which is the maximum clock frequency in FTDI MPSSE mode. The overall operation is slower than a standard USB Blaster. I got about 50 - 100 % longer programming times in my test. This particularly matters in time consuming flash programming actions. All tests have been performed with Quartus Programmer. I wonder, if the performance differences are caused by ineffective programming or real hardware and FTDI driver properties. But I think, it's an interesting tool anyway. - Altera_Forum
Honored Contributor
Having yanked apart a couple of dead USB blasters, and Terasic blasters (which are equivalent), it's a shame Altera won't release the firmware in the CPLD so you could implement your own 'blaster' on boards. I'm assuming Terasic licensed the code and/or firmware file for their boards, since they can be treated identically as real USB blasters. This would be nice because I often find myself using 'instrumentation ram' in designs, and using the in-system memory editor during initial development to get data out of the FPGA. (before software is ready) I just tie the single-port (with instrumentation enabled) block ram modules to the internal data bus, and let it act as a mirror.
- Altera_Forum
Honored Contributor
The full schematic for the usb blaster ;) "can be found" :rolleyes: online as a single sided pdf as well as a single verilog file that contains all the logic inside the EPM7064AETC44. but it is a bit tricky to implement everything as you also need to know how the ftdi needs to be programmed properly.
Around 2-3 years ago we had all kind of jtag blasters from different companies to compare them. our software guys were badly disapointed about the jtag speed as the application is several MB in size and digged around a bit as we "heared" at one of the traid fairs that the speed would be increased if we would buy some fs2 license. if that is true and the target as well as the enviroment stays the same, then this must be some kind of configuration switch. at the end they now use a script that calls this
and the download as well as the gdb debugging was increased up to factor 2 as they could compared with this and with the normal way the time for download and debug.@ %SOPC_KIT_NIOS2%\bin\nios2-gdb-server-fs2.exe --tcpport=2342 --connect-reset=1 --page-cache=0 --verbosity=1 - Altera_Forum
Honored Contributor
A short update to "how FT2232 connects to Cyclone III on BeMicro"
BeMicro uses no additional JTAG buffers between FT2232 and FPGA, but a 10k pull-down resistor at TCK (and 10 k pull-up anyway). Furthermore it has 4052 muxes for the four JTAG lines to utilize it for PS configuration and apparently a user connection to FPGA alternatively. But I don't see, if or how these options are supported by the software driver. They could be used through FTDI d2xx driver, however. In addition, NCONFIG, NSTATUS and CONFIG_DONE are connected to FT2232 pins. So all-in-all, as a minimal solution, a FT2232 can act as configuration interface with no additional glue logic. - Altera_Forum
Honored Contributor
Hi everyone,
I figured I'd reply despite this thread being quiet for some time. I'm interested in creating a direct microUSB to FPGA JTAG connection using the FT2232 on a Cyclone IV-based board I'm designing. I'd like it to appear as a USB blaster and be compatible with the Quartus programming software. Programming speed is not a concern of mine. Based on FvM's notes in the previous posts, this sounds pretty doable. I know there's no schematic available showing how to wire this up, but would it be possible for someone to draw up a quick block diagram with connections, pull-ups, etc just to make sure I'm wiring this correctly? I plan to use either an EPCQ 16Mbit or 32Mbit PROM running in AS x1 mode along with my EP4CGX30CF23C7N FPGA running the serial flash loader (SFL). Any help would be appreciated :-) Thanks! Matt - Altera_Forum
Honored Contributor
Hey Matt,
The "problem" with using an FT2232 is that its not a "standard" USB-Blaster device, i.e., Quartus does not ship with drivers to support *any* USB-Blaster based on an FT2232 device. If you are going to create a USB-Blaster clone, then you can use an FT245B or FT245R, or you can use a microcontroller. The "classic" reference for a USB-Blaster clone is Kawk's (Kolja Waschk's) page http://ixo-jtag.sourceforge.net/ Cheers, Dave