Lossless Compression Coding Library for LabVIEW FPGA


Lossless data compression is a class of data compression algorithms that allows the exact original data to be reconstructed from the compressed data. Lossless compression is used when it is important that the original and the decompressed data be identical, or when no assumption can be made on whether certain deviation is uncritical. Typical applications include data storage and transmission.


The following LabVIEW FPGA IP core allows lossless data compression based on the modified Lempel-Ziv-Ross-Williams-1 algorithm. Its focus is on high throughput of uncompressed data at the expense of a somewhat lower compression ratio. Two byte of uncompressed data can be processed at every clock cycle.
An example with coder and decoder is included for one channel and two channel compression (suitable for RF Data streaming). The core is fully pipelined to allow high clock speeds. 100MHz can easily be achieved on 796xR and 797xR FPGA’s. This results in a maximum compression throughput of almost 200MBytes/sec.
Most of other algorithms are suitable for text or audio compression but there are no tools to compress test signals especially in streaming applications.
In addition, the following algorithm has zero delay, which means for every input data there is always an output data (playback).

Technical Specifications

Maximum throughput

200 MB/s

Supported devices

All RIO devices from National Instruments

Input data type


Output data type

2 x U8

Maximum compression (%)

30%, depending on signal type and BW

Memory depth

256 samples

Compression method

Modified LZ78

Resource used on FPGA

10% for NI PXIe-7972R


Read_me , Test_Sequence