Because of the inherent advantages of in-system programming over standalone programming stations, many design and production engineers have long sought to program soldered-down flash, I2C and SPI memory devices through the JTAG port on a connected device like an FPGA. The problems with pre-programming memory on a standalone station is quite often the contents of the device will change, especially if it's firmware or software. Without in-system programming, updating the stored data would require de-soldering, reprogramming and re-soldering. And the likelihood of damage to the device and board skyrockets.
In-system programming avoids these problems, but, until now, the slowness of its programming speed has been a challenge to engineers. In a JTAG-only programming scheme every write to memory must traverse the entire JTAG scan chain in the connected FPGA. When the chain is long, the process is slow. Chains up to 3,000 cells wide are not uncommon. On some board designs, programming a SPI- or I2C-connected memory might take upwards of 10 minutes. Now though, with new programming methods based on the IEEE 1687 IJTAG standard, programming times can be accelerated by a factor of 1,000, down to a second or less.
These new IJTAG methods still pass through the FPGA’s JTAG port but they take a shortcut through the FPGA’s scan chain. IJTAG embeds a dynamically reconfigurable network of embedded instruments, which can include one or more at-speed programming engines, into the FPGA. When in-system programming is needed, the embedded IJTAG network can be configured to shorten the programming time.
Of course, I’m just scratching the surface of this topic, but my point is that these IJTAG-based in-system programming methods hold real promise, especially for designers trying to bring up and validate prototype boards or production engineers who sometimes don’t know the version of the firmware to load into flash until a customer orders a system.
I’ve drawn on the work we’ve done to improve in-system programming times in a new eBook just posted to our eResources Center. It’s titled “Faster Flash Programming via FPGA and IJTAG.” Download it today and start speeding up your in-system programming.