Canonical huffman encoded data decompression algorithm
First Claim
Patent Images
1. A decompression device for canonical Huffman encoded data, the device comprising:
- first data register means for storing a plurality of FIRSTCODE data values;
second data register means for storing a plurality of SYMBOL POINTER data values;
comparing means coupled for comparing different FIRSTCODE data values with corresponding bits of a string of compressed data;
means for combining the bits of compressed data with one of the FIRSTCODE and one of the SYMBOL POINTER data values selected as a function of an output of the comparing means and outputting an address; and
symbol table means coupled for receiving the address and outputting a corresponding symbol.
1 Assignment
0 Petitions
Accused Products
Abstract
An apparatus and method for parallel decompression of compressed canonical Huffman encoded data.
40 Citations
30 Claims
-
1. A decompression device for canonical Huffman encoded data, the device comprising:
-
first data register means for storing a plurality of FIRSTCODE data values;
second data register means for storing a plurality of SYMBOL POINTER data values;
comparing means coupled for comparing different FIRSTCODE data values with corresponding bits of a string of compressed data;
means for combining the bits of compressed data with one of the FIRSTCODE and one of the SYMBOL POINTER data values selected as a function of an output of the comparing means and outputting an address; and
symbol table means coupled for receiving the address and outputting a corresponding symbol. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19)
-
-
12. A decompression device for decompressing a string of data bits compressed as canonical Huffman encoded data in a data file, wherein the data file includes (i) a string of compressed data bits, (ii) a FIRSTCODE data table, (iii) a SYMBOL POINTER data table, and (iv) a SYMBOL table, and wherein a relationship is fixed between data in the FIRSTCODE data table and the compressed data bits, and a relationship is fixed between the data in the FIRSTCODE data table and the data in a SYMBOL POINTER data table, the device comprising:
-
(a) a coupling structured for receiving a canonical Huffman encoded data file;
(b) a plurality of FIRSTCODE data registers coupled to receive and store data values from the FIRSTCODE data table portion of the data file;
(c) a plurality of SYMBOL POINTER data registers coupled to receive and store data values from the SYMBOL POINTER data table portion of the data file;
(d) a comparator coupled between each FIRSTCODE register and the string of compressed data bits for comparing the value stored in each FIRSTCODE data register with a corresponding bit of the string of compressed data bits;
(e) a multiplexer coupled to each comparator for determining a successful comparison result and responsively outputting a resolved symbol address associated therewith; and
(f) intercoupled addition and subtraction blocks coupled to the multiplexer and each of the SYMBOL POINTER data registers and the corresponding FIRSTCODE data registers for;
(i) adding the value stored in the SYMBOL POINTER data register associated with a successful comparison result to the corresponding bit of the string of compressed data bits, (ii) subtracting the value stored in the FIRSTCODE data register associated with a successful comparison from the corresponding bit of the string of compressed data bits, (iii) generating the resolved symbol address, and (iv) outputting the resolved symbol address to the SYMBOL table portion of the data file for responsively outputting a corresponding resolved symbol.
-
-
17. A device for decompression of compressed data in a canonical Huffman encoded data file, wherein the data file includes:
- a string of compressed data bits, a FIRSTCODE data table, a SYMBOL POINTER data table, and a SYMBOL table; and
wherein a relationship is fixed between FIRSTCODE and the compressed data bits according to FIRSTCODE[0] and bit 0, FIRSTCODE [1]and bits 0, 1, FIRSTCODE[2] and bits 0, 1, 2, through FIRSTCODE[N] and bits 0, 1, 2, . . . N; and
a relationship is fixed between FIRSTCODE and SYMBOL POINTER according to FIRSTCODE[0] and SYMBOL POINTER[0], FIRSTCODE[1] and SYMBOL POINTER[1], through FIRSTCODE[N] and SYMBOL POINTER[N], the device comprising;
a plurality of FIRSTCODE registers each having a FIRSTCODE value associated therewith;
a plurality of SYMBOL POINTER registers each having a SYMBOL POINTER value associated therewith;
a plurality of comparators each coupled to a different FIRSTCODE register to accept a FIRSTCODE value therefrom and coupled to accept a string of compressed data bits from a memory having compressed canonical Huffman encoded data stored therein, the comparators being structured to simultaneously compare the FIRSTCODE values with corresponding bits of the string of compressed data bits;
a multiplexer coupled to accept a result of each of the comparators, the multiplexer being structured to sequentially examine the results and to select a successful comparison result;
a plurality of addition blocks each coupled to an output of the multiplexer and a different one of the SYMBOL POINTER registers, one of the addition blocks being associated with one of the SYMBOL POINTER registers corresponding to one of the FIRSTCODE registers having the successful comparison result and being structured to add the value from the corresponding SYMBOL POINTER register to the string of compressed data bits;
a plurality of subtraction blocks each coupled to a different one of the FIRSTCODE registers and to one of the addition blocks corresponding to one of the FIRSTCODE registers, one of the subtraction blocks being associated with the FIRSTCODE register having the successful comparison result and being structured to subtract the value of the successful FIRSTCODE register from the result of the corresponding addition block and to output an address to the multiplexer; and
a SYMBOL table coupled to the multiplexer to receive the address, the SYMBOL table being structured to output a resolved symbol associated with the received address.
- a string of compressed data bits, a FIRSTCODE data table, a SYMBOL POINTER data table, and a SYMBOL table; and
-
20. A method for decompression of canonical Huffman encoded data, the device comprising:
-
receiving a file of canonical Huffman encoded data, the file including a string of compressed canonical Huffman encoded data bits, a table of FIRSTCODE data values, a table of SYMBOL POINTER data values, and a table of resolved symbols;
storing the FIRSTCODE data values in FIRSTCODE data registers;
storing the SYMBOL POINTER data values in SYMBOL POINTER data registers;
comparing the FIRSTCODE data values with corresponding bits of the compressed data;
examining results of comparing the FIRSTCODE data values with corresponding bits of the compressed data to determine a match;
combining the bits of compressed data with one of the FIRSTCODE data values and one of the SYMBOL POINTER data values selected as a function of determining a match;
generating an address; and
outputting from the table of resolved symbols a symbol corresponding to the generated address. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
-
Specification