namespace details

// typedefs

typedef ap_uint <BITS_PER_LOOP> Digit

// enums

enum blockStatus
enum xfBlockType_t
enum xfLitBlockType_t
enum xfSymbolCompMode_t

// structs

template <
    int OF_DWIDTH = 16,
    int LL_DWIDTH = OF_DWIDTH,
    int ML_DWIDTH = 8
    >
struct SequencePack

// global variables

static const uint8_t RADIX
static const uint8_t BITS_PER_LOOP
static const ap_uint <c_tgnSymbolBits> INTERNAL_NODE
const ap_uint <32> c_magicNumber
const uint32_t c_skipFrameMagicNumber
const uint32_t c_skippableFrameMask
const uint8_t c_maxZstdHfBits
const uint16_t c_maxCharLit
const uint16_t c_maxCharDefOffset
const uint16_t c_maxCharOffset
const uint16_t c_maxCharMatchlen
const uint16_t c_maxCharHuffman
const uint16_t c_maxLitV
const uint8_t c_maxCodeLL
const uint8_t c_maxCodeML
const uint8_t c_maxCodeOF
const uint8_t c_fseMaxTableLogHF
const uint8_t c_fseMaxTableLogLL
const uint8_t c_fseMaxTableLogML
const uint8_t c_fseMaxTableLogOF
const uint8_t c_fseMinTableLog
const uint8_t c_fseMaxTableLog
const uint32_t c_baseLL[c_maxCharLit+1]
const uint32_t c_baseML[c_maxCharMatchlen+1]
const uint8_t c_extraBitsLL[c_maxCharLit+1]
const uint8_t c_extraBitsML[c_maxCharMatchlen+1]
const int16_t c_defaultDistribution[c_maxCharLit+c_maxCharDefOffset+c_maxCharMatchlen+3]
const uint8_t c_litlenCode[64]
const uint8_t c_matlenCode[128]
const uint32_t c_bitMask[32]
const ap_uint <4> c_hufFixedBlen[256]
const uint8_t c_hufFixedBlenCnt[3]
const uint32_t c_litlenDeltaCode
const uint32_t c_matlenDeltaCode
const uint32_t c_rtbTable[8]
uint16_t c_testSeqData[70][3]
const char c_testLitData[462]
const uint8_t c_hfCodeTable[122]
const uint8_t c_hfBitlenTable[122]
const int16_t c_litNormTable[64]
const int16_t c_llNormTable[64]
const int16_t c_mlNormTable[64]
const int16_t c_ofNormTable[64]

crc32

#include "checksum_wrapper.hpp"
template <int W>
void crc32 (
    hls::stream <ap_uint <32>>& crcInitStrm,
    hls::stream <ap_uint <8*W>>& inStrm,
    hls::stream <ap_uint <5>>& inPackLenStrm,
    hls::stream <ap_uint <32>>& outStrm
    )

crc32 computes the CRC32 check value of an input data.

Parameters:

W byte number of input data, the value of W includes 1, 2, 4, 8, 16.
crcInitStrm initialize crc32 value
inStrm input messages to be checked
inPackLenStrm effetive lengths of input message pack, 1~W. 0 means end of message
outStrm crc32 result to output

adler32

adler32 overload (1)

#include "checksum_wrapper.hpp"
template <int W>
void adler32 (
    hls::stream <ap_uint <32>>& adlerStrm,
    hls::stream <ap_uint <W*8>>& inStrm,
    hls::stream <ap_uint <5>>& inPackLenStrm,
    hls::stream <ap_uint <32>>& outStrm
    )

adler32

Parameters:

W Input DataWidth
adlerStrm Initial adler value
inStrm input data stream
inPackLenStrm input data strb
outStrm output adler output

adler32 overload (2)

#include "checksum_wrapper.hpp"
template <int W>
void adler32 (
    hls::stream <ap_uint <W*8>>& inStrm,
    hls::stream <ap_uint <5>>& inPackLenStrm,
    hls::stream <ap_uint <32>>& outStrm
    )

adler32

Parameters:

W Input DataWidth
inStrm input data stream
inPackLenStrm input data strb
outStrm output adler output

huffmanProcessingUnit

#include "huffman_encoder.hpp"
void huffmanProcessingUnit (
    hls::stream <IntVectorStream_dt <9, 1>>& inStream,
    hls::stream <IntVectorStream_dt <32, 1>>& outStream
    )

This module does updates lz77 byte data to 32bit data.

Parameters:

inStream input packet of 8bit contains either literal or marker or match length or distance information.
outStream output 32bit compressed data

dataStrbSplitter

#include "inflate.hpp"
template <int DATA_WIDTH>
void dataStrbSplitter (
    hls::stream <ap_uint < (DATA_WIDTH*8)+DATA_WIDTH>>& input,
    hls::stream <ap_uint <DATA_WIDTH*8>>& outData,
    hls::stream <ap_uint <5>>& outStrb
    )

Splits input into data and strb.

Parameters:

DATA_WIDTH data width of data stream
input combined input of data and strb
outData output data
outStrb output strb

streamDistributor

#include "inflate.hpp"
template <int DATA_WIDTH>
void streamDistributor (
    hls::stream <ap_uint < (DATA_WIDTH*8)+DATA_WIDTH>>& input,
    hls::stream <ap_uint < (DATA_WIDTH*8)+DATA_WIDTH>>& output1,
    hls::stream <ap_uint < (DATA_WIDTH*8)+DATA_WIDTH>>& output2
    )

Splits Data Stream into multiple.

Parameters:

DATA_WIDTH  
input input stream
output1 output streams
output2 output streams

chckSumComparator

#include "inflate.hpp"
void chckSumComparator (
    hls::stream <ap_uint <32>>& checkSum1,
    hls::stream <ap_uint <32>>& checkSum2,
    hls::stream <bool>& output
    )

compare two checksums and generate 0 if match and 1 otherwise

Parameters:

checkSum1 1st checksum input
checkSum2 2nd checksum input
output error output