基于LZW算法和FPGA的验光仪数据实时无损压缩系统
人眼作为一种生物光学系统,因人而异具有不同屈光力,表现为正视、近视、远视、散光等不同状态。为了了解人眼的屈光状态,决定所需配镜的参数,所进行的一系列检查,称为屈光检查,又叫验光。 验光所用的仪器称为验光仪。验光仪要处理大量的数据,这就涉及到数据存储的问题,鉴于成本考虑,要对数据进行压缩存储[1]。
目前国际上常用的数据无损压缩算法有:LZ系列算法、Huffman 编码算法、游程编码算法、算术编码等。 LZ 系列算法一经问世,其优越性便很快就在数据压缩领域里体现了出来,使用LZ 系列算法的工具软件数量呈爆炸式增长 。 UNIX系统上最先出现了使用LZW 算法的压缩程序, 该程序很快成为了UNIX 世界的压缩标准。 LZW 算法通过对输入码流进行分析,充分利用了相邻输入数据之间的相关性,对于存在大量局部相同性或相似性的数据, 采用 LZW 算法可以取得令人相当满意的压缩率;而且LZW 算法压缩 、解压速度快 ,所占存储空间较小,所以是一种解码速度与压缩性能综合指标相当好的一种压缩算法[2]。
相对于DSP、单片机而言 ,FPGA 的速度更快 ,控制更加灵活。和CPLD 相比,FPGA 更适合实现规模较大 、逻辑复杂度高、寄存器资源使用较多的设计,而且FPGA 逻辑功能强大,功耗低,通用性好,适应性强。 使用 FPGA 可以非常大的减小硬件规模,降低设计成本 ,缩短设计周期 ,提高系统的可靠性、灵活性和保密性。 所以,本系统以单片 PGA 为核心器件,采用 LZW 算法。
1 功能模块的划分
根据LZW 算法基本原理可知 , 要完成实时压缩 ,FPGA就要同时处理输入码流、压缩过程和输出码流。FPGA 内部功能模块划分如图1 所示。
1.1 输入数据缓存模块
所有数据处理和传输工作全由FPGA 完成 ,为了保证异步 时 钟 域 数 据 同 步 , 本 设 计 使 用 FPGA 片 内 的 宏 单 元lpm-ram-dp(双口 RAM)构成一个 FIFO 对输入数据进行缓存[3]。由于ADC 转换后的数据是 12 位, 所以此 FIFO 的数据宽度设 计 为12 位 , 容 量 为 1 K, 当 读 地 址 等 于 写 地 址 时 ,BUSY=‘0’,以 BUSY 信号来防止溢出,如图 2 所示。
1.2 字典存储模块
1)字典的设计 字典存储器需要存放字典项的三部分内容:字典项编码(codevalue)、前缀码(precode)、当前码(appendcode)。存储器的容量设计为1 K,则其地址宽度相应为10 位 ,当前码为 12 位 ,前缀码为 13 位 ,字典项编码也为13 位,则字典存储器总数据宽度为 38 位[4]。字典模型为:
相关文章
- 2024-01-18超声波式固体粘度测量方法
- 2024-10-24检定二等标准水银温度计时标准铂电阻温度计配用数表的进一步探讨
- 2022-07-07一种新型无线传感器遥测系统设计
- 2022-12-29微波效应实验最小样本量估计分析
- 2024-08-05平面度误差的快速评定法-测点分类法



请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。