--- Quote Start ---
In terms of area on PCB as well as production costs it's (in my point of view) a no-go to implement any (proprietary or open source) USB I/F for an one time use during production. Thus there will always be the need for a separate USB <=> EEPROM interface box for production issues.
--- Quote End ---
Here's my use case:
- I have a system that will contain 200+ boards. Each of those boards will contain a MAX II + Cyclone IV + Stratix IV GT.
- All 32 x 10Gbps transceivers on all FPGAs will be used
- MAX II devices can only be programmed via JTAG.
- I want to be able to use SignalTapII on any board at any time
- I want to be able to use the transceiver toolkit on any board at any time (for link testing)
- The boards will be housed in CompactPCI serial chassis, and those chassis have USB 2.0 in the backplane.
In this particular design, an on-board USB-Blaster makes the most sense.
Relative to the cost of a Stratix IV GT, the cost of my "improved" USB-Blaster logic is insignificant;
1) USB 2.0 hub Microchip/SMSC USB2412 $1.46
2) Two FTDI FT232H $2.95 (one for comms, one for USB-Blaster)
3) MAX II CPLD $13 (the UFM memory can be used to emulate the FT232H EEPROM)
Once I complete my testing with the FT232H as a replacement for the FT245B/R, I'll post details.
If you have a design where the end-user can access a JTAG header, then using an on-board USB-Blaster is less useful. However, if the USB-Blaster was actually "useful" in that it also provided a reasonably fast PC-to-FPGA communications path, then its worth having such an embedded USB-Blaster. The FT232H can be used in synchronous FIFO mode and can hit 40MB/s sustained transfer rates between the PC and FPGA (according to the FTDI data sheets).
The "improved" USB-Blaster needs to be implemented using a hub + 2 x FT232H devices, rather than a single FT2232H device due to a limitation of the FT2232H device and driver issues. The FT2232H can be used as two asynchronous FIFO devices, or as a single synchronous FIFO device - I want both interfaces active regardless of the FIFO mode. The BeMicro uses an FT2232C and it demonstrates an issue with the device driver under both Windows and Linux; if you have the USB-Blaster active, you cannot use the serial port on the second channel. This same problem likely occurs with Cypress EZ-USB designs, eg., FPGA4U has a USB-Blaster clone that can also provide a communications channel, however, the two interfaces are mutually exclusive. Using a USB hub and two separate USB devices causes the host PC to see two separate USB devices and hence it loads two separate drivers. Sometimes hardware has to be used to solve software problems :)
Cheers,
Dave