An Artix-7 35T bitstream is typically 17,536,096 bits. The time it takes to program the Arty can be decreased by
compressing the bitstream before programming, and then allowing the FPGA to decompress the bitstream itself
during configuration. Depending on design complexity, compression ratios of 10x can be achieved. Bitstream
compression can be enabled within the Xilinx tools (ISE or Vivado) to occur during generation. For instructions on
how to do this, consult the Xilinx documentation for the toolset being used.
After being successfully programmed, the FPGA will cause the “DONE” LED to illuminate. Pressing the “PROG”
button at any time will reset the configuration memory in the FPGA. After being reset, the FPGA will immediately
attempt to reprogram itself from whatever method has been selected by the programming mode jumpers.
The following sections provide greater detail about programming the Arty using the different methods available.
4.1 JTAG Configuration
The Xilinx tools typically communicate with FPGAs using the Test Access Port and Boundary-Scan Architecture,
commonly referred to as JTAG. During JTAG programming, a .bit file is transferred from the PC to the FPGA using
the onboard Digilent USB-JTAG circuitry (port J10) or an external JTAG programmer, such as the Digilent JTAG-HS2,
attached to port J8. You can perform JTAG programming any time after the Arty has been powered on, regardless
of whether the mode jumper (JP1) is set. If the FPGA is already configured, then the existing configuration is
overwritten with the bitstream being transmitted over JTAG. Not setting the mode jumper (seen in Figure 3) is
useful to prevent the FPGA from being configured from Quad-SPI Flash until a JTAG programming occurs.
Programming the Arty with an uncompressed bitstream using the on-board USB-JTAG circuitry usually takes
around 6 seconds. JTAG programming can be done using the hardware manager in Vivado or the iMPACT tool
included with ISE.
4.2 Quad-SPI Configuration
Since the FPGA's memory on the Arty is volatile, it relies on the Quad-SPI flash memory to store the configuration
between power cycles. This configuration mode is called Master SPI. The blank FPGA takes the role of master and
reads the configuration file out of the flash device upon power-up. To that effect, a configuration file needs to be
downloaded first to the flash. When programming a nonvolatile flash device, a bitstream file is transferred to the
flash in a two-step process. First, the FPGA is programmed with a circuit that can program flash devices, and then
data is transferred to the flash device via the FPGA circuit (this complexity is hidden from the user by the Xilinx
tools). This is called indirect programming. After the flash device has been programmed, it can automatically
configure the FPGA at a subsequent power-on or reset event as determined by the mode jumper setting (see
Figure 3). Programming files stored in the flash device will remain until they are overwritten, regardless of power-
cycle events.
Programming the flash can take as long as four to five minutes, which is mostly due to the lengthy erase process
inherent to the memory technology. Once written however, FPGA configuration can be very fast—less than a
second. Bitstream compression, SPI bus width, and configuration rate are factors controlled by the Xilinx tools that
can affect configuration speed. The Arty supports x1, x2, and x4 bus widths and data rates of up to 50 MHz for
Quad-SPI programming.
Quad-SPI programming can be done using the hardware manager in Vivado or with the iMPACT tool included with
ISE.