Imagine you want to have an FPGA board that has a USB port and no other connection (i.e., no other way to upload a bitstream). Can that FPGA bootstrap itself over the USB port? There would be a 'boot' bitstream in some flash on the board and the FPGA would be configured initially with that bitstream. The function of that bitstream would be to make the FPGA listen on the USB port for another bitstream that is then used to configure the FPGA for its real function. Can this be done? Without external memory (other than the boot flash)? Just curious... -- GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3 331E FAF8 226A D5D4 E405
Can FPGA bootstrap itself?
Started by ●February 17, 2004
Reply by ●February 18, 20042004-02-18
Marius Vollmer <mvo@zagadka.de> wrote in message news:<87ad3hp6w2.fsf@zagadka.ping.de>...> Imagine you want to have an FPGA board that has a USB port and no > other connection (i.e., no other way to upload a bitstream). Can that > FPGA bootstrap itself over the USB port? > > There would be a 'boot' bitstream in some flash on the board and the > FPGA would be configured initially with that bitstream. The function > of that bitstream would be to make the FPGA listen on the USB port for > another bitstream that is then used to configure the FPGA for its real > function. > > Can this be done? Without external memory (other than the boot > flash)?YES. but it is a little bit dangerous as the FPGA would rewrite the main primary config and if the process is not succesful the system will be totally dead. Altera Cyclone: doable with no tricks. Atmel FPSLIC: use I2C port to repropgram the config memory appnote exists. Xilinx: connect config memory JTAG to FPGA antti www.openchip.org
Reply by ●February 18, 20042004-02-18
Antti Lukats wrote:> Marius Vollmer <mvo@zagadka.de> wrote in message news:<87ad3hp6w2.fsf@zagadka.ping.de>... > >>Imagine you want to have an FPGA board that has a USB port and no >>other connection (i.e., no other way to upload a bitstream). Can that >>FPGA bootstrap itself over the USB port? >> >>There would be a 'boot' bitstream in some flash on the board and the >>FPGA would be configured initially with that bitstream. The function >>of that bitstream would be to make the FPGA listen on the USB port for >>another bitstream that is then used to configure the FPGA for its real >>function. >> >>Can this be done? Without external memory (other than the boot >>flash)? > > > YES. but it is a little bit dangerous as the FPGA would rewrite the main > primary config and if the process is not succesful the system will be > totally dead. > > Altera Cyclone: doable with no tricks. > Atmel FPSLIC: use I2C port to repropgram the config memory appnote exists. > Xilinx: connect config memory JTAG to FPGA > > antti > www.openchip.orgyou could use one of the usb-serial/usb-parallel chips from ftdichip.com they have a bigbang mode that when connected to the config pins on the fpga could configure it, you won't even need a prom then. I haven't figured out if theres a smart way use all of the interface pins on the FTDI and at the same time be able to reconfigure. Guess you could have some logic in the fpga to pull its own "program" pin with a command send over usb? it shouldn't care if the rest of the config pins a toggling after configuration? -Lasse
Reply by ●February 18, 20042004-02-18
Years ago I did an XC3020 design for a universal smartcard controller that consisted of the FPGA, a small PLD and a PROM. On boot up, the FPGA got loaded with a configuration designed to wait for a smart card to be inserted, and then determine which interface that smartcard had, then it would reboot itself with the appropriate design for communicating with that smart card. When the smart card was removed, it would again reboot with the discovery program. The FPGA also had a keypad controller, display driver, and serial comm that was common to all the loadable designs. So, yes, an FPGA can reboot itself, although you may need a little bit of external hardware to support it. The PLD in that case was a small one of the 22V10 style. I don't recall which one was used, but it was the cheapest I could find that would support a PROM big enough to hold the dozen or so FPGA bitstreams for all the smart card variations. The FPGA basically wrote a pointer to the PLD, then the PLD pulsed the program pin and initiated the reload starting at the pointer address. A cold start depended on the FPGA pins not being driven (I think we had pulldowns on the vector lines) To load via USB, you'll need the USB interface to stay alive, which means either an FPGA that is partially configured or an external device. Partial configuration is currently a lot of extra effort for a small gain thanks to the tools being not really ready for prime time. Lasse Langwadt Christensen wrote:> Antti Lukats wrote: > > Marius Vollmer <mvo@zagadka.de> wrote in message news:<87ad3hp6w2.fsf@zagadka.ping.de>... > > > >>Imagine you want to have an FPGA board that has a USB port and no > >>other connection (i.e., no other way to upload a bitstream). Can that > >>FPGA bootstrap itself over the USB port? > >> > >>There would be a 'boot' bitstream in some flash on the board and the > >>FPGA would be configured initially with that bitstream. The function > >>of that bitstream would be to make the FPGA listen on the USB port for > >>another bitstream that is then used to configure the FPGA for its real > >>function. > >> > >>Can this be done? Without external memory (other than the boot > >>flash)? > > > > > > YES. but it is a little bit dangerous as the FPGA would rewrite the main > > primary config and if the process is not succesful the system will be > > totally dead. > > > > Altera Cyclone: doable with no tricks. > > Atmel FPSLIC: use I2C port to repropgram the config memory appnote exists. > > Xilinx: connect config memory JTAG to FPGA > > > > antti > > www.openchip.org > > you could use one of the usb-serial/usb-parallel chips from ftdichip.com > they have a bigbang mode that when connected to the config pins on the > fpga could configure it, you won't even need a prom then. > I haven't figured out if theres a smart way use all of the interface > pins on the FTDI and at the same time be able to reconfigure. > > Guess you could have some logic in the fpga to pull its own "program" pin > with a command send over usb? > it shouldn't care if the rest of the config pins a toggling after > configuration? > > -Lasse-- --Ray Andraka, P.E. President, the Andraka Consulting Group, Inc. 401/884-7930 Fax 401/884-7950 email ray@andraka.com http://www.andraka.com "They that give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." -Benjamin Franklin, 1759
Reply by ●February 18, 20042004-02-18
On Wed, 18 Feb 2004 11:43:03 -0800, Lasse Langwadt Christensen wrote:> Antti Lukats wrote: >> Marius Vollmer <mvo@zagadka.de> wrote in message >> news:<87ad3hp6w2.fsf@zagadka.ping.de>... >> >>>Imagine you want to have an FPGA board that has a USB port and no other >>>connection (i.e., no other way to upload a bitstream). Can that FPGA >>>bootstrap itself over the USB port? >>> >>>There would be a 'boot' bitstream in some flash on the board and the >>>FPGA would be configured initially with that bitstream. The function >>>of that bitstream would be to make the FPGA listen on the USB port for >>>another bitstream that is then used to configure the FPGA for its real >>>function. >>> >>>Can this be done? Without external memory (other than the boot flash)? >> >> >> YES. but it is a little bit dangerous as the FPGA would rewrite the >> main primary config and if the process is not succesful the system will >> be totally dead. >> >> Altera Cyclone: doable with no tricks. Atmel FPSLIC: use I2C port to >> repropgram the config memory appnote exists. Xilinx: connect config >> memory JTAG to FPGA >> >> antti >> www.openchip.org > > you could use one of the usb-serial/usb-parallel chips from ftdichip.com > they have a bigbang mode that when connected to the config pins on the > fpga could configure it, you won't even need a prom then. I haven't > figured out if theres a smart way use all of the interface pins on the > FTDI and at the same time be able to reconfigure. > > Guess you could have some logic in the fpga to pull its own "program" > pin with a command send over usb? > it shouldn't care if the rest of the config pins a toggling after > configuration? > > -LasseThis is what our USB-JTAG programmer does. The FPGA config is downloaded to the FPGA via a FTDI USB245 in bit bang mode. A FPGA output bit can be asserted to set /PROGRAM if need be for reconfiguration (or The USB device can be put into suspend mode, this will power down the FPGA and allow re-configuration when brought out of suspend) Peter Wallace
Reply by ●February 19, 20042004-02-19
antti@case2000.com (Antti Lukats) writes:> Xilinx: connect config memory JTAG to FPGAVirtex 2 and Spartan 3 have ICAPs (Internal Configuration Access Points); the chip can reconfig itself with no external wiring. - a -- In 1845 the Potato Famine decimated Irish agriculture because of lack of genetic diversity. Over 150 years later, we still haven't learned this lesson, which is why the plague of Microsoft viruses will continue for as long as the software monoculture does.
Reply by ●February 19, 20042004-02-19
Marius Vollmer wrote:> Imagine you want to have an FPGA board that has a USB port and no > other connection (i.e., no other way to upload a bitstream). Can that > FPGA bootstrap itself over the USB port? > > There would be a 'boot' bitstream in some flash on the board and the > FPGA would be configured initially with that bitstream. The function > of that bitstream would be to make the FPGA listen on the USB port for > another bitstream that is then used to configure the FPGA for its real > function.I don't think you need the boot bitstream at all. Check out the 245BM chip from FTDI www.ftdichip.com . You'd use a few pins to drive the FPGA in serial configuration mode. You would have complete control. Now, if you also want to use USB for non-programming related I/O you'll have to do a bit more work to deal with the control pins. This is where inserting a low cost 8 bit micro in the path might help. These days you can do that for just a couple of dollars. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Martin Euredjian To send private email: 0_0_0_0_@pacbell.net where "0_0_0_0_" = "martineu"
Reply by ●February 19, 20042004-02-19
Martin Euredjian <0_0_0_0_@pacbell.net> wrote: : Marius Vollmer wrote: : > Imagine you want to have an FPGA board that has a USB port and no : > other connection (i.e., no other way to upload a bitstream). Can that : > FPGA bootstrap itself over the USB port? : > : > There would be a 'boot' bitstream in some flash on the board and the : > FPGA would be configured initially with that bitstream. The function : > of that bitstream would be to make the FPGA listen on the USB port for : > another bitstream that is then used to configure the FPGA for its real : > function. : I don't think you need the boot bitstream at all. Check out the 245BM chip : from FTDI www.ftdichip.com . You'd use a few pins to drive the FPGA in : serial configuration mode. You would have complete control. : Now, if you also want to use USB for non-programming related I/O you'll have : to do a bit more work to deal with the control pins. This is where : inserting a low cost 8 bit micro in the path might help. These days you can : do that for just a couple of dollars. The usrp project (www.comsec.com) has code to do so for the Cypress FX2 and a Cyclone . Bye -- Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt --------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Reply by ●February 19, 20042004-02-19
Martin Euredjian wrote:> Marius Vollmer wrote: > > >>Imagine you want to have an FPGA board that has a USB port and no >>other connection (i.e., no other way to upload a bitstream). Can that >>FPGA bootstrap itself over the USB port? >> >>There would be a 'boot' bitstream in some flash on the board and the >>FPGA would be configured initially with that bitstream. The function >>of that bitstream would be to make the FPGA listen on the USB port for >>another bitstream that is then used to configure the FPGA for its real >>function. > > > I don't think you need the boot bitstream at all. Check out the 245BM chip > from FTDI www.ftdichip.com . You'd use a few pins to drive the FPGA in > serial configuration mode. You would have complete control. > > Now, if you also want to use USB for non-programming related I/O you'll have > to do a bit more work to deal with the control pins. This is where > inserting a low cost 8 bit micro in the path might help. These days you can > do that for just a couple of dollars.The OP did not say if USB boot was ALWAYS the path, or if the FPGA needed to come-up with no USB - either as default, or as last-update. For those apps that need a uC+USB, Cygnal have a MLP32 package with 16K Flash : It can also bitstream compress into cheaper loader memory, as well as wdog, monitor, and other system power save tasks. http://www.silabs.com/products/microcontroller/usb_matrix.asp Cygnal also have a device that sounds similar to the FDTI device http://www.silabs.com/products/microcontroller/interface_matrix.asp -jg
Reply by ●February 21, 20042004-02-21
Here you can download the schematics of a FPGA board that is bootloaded using USB. http://www.cesys.com/english/ebene3/usb2fpga.htm Just klick on the link named "Schaltplan" -Manfred Kraus "Marius Vollmer" <mvo@zagadka.de> wrote in message news:87ad3hp6w2.fsf@zagadka.ping.de...> Imagine you want to have an FPGA board that has a USB port and no > other connection (i.e., no other way to upload a bitstream). Can that > FPGA bootstrap itself over the USB port? > > There would be a 'boot' bitstream in some flash on the board and the > FPGA would be configured initially with that bitstream. The function > of that bitstream would be to make the FPGA listen on the USB port for > another bitstream that is then used to configure the FPGA for its real > function. > > Can this be done? Without external memory (other than the boot > flash)? > > Just curious... > > -- > GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3 331E FAF8 226A D5D4 E405






