IP Library Granted Patent US 11,469,773
Granted Patent B1
US 11,469,773 · App. 17/350,706 · Granted Oct 11, 2022

Deflate compression using sub-literals for reduced complexity Huffman coding

Inventor: Yingquan Wu (Palo Alto, CA)
H03M7/42H03M7/405H03M7/46H03M7/6005
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,469,773
App. No.
17/350,706
Granted
Oct 11, 2022
Kind
B1
Abstract

A literal element that has a plurality of bits is received. The plurality of bits in the literal element is divided into a first sub-literal comprising a first set of bits and a second sub-literal comprising a second set of bits. The first sub-literal is encoded using a first Huffman code tree to obtain a first sub-literal codeword; the second sub-literal is encoded using a second Huffman code tree to obtain a second sub-literal codeword. Encoded data that includes information associated with the first Huffman code tree, information associated with the second Huffman code tree, the first sub-literal codeword, and the second sub-literal codeword is output.

Claims (69)

1. A system, comprising:

a literal encoder interface, wherein:

the literal encoder interface receives a literal element that has a plurality of bits; and

the literal encoder interface divides the plurality of bits in the literal element into a first sub-literal comprising a first set of bits and a second sub-literal comprising a second set of bits;

a first Huffman code tree encoder, wherein the first Huffman code tree encoder encodes the first sub-literal using a first Huffman code tree to obtain a first sub-literal codeword;

a second Huffman code tree encoder, wherein the second Huffman code tree encoder encodes the second sub-literal using a second Huffman code tree to obtain a second sub-literal codeword; and

a multiplexer, wherein the multiplexer outputs encoded data that includes information associated with the first Huffman code tree, information associated with the second Huffman code tree, the first sub-literal codeword, and the second sub-literal codeword.

2. The system recited in claim 1 , wherein the system is implemented using one or more of the following: an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).

3. The system recited in claim 1 further including storage having a data size that is a multiple of 4,096 bytes, wherein:

the encoded data is output to the storage and is stored on the storage; and

the first Huffman code tree is further associated with a set of supported lengths having 22 supported lengths.

4. The system recited in claim 1 further including storage having a data size that is a multiple of 4,096 bytes, wherein:

the encoded data is output to the storage and is stored on the storage; and

the first Huffman code tree is further associated with a set of supported lengths having a maximum supported length of 24.

5. The system recited in claim 1 further including storage having a data size that is a multiple of 4,096 bytes, wherein:

the encoded data is output to the storage and is stored on the storage;

the first set of bits in the first sub-literal has three bits; and

the second set of bits in the second sub-literal has five bits.

6. A method, comprising:

receiving a literal element that has a plurality of bits;

dividing the plurality of bits in the literal element into a first sub-literal comprising a first set of bits and a second sub-literal comprising a second set of bits;

encoding the first sub-literal using a first Huffman code tree to obtain a first sub-literal codeword;

encoding the second sub-literal using a second Huffman code tree to obtain a second sub-literal codeword; and

outputting encoded data that includes information associated with the first Huffman code tree, information associated with the second Huffman code tree, the first sub-literal codeword, and the second sub-literal codeword.

7. The method recited in claim 6 , wherein the method is performed using one or more of the following: an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).

8. The method recited in claim 6 , wherein:

the encoded data is output to a storage and is stored on the storage, wherein the storage has a data size that is a multiple of 4,096 bytes; and

the first Huffman code tree is further associated with a set of supported lengths having 22 supported lengths.

9. The method recited in claim 6 , wherein:

the encoded data is output to a storage and is stored on the storage, wherein the storage has a data size that is a multiple of 4,096 bytes; and

the first Huffman code tree is further associated with a set of supported lengths having a maximum supported length of 24.

10. The method recited in claim 6 , wherein:

the encoded data is output to a storage and is stored on the storage, wherein the storage has a data size that is a multiple of 4,096 bytes;

the first set of bits in the first sub-literal has three bits; and

the second set of bits in the second sub-literal has five bits.

11. A system, comprising:

an input interface, wherein the interface receives encoded data that includes information associated with a first Huffman code tree, information associated with a second Huffman code tree, a first sub-literal codeword, and a second sub-literal codeword;

a first Huffman code tree decoder, wherein the first Huffman code tree decoder decodes the first sub-literal codeword using the first Huffman code tree to obtain a first sub-literal comprising a first set of bits;

a second Huffman code tree decoder, wherein the second Huffman code tree decoder decodes the second sub-literal codeword using the second Huffman code tree to obtain a second sub-literal comprising a second set of bits;

a combiner, wherein the combiner combines the first set of bits in the first sub-literal and the second set of bits in the second sub-literal to obtain a literal element; and

an output interface, wherein the output interface outputs the literal element.

12. The system recited in claim 11 , wherein the system is implemented using one or more of the following: an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).

13. The system recited in claim 11 further including storage having a data size that is a multiple of 4,096 bytes, wherein:

the encoded data is stored on the storage and is received from the storage; and

the first Huffman code tree is further associated with a set of supported lengths having 22 supported lengths.

14. The system recited in claim 11 further including storage having a data size that is a multiple of 4,096 bytes, wherein:

the encoded data is stored on the storage and is received from the storage; and

the first Huffman code tree is further associated with a set of supported lengths having a maximum supported length of 24.

15. The system recited in claim 11 further including storage having a data size that is a multiple of 4,096 bytes, wherein:

the encoded data is stored on the storage and is received from the storage;

the first set of bits in the first sub-literal has three bits; and

the second set of bits in the second sub-literal has five bits.

16. A method, comprising:

receiving encoded data that includes information associated with a first Huffman code tree, information associated with a second Huffman code tree, a first sub-literal codeword, and a second sub-literal codeword;

decoding the first sub-literal codeword using the first Huffman code tree to obtain a first sub-literal comprising a first set of bits;

decoding the second sub-literal codeword using the second Huffman code tree to obtain a second sub-literal comprising a second set of bits;

combining the first set of bits in the first sub-literal and the second set of bits in the second sub-literal to obtain a literal element; and

outputting the literal element.

17. The method recited in claim 16 , wherein the method is performed using one or more of the following: an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).

18. The method recited in claim 16 , wherein:

the encoded data is stored on a storage and is received from the storage, wherein the storage has a data size that is a multiple of 4,096 bytes; and

the first Huffman code tree is further associated with a set of supported lengths having 22 supported lengths.

19. The method recited in claim 16 , wherein:

the encoded data is stored on a storage and is received from the storage, wherein the storage has a data size that is a multiple of 4,096 bytes; and

the first Huffman code tree is further associated with a set of supported lengths having a maximum supported length of 24.

20. The method recited in claim 16 , wherein:

the encoded data is stored on a storage and is received from the storage, wherein the storage has a data size that is a multiple of 4,096 bytes;

the first set of bits in the first sub-literal has three bits; and

the second set of bits in the second sub-literal has five bits.

Assignments (2)
CHANGE OF NAME Recorded Aug 13, 2025
From: BEIJING TENAFE ELECTRONIC TECHNOLOGY CO., LTD.
To: NANJING TENAFE ELECTRONIC TECHNOLOGY CO., LTD.
Reel/Frame 072008/0631 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2021
From: WU, YINGQUAN
To: BEIJING TENAFE ELECTRONIC TECHNOLOGY CO., LTD.
Reel/Frame 057329/0254 →