FPGA Configuration file compression

The compression method used in the AEE FPGA products use a proprietary algorithm designed to handle FPGA configuration files.

It is a two step data analysis with progressive compression where one bit can represents a full byte. The algorithm development focused in a simple decompression software implementation so it can easily run in very small microcontrollers.

The compression rate is affected by the design density. The best results are achieved when the design uses less resources of the target FPGA so the configuration file contains more 0xFF (or 0x00 for the VIRTEX) bytes.
For a high use of the XC4005E FPGA resources (87% used) the compression rate was
38% (Original file: 11946 bytes, Result file: 7407 bytes).
For a low use of the same XC4005E FPGA resources (35% used) the compression rate was
61% (Original file: 11946 bytes, Result file: 4730 bytes).

At first sight the compression rate isn't impressive. However, the algorithm cannot loose even a single bit and it needs to be easy to implement in a simple microcontroller program. When using the WinZip utility in the examples above they were compressed to 5940 bytes (50%) and 4338 bytes (64%) respectively. Not much better since it uses a high complexity software, large memory and a big CPU.

Also, the decompression algorithm allows a quick configuration since the microcontroller may generate many bytes of configuration for each byte it needs to read from the memory.
This is not valid for byte-wide memories where the throughput is greater than serial EEPROMs.

The advantages of the compression technique are:

  • Reduction of the memory size needed reduces the memory cost
  • Uses a low cost microcontroller scheme
  • Configuration circuit requires less space on the printed circuit board
  • May increase the configuration speed
  • Increases security: the data stored in the memory is scrambled
  • Reduces the time and cost for remote download


Indeed, the compression enables the use of small EEPROMs to hold large FPGA configuration files reducing the hardware cost and size. A single 32Kbyte EEPROM can store a XC4013XL or a XCS40 configuration files.
A single 512Kbyte FLASH EPROM, like 29F040, can store more than 6 Mbits of configuration data.

 

Contact AEE to know how you could use this technique in your products.