Let me know if this is the wrong place for this, but I am looking to program an FPGA (Spartan 6, I believe) using a microcontroller.

Right now the way I am thinking about doing this is I will load the FPGA program in a .hex file onto the microcontroller memory and load it serially into some sort of JTAG IC which will then subsequently program the FPGA. My question is does this JTAG IC theoretically exist, and if so, what should I be looking for? I am not entirely familiar with JTAG, so maybe that is the source of my confusion.

Thanks in advance!

  • 1
    \$\begingroup\$ 1. FPGA bitstreams are generally fairly large, at least for big FPGAs (1 Mbit+). Do you have that much program space? 2. JTAG is just a specific protocol run over what is basically a SPI bus, so you can do the actual "programming" using just the MCU hardware without too much trouble. There are not likely many, if any special-purpose ICs for JTAG, since it's basically a generic, easily-implemented interface, at least on the hardware level. \$\endgroup\$ – Connor Wolf Mar 23 '14 at 1:01
  • 1
    \$\begingroup\$ Also, FPGA programs are not generally stored in .hex files. Most FPGA manufacturers have their own proprietary binary/hexadecimal file formats. \$\endgroup\$ – Connor Wolf Mar 23 '14 at 1:02
  • \$\begingroup\$ Thanks for the tips, it very well may be that I do not have enough space, my microcontroller has 128k memory, I will be sure to see what kind of programs the FPGA team wants to utilize. \$\endgroup\$ – Peter Mar 23 '14 at 18:56

If you're serious about this, you need to read UG380, "Spartan-6 FPGA Configuration User Guide". (If it turns out that this isn't the correct FPGA familly, there's a similar document for every family Xilinx produces; just search for it.)

The Overview (starting on p. 15) shows that there are several ways to configure a Spartan-6, and JTAG isn't necessarily the simplest one to drive from a microcontroller. There's a "Slave Serial" mode that will interface directly with the SPI master controller on any micro that has one.

  • \$\begingroup\$ Thanks for the help, I'll be sure to read through the document. The Slave Serial seems like it would be the way to go. \$\endgroup\$ – Peter Mar 23 '14 at 18:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.