1、LZW压缩简介
略,参考原文档
2、LZW压缩原理
略,参考原文档
3、LZW压缩实现难点
FPGA实现LZW算法要解决以下5个问题:
1)字典容量选择
在实现LZW压缩与解压缩算法的时候,需要构建一个字典,用来存放压缩过程中形成的字符串表。LZW算法的字典是自适应生成的,在实际应用中,若无限制地增大字典的容量,虽然可能获得更好的压缩率,但进行字符串匹配时查找的时间会变长,并且随着编码的码字位数增加,有时可能会导致压缩效率降低,影响压缩速率,因此字典的容量要受一定的限制。
2)压缩速度
利用RAM来构造字典,由于RAM查找是根据地址的累加进行串行查找的,这种查找方法将会影响数据的输出速度,最终造成输入数据的溢出。例如,对于一个深度为512的字典,需要的查找时间为l~512个不等周期(若第N个地址查到,则需要N个时钟周期)。
3)压缩率
第一,设置字典的不同大小可以影响压缩率。当所设置的字典比较小的时候,字符串表在很短的时间内就会被填满,导致字典的匹配性不强,这样就对数据的压缩效果产生影响,使得压缩率不高。
第二,字典更新策略可以影响压缩率。由于字典的容量有限,随着压缩过程的进行,字典会被填满,若是简单的不再向字典中增加内容,那么后面的压缩率就会降低 ,而如果将字典全部清除重新建立字典,在字典建立初期压缩率也是很低的。
4)资源利用率
字典的建立使用FPGA片内资源来完成,大容量字典虽然会提高压缩比,但必须考虑到FPGA内部的资源(FPGA内部RAM资源)。
5)程序鲁棒性
FPGA设计过程中模块划分非常重要,好的模块划分能够大大减少逻辑所消耗的面积并优化功能的时序关键路径。对于系统时钟在200MHz的以上逻辑设计,如果只考虑逻辑功能,而不考虑最终的代码综合和实现,时序结果出现大量的时序违规,可以说这个设计是不可靠的。
4、LZW压缩方案
1)字典容量应该选择多大?
略,参考原文档
2)如何提高压缩速度?
略,参考原文档
3)如何考虑压缩率?
略,参考原文档
4)如何考虑资源利用率?
略,参考原文档
5)如何设计程序鲁棒性
略,参考原文档
5 LZW压缩测试及性能
LZW算法测试主要分为软件测试、硬件测试、资源利用率、压缩率和压缩速度。软件测试也就是功能仿真,验证逻辑功能正确性;硬件测试是代码运行在实际的FPGA芯片,通过在线逻辑分析仪调试LZW算法验证逻辑正确性;资源利用率测试是指代码综合或实现后占用FPGA内部资源使用情况。
6 LZW算法结束语
基于xilinx FPGA实现LZW压缩算法。经过仿真验证与硬件验证 , 结果表明该算法的FPGA实现能获得20%左右的压缩比,工作速率12.72MB/s(如果需要更高的工作速率,只需要提高系统时钟即可,250MHz时钟,工作速率为15.89MB/s),FPGA资源使用率非常低,完全满足系统实时处理的需求。技术咨询请发邮件沟通:jhqwy888@163.com。
目前LZW算法改进后,压缩单个字节需要10个时钟周期,若周期T = 5ns,工作速率19.07MB/s;若周期T = 4ns,工作速率23.84MB/s。说明:FPGA资源占用率相对增加一些。

基于FPGA实现压缩算法相关推荐

  1. 基于FPGA的SD卡音乐播放器之完结篇

    基于FPGA的SD卡音乐播放器之完结篇 目录 前言 一.WAV格式 二.FIFO模块 三.音频-SD卡交互模块 四.锁相环模块 五.按键去抖模块 六.按键控制模块 总结 前言 前面已经介绍了WM873 ...

  2. 基于FPGA实现的MobileNet V1,FPGA深度学习加速器设计 CNN Accelerators based on FPGAs

    Automatic Generation of Multi-precision Multi-arithmetic CNN Accelerators for FPGAs 最近arXiv上挂出来一篇文章, ...

  3. 基于FPGA系统合成两条视频流实现3D视频效果

    目录 1.概述 2.时钟架构 3.带锁定视频解码器的同步系统 4.异步视频系统 4.1.时钟三态模式 4.2.两条视频流中的数据对齐误差 4.3.行锁定摄像机对齐误差 4.4.不同的连接长度 4.5. ...

  4. 基于fpga的数码管动态扫描电路设计_【至简设计案例系列】基于FPGA的密码锁设计(altera版)...

    秦红凯 明德扬FPGA科教 一.项目背景概述 随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性.数字密码锁因为它的保密性很高,安全系数也 ...

  5. 快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用...

    来源:机器之心 本文约6000字,建议阅读10分钟 本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用. 典型的实时流式自动语音识别业务如语音搜索.语音输入等和用户操作相关,直接影 ...

  6. FAST:基于FPGA的SDN交换机开源项目

    自1983年自由软件运动领袖Richard Stallman提出了GNU计划以来,开源为软件开发带来了创造性的革命和商业成功.SDN如今的快速发展也离不开开源社区的力量,比如NOX.Floodligh ...

  7. 基于FPGA的以太网开发

      基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但 ...

  8. 基于FPGA的SPI FLASH控制器设计

    1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法 ...

  9. 读论文之《基于 FPGA 的并行全比较排序算法》

    为什么介绍这种排序算法:最近在独立编写霍夫曼编码的verilog HDL设计程序,其中用到了排序模块,对一组数据进行排序,苦寻几天,最终找到了这个全新的适合硬件实现的排序算法,分享与此,以空间换时间的 ...

最新文章

  1. [crypto]-50-base64_encode和base64_decode的C语言实现
  2. php mysqli::close()
  3. [C++] 用Xcode来写C++程序[6] Name visibility
  4. 腾讯与中国人民大学开源最新研究成果:3TS腾讯事务处理技术验证系统
  5. 使用WebService与Oracle EBS进行集成(上)
  6. 7. GD32F103C8T6 定时器 pwm输出
  7. vivo X30新细节曝光:搭载潜望式超远摄支持双模5G
  8. mysql默认密码是多少_192.168.3.1默认登录密码是多少【详细介绍】
  9. 一个***与电脑白痴的爱情故事
  10. Xcode 证书生成、设置、应用
  11. 【python】matplotlib绘图显示不了中文,且没有SimHei、FangSong等字体
  12. java 泛型去重_泛型,list集合去重
  13. 最受商户关注的十大进销存软件,真实功能大测评
  14. java 解析大xml文件_java-通过网络解析大型XML文件
  15. c语言验证费马大定理,数论概论 第四章 高次幂之和与费马大定理 习题解答(宋二娃的BLOG)...
  16. 实现ecshop一键发货功能的方法
  17. Acrel-1200分布式光伏运维平台
  18. ble zephyr lbs样例,一上电进入广播状态,发送的HCI命令
  19. 图片隐写之LSB(Least Significant Bit)原理及其代码实现
  20. Python与Excel——Xlwings基础操作

热门文章

  1. REST和RESTful详解到实战
  2. linux c 日志写入文件,linux下C语言实现写日志功能
  3. 导入失败 mysql_服务器宕机导致mysql出问题的处理方法
  4. Imgproc.findContours函数
  5. 算法提高 输入输出格式练习(java)
  6. java数组表格输出_Java 如何将数组中的数据以表格形式输出
  7. java考前复习之数组
  8. 调参1——随机森林贝叶斯调参
  9. 推荐系统学习(四)推荐系统学习资料(补充中...)
  10. pandas Series归一化