我正在寻找一种好的压缩算法,用于从闪存芯片解压缩数据以加载到 FPGA(Mojo开发板上的Xilinx Spartan6-LX9 )。它必须快速解压缩并且不需要大量工作内存,因为 CPU(ATmega16U4)的时钟频率为 8 MHz,并且只有 2 KiB 的 RAM 和 16 KiB 的程序闪存,其中一些已经在利用。压缩速度并不是特别重要,因为压缩只会在计算机上运行一次,并且压缩算法不需要对任意输入起作用。
这是一个示例比特流。该格式记录在Spartan-6 FPGA 配置手册中(从第 92 页开始)。
通常,数据中存在的模式分为几类,鉴于我正在使用的约束,我不确定其中哪一个最容易被利用:
数据被整体组织成一组已知格式的数据包。比特流的某些部分有些“定型”(例如,它总是以写入某些寄存器开始和结束),而其他命令将以可预测的顺序出现。
有些字节比其他字节更常见。00 和 FF 是迄今为止最常见的,但其他位设置很少的字节(例如,80、44、02)也很常见。
00 和 FF 字节的运行非常频繁。其他模式有时会出现在局部范围内(例如,一个 16 字节的序列会重复几次),但不会出现在全局范围内。
给定约束条件,什么是适合此任务的压缩算法(不是库,除非您确定它适合!)?