基于verilog实现哈夫曼编码的新方法_
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图1 硬件总体框架
计算信号。
计算模块进行计算,生成各字符对应的编码值,做成编码表,结束后向输出模块发送输出信号。
最后输出模块通过查表方式输出各字符的编码值以及哈夫曼编码结果。
FIFO模块用于接收原始数据和向输出模块提供数据源。
3 实现流程
本文使用verilog语言在vivado平台上进行哈夫曼编码硬件模块的实现,选用器件为xc7a100tcsq324-1。
3.1 FIFO模块
本文的FIFO模块使用vivado的IP核生成,设计时选择好相应参数配置,生成verilog文件后即可直接调用。
3.2 输入模块
使用多个计数器对输入各字符频数以及输入字符总量进行计数,频数被存放在寄存器中,当字符输入结束个寄存器记录字符池的频数
3.3.2 哈夫曼编码计算流程
进行哈夫曼编码计算时
作完成各字符编码的生成以及字符在字符池中的移动以图2中的实例描述计算流程
图2中共有5种字符,
“1”:10,“2”:20,“
图2(a)为初始化效果,
符,每个字符池的频数恰为那个字符的频数
的编码值和编码长度清零
循环操作,最终可以从图
值和编码长度,“0”编码值为
1011,“2”编码值为111
编码值为0。
每次循环操作包含排序
图2 硬件实现哈夫曼算法执行过程示例
和、频数更新、字符移动、编码值更新及编码长度更新8步。
其中前4步按顺序完成,然后同时完成后4步。
总循环次数由字符种类数控制。
排序操作功能是将每个节点池的频数从小到大进行排序,本文借鉴了参考文献[5]中的方法,硬件实现时通过构建比较器阵列将每两个数两两比较,再通过加法器对每个字符频数的比较结果求和。
对一个字符频数,若它小于另一个字符的频数,则相应结果为0,否则为1。
那么通过指定字符频数与其他字符频数的比较结果之和可以得知它的频数在所有频数中的位置。
挑选操作是将排序操作中比较结果为0和1对应的字符频数选出,它们代表最小频数和次小频数,挑选操作同时挑选出这两个频数对应的字符池ID。
硬件实现时构字符池频数变成
字符移动操作指将特定字符从一个字符池移动到另一个字符池中
字符池的所有字符移动到次小频数对应字符池中
图3 输入时序图4 输出时序
图5 控制台输出
本系统采用NI 公司的LabVIEW 软件进行开发。
主控程序软件采用“基于队列的动态多功能生产者消费者”设计模式,“生产者”线程是人机交互的接口,用于截获用户操作并将相应的命令发送到“消费者”线程,由“消息管理机构”负责将命令分发到各功能模块中或在自身线程完成相应处理。
该系统软件包括主控程序、系统管理模块、资源管理模块、信号管理模块等软件模块,软件架构如图2所示。
该软件基于测试引擎+测试线程的设计结构,各个引擎独立运行,并分别负责各自的功能线程,实现了测试的并行运行。
该软件各模块介绍如下:
1)人机界面,主要提供用户操作菜单、按钮,并图3 软件界面
软件界面如图3所示5 结论
本文设计的基于PXI 测试系统,具有高性能点,可实现实时数据采集完成多通道同步任务。
互良好,改进和升级都非常方便和核电安全的通信领域具有广泛的应用前景。
参考文献:
[1]姚远.基于PXI的自动化测试系统设计[J].电子测量技术,2012, 35(6):25-28.[2]王东岳,陈斯文.基于PXI总线的波控设备自动化测试系统设计[J].信息化研究,2016(1):31-34.
[3]李亦君.基于PXI和GPIB总线电路测试系统的开发与设计[J].现代电子技术, 2010,33(22):35--37.
out_start 高电平脉冲表明输出开始。
首先输出各字符编码序列,包含4bit 编码长度和实际编码值,然后输出原始字符串的编码值。
huf_out_end 高电平脉冲表明输出结束。
图5为vivado 控制台输出,它展示了各字符编码值以及原始字符和testbench 进行的解码字符比较,说明模块正常运行。
法,利用本文的字符池数据结构对每次输入的数据实时生成哈夫曼编码表,从平均码长角度保证了编码的最优,同时避免了生成完整的哈夫曼树少了资源占用,并避免了遍历哈夫曼树所需的额外操作,实现方便快捷参考文献:
[1]邓丽娟,田金文,柳健,等.哈夫曼编码器IP核的设计与实现[J].微电子学与计算机,2005(02):9-12.[2]张颖超.基于FPGA的Huffman编码并行实现及高速存储系统设计[D].长安大学,2015.
[3]曾英,邓曙光.基于FPGA的Huffman编码器的设计[J].湖南城市学院学报(自然科学版), 2014(01):32-[5]师廷伟,金长江.基于FPGA的并行全比较排序算法[J].数字技术与应用,2013(10):126-127.
(上接第42页)。