datasheets.com EBN.com EDN.com EETimes.com Embedded.com PlanetAnalog.com TechOnline.com  
Events
UBM Tech
UBM Tech

Design Article

Comment


elektryk321

8/30/2012 10:05 AM EDT

I have seen project where FPGA device was able to reprogram bootrom (in this ...

More...



Gopalakrishnan V

8/25/2012 10:58 AM EDT

Dear Eric,

If an FPGA comes with "connector-ready" USB functionality ...

More...

Configure FPGAs over USB

Gopalakrishnan Vijayakumar, Cypress Semiconductor

8/23/2012 9:49 AM EDT

FPGAs over USB - Page 2.

It is the final method, which can be tweaked to offer the additional capability of configuring the FPGA over a USB interface. This configuration can be done in the serial or parallel data path of the FPGA. Once the FPGA has been programmed, the USB controller can revert back to its default functionality of implementing a simple data interface with a host computer.

Many of the USB controllers available in the market will contain a programmable CPU of their own which can perform some application-level functions in addition to implementing USB protocol level management. In order to load the configuration bit stream into the FPGA, the USB controller will have to generate the necessary configuration signals. There are multiple configuration methods to program each FPGA and any of these can be chosen by the USB controller to load the configuration bit stream.

In case of applications where human intervention is not always convenient (i.e., satellites and submarines), this method of reconfiguration will prove helpful since it does not require an on-site engineer to facilitate the task. For an advanced FPGA-based application that requires high-speed USB connectivity, configuring the FPGA over USB eliminates the need for a dedicated configuration chip (for example, a PROM or a processor) for the FPGA.

Upon power-on or on receiving a command from the USB host it is bound to, the USB controller would initialize itself into a state in which it awaits the bit stream from the host through the data endpoint. On receiving a bit stream with a valid signature, the USB controller would then proceed to reset the FPGA and generate the configuration waveform to load it with the bit stream. Once the configuration is successful, the USB controller would switch back to the data conduit mode.



Today, there is a high-speed USB controller chip capable of performing the multiple tasks required for configuring FPGAs over USB.  It contains a GPIF controller block that can generate waveforms to interface with external ASICs, microcontrollers, or FPGAs. Vendor commands are sent from the host to initialize the GPIF controller whenever a firmware upgrade is required or when the device powers up. Once controller has entered the configuration mode and the GPIF controller is initialized, the host can send the configuration bit stream through an OUT endpoint. When the configuration is successfully, the host can send another USB vendor command to place the controller back into data transfer mode. 

By enabling reprogramming over USB, existing FPGA systems can reduce system cost by eliminating the need for additional programming circuits to configure the FPGA.

About the Author

Gopalakrishnan V is a senior application engineer with Cypress Semiconductor. He holds a BA degree in Electronics and Communication from Anna University, India.





green_ee

8/24/2012 1:11 PM EDT

If there was a complete "connector-ready" USB endpoint on the FPGA device, I would say it's the coolest device I've seen all year. But it doesn't have this.

A USB-blaster connected to an Altera device accomplishes the same thing, and an onboard controller with a JTAG interface would effectively do the same.

Sign in to Reply



ewertz2

8/25/2012 12:36 AM EDT

If there was already "connector-ready" USB functionality inside the FPGA, there wouldn't be need for any intermediary device. The article stated as a given that this was an expensive use of FPGA resources -- a statement which you can separately debate depending on how much FPGA meat you've got flog.

I think that the point here is that, in lieu of hard or soft USB functionality inside the FPGA, that such a scheme can be used as a bi-directional USB interface for both bitstream downloading as well as a USB Device (and perhaps Host) interface when the FPGA is running. The interface from the FPGA to the bridge chip can be anything from 1-bit serial to N-bit parallel, because the bridge chip is programmable with a decent number of I/O pins.

I concede that I don't know what all the USB Blaster is capable of, but my understanding is that it was merely a barebones programming device. *If* it could be made to do anything useful post-programming, it would have to come back (in this case, the JTAG channel) out through the fairly dumb serial (or custom) driver on the host.

I think the point is that if you both want a direct USB interface for both programming and execution (starting at 10s Mb/sec), then this is one such solution. If don't care about USB for both uses, then yes, you can do with less.

Sign in to Reply



ewertz2

8/25/2012 1:12 AM EDT

"got flog" ... "got to flog"
"If don't" ... "If you don't".

Text, replace yourself above.

Sign in to Reply



Gopalakrishnan V

8/25/2012 10:58 AM EDT

Dear Eric,

If an FPGA comes with "connector-ready" USB functionality inside it, then there are no cost added to your application design. I am not sure whether there are any FPGAs which comes with built-in USB functionality.

In case of design where you need to add an USB functionality to the FPGA, more than the FPGA space, cost of USB IP to handle the protocol(either buying the IP or time involved in developing the IP) and external USB transceiver chip get added to your design cost and it becomes more expensive. USB protocol in itself is a complex implementaion unlike other communication protocol like SPI, I2C,etc. Please email me in gopv@cypress.com or gopalakrishnan.vijay@gmail.com if you have clarification questions or doubts regarding the USB protocol implementation in FPGA.

As stated in the article, only the design where an USB interface is already a requirement for general data transfer, this method would be a cost effective solution. I apologize if the article does not convey this information directly.

You are right that if USB data interface is never an requirement to the project, then there are lot many simpler and cost effective methods like JTAG that can be used for programming.

Sign in to Reply



cmathas

8/24/2012 2:24 PM EDT

Thanks for the post, I'm alerting the author--stay tuned.

Sign in to Reply



elektryk321

8/30/2012 10:05 AM EDT

I have seen project where FPGA device was able to reprogram bootrom (in this case EEPROM). There was only problem if the EEPROM or FPGA bitstream was broken wrongly written and FPGA won't start and reprogramm memory. I think USB debug interface in FPGA is stupid idea, JTAG is enought to do anything, and additional cost of USB-JTAG programmer is quite low. Of course if you want to have this capabilities just use small USB processor (like Cypress or Microchip) or FTDI USB chip, to do bit-bang emulation of JTAG or program bitstream memory.

Sign in to Reply



Please sign in to post comment

Navigate to related information

Datasheets.com Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)