System and method for compressing and decompressing configuration data for an FPGA
First Claim
1. A method for providing a configuration data file to a programmable logic device (PLD), the method comprising:
- statistically analyzing the configuration data file and generating a plurality of recurring bit sequences, each recurring bit sequence including low and high values in a different sequence;
assigning alphabetic sequences to the recurring bit sequences;
compressing the configuration data file by substituting the alphabetic sequences for the recurring bit sequences, thereby generating a compressed data file;
loading the compressed data file into a memory device; and
decompressing the compressed data file by substituting the recurring bit sequences for the alphabetic sequences, wherein the memory device comprises a plurality of stored alphabets, each alphabet comprising a plurality of alphabetic sequences, and the method further comprises;
loading a code sequence into the memory device, the code sequence indicating one of the plurality of stored alphabets, the indicated one of the plurality of stored alphabets comprising the alphabetic sequences assigned in the step of assigning alphabetic sequences.
1 Assignment
0 Petitions
Accused Products
Abstract
A novel system and method are provided for storing a configuration data file for a programmable logic device such as an FPGA and for loading such a file into the device. The system and method of the present invention improves the performance of a bitstream storage apparatus by compressing the bitstream by a factor of about 5:1 to 10:1 before loading the bitstream into a storage unit, and then decompressing the bitstream, preferably within the storage unit, before forwarding the bitstream to the programmable device. In one embodiment, the decompression circuit is programmable, being able to utilize any of two or more different algorithms. In this embodiment, several different compression algorithms are evaluated, and the most efficient algorithm for that particular bitstream is utilized.
-
Citations
16 Claims
-
1. A method for providing a configuration data file to a programmable logic device (PLD), the method comprising:
-
statistically analyzing the configuration data file and generating a plurality of recurring bit sequences, each recurring bit sequence including low and high values in a different sequence;
assigning alphabetic sequences to the recurring bit sequences;
compressing the configuration data file by substituting the alphabetic sequences for the recurring bit sequences, thereby generating a compressed data file;
loading the compressed data file into a memory device; and
decompressing the compressed data file by substituting the recurring bit sequences for the alphabetic sequences, wherein the memory device comprises a plurality of stored alphabets, each alphabet comprising a plurality of alphabetic sequences, and the method further comprises;
loading a code sequence into the memory device, the code sequence indicating one of the plurality of stored alphabets, the indicated one of the plurality of stored alphabets comprising the alphabetic sequences assigned in the step of assigning alphabetic sequences. - View Dependent Claims (2, 3, 4, 5, 6)
loading the alphabetic sequences into the memory device.
-
-
3. The method of claim 1, further comprising:
configuring the PLD with the decompressed data file.
-
4. The method of claim 1, wherein the memory device comprises a decompression circuit that performs the step of decompressing the compressed data file.
-
5. The method of claim 1, wherein the PLD is a Field Programmable Gate Array (FPGA).
-
6. The method of claim 1, wherein the memory device is a Programmable Read Only Memory (PROM).
-
7. A method for providing a configuration data file to a programmable logic device (PLD), the method comprising:
-
statistically analyzing the configuration data file and generating a plurality of recurring bits sequences, each recurring bit sequence including low and high values in a different sequence;
assigning alphabetic sequences to the recurring bit sequences;
compressing the configuration data file by substituting the alphabetic sequences for the recurring bit sequences, thereby generating a compressed data file;
loading the compressed data file into a memory device; and
decompressing the compressed data file by substituting the recurring bit sequences for the alphabetic sequences, wherein statistically analyzing the configuration data file and generating a plurality of recurring bit sequences comprises;
a1) evaluating the configuration data file based on a first compression algorithm;
a2) evaluating the configuration data file based on a second compression algorithm; and
a3) selecting one of the first and second compression algorithms, based on the results of steps a1) and a2). - View Dependent Claims (8)
loading a code sequence into the memory device, the code sequence indicating one of the first and second decompression algorithms.
-
-
9. An apparatus for providing a configuration data file to a programmable logic device (PLD), comprising:
-
a computer device including;
computer readable program code for statistically analyzing the configuration data file and generating a plurality of recurring bit sequences, each recurring bit sequence including low and high values in a different sequence;
computer readable program code for assigning alphabetic sequences to the recurring bit sequences; and
computer readable program code for compressing the configuration data file by substituting the alphabetic sequences for the recurring bit sequences, thereby generating a compressed data file;
a memory array coupled to receive the compressed data file from the computer device; and
a decompression circuit coupled to receive the compressed data file from the memory array and coupled to provide a decompressed data file to the PLD, wherein the memory array comprises a plurality of stored alphabets, each alphabet comprising a plurality of alphabetic sequences, the apparatus further comprising;
means for loading a code sequence into the memory array, the code sequence indicating one of the plurality of stored alphabets. - View Dependent Claims (10, 11, 12, 13, 14)
means for loading the alphabetic sequences into the memory array.
-
-
11. The apparatus of claim 9, further comprising:
means for configuring the PLD with the decompressed data file.
-
12. The apparatus of claim 9, wherein the memory array and the decompression circuit are integral parts of a single integrated circuit device.
-
13. The apparatus of claim 9, wherein the PLD is a Field Programmable Gate Array (FPGA).
-
14. The apparatus of claim 9, wherein the memory array is a Programmable Read Only Memory (PROM).
-
15. An apparatus for providing a configuration data file to a programmable logic device (PLD), comprising:
-
a computer device including;
computer readable program code for statistically analyzing the configuration data file and generating a plurality of recurring bit sequences, each recurring bit sequence including low and low values in a different sequence;
computer readable program code for assigning alphabetic sequences to the recurring bit sequences; and
computer readable program code for configuration data file by substituting the alphabetic sequences for the recurring bit sequences, thereby generating a compressed data file;
a memory array coupled to receive the compressed data file from the computer device; and
a decompression circuit coupled to receive the compressed data file from the memory array and coupled to provide a decompressed data file to the PLD, wherein the computer device further comprises;
computer readable program code for evaluating the configuration data file based on a first compression algorithm;
computer readable program code for evaluating the configuration data file based on a second compression algorithm; and
computer readable program code for selecting one of the first and second compression algorithms. - View Dependent Claims (16)
means for loading a code sequence into the memory array, the code sequence indicating one of the first and second decompression algorithms.
-
Specification