当前位置:文档之家› 哈夫曼编码系统优化设计及其FPGA硬件实现

哈夫曼编码系统优化设计及其FPGA硬件实现

1 哈夫曼编码算法的优化设计与系统实现
面向FPGA硬件实现的改进哈夫曼编码系统包括输入、排序、编码、输出和存储等模块,下面通过功能仿真和时序验证来评价其预期编码功能(编码效率)和所有性能指标(系统稳定性和时序问题)。

1.1 系统框架
核心模块为排序模块与编码模块,排序模块产生每个编码周期中频数最小与次小节点的地址(标号),将结果送入编码模块,并将编码后的节点进行合并;编码模块根据排序模块送来的结果对相应符号进行编码。

此外,系统还包括输入统计、输出及存储等其他功能模块。

哈夫曼编码系统实现过程包括输入、编码、0-9编码输出、测试数据编码输出和停机操作。

初始系统处于输入状态,在start信号作用下输入一个脉冲,开始读取256个数据,随后进入编码状态。

在编码过程中,排序模块与编码模块同步工作,其工作流程通过Top模块中产生的addrcount与encode_phase信号控制。

编码过程共包含9个编码周期(每个编码周期由7个时钟周期组成),编码周期结束后,系统进入0-9编码输出过程与数据编码输出过程。

一旦数据全部输出完毕,系统进入停机模式。

1.2 排序模块
哈夫曼编码算法编码速度取决于排序算法。

无论是快速排序还是插入排序,传统排序算法均针对串行工作的器件而设计;若采用并行工作特点的FPGA进行硬件实现,将面临时钟周期数多、逻辑复杂且难以优化等问题。

鉴于此,本文针对FPGA 并行处理结构设计一个并行排序算法。

若不考虑时序问题,仅采用组合逻辑实现,
这种算法在一个时钟周期内即可给出排序结果,且组合逻辑单元的数量尚可。

此外,根据需要拆分逻辑层数,插入多级流水线,使时序满足要求,时序优化处理相当灵活。

图1 哈夫曼编码系统流程图
并行排序原理如表1所示,若干个输入数据相互比较,将每个数据与其它数据的比较结果相加,得到每个数据在所有数据中的排名。

排名为0和1的两个数据分别为最小值和次小值,表1中对应为D和B。

输入:10个8bit数,为输入的10个符号的频数。

1个5bit数,为当前编码周期将要产生的新节点的地址(从10000开始,每个编码周期加1)。

输出:2个5bit数,每个编码周期中的最小值和次小值节点所对应的地址。

每个节点由地址与频数组成,地址是10个5bit的rank 寄存器。

to the maximum extent, and the parallel operation mode of sorting module and coding module is more conducive to the implementation of FPGA system. The coding technology can be extended to artificial intelligence chip design.
Keywords: Hoffman coding; FPGA hardware implementation; Data compression
应原来10个数据中的最小值和次小值)。

步骤5:将最小值与次小值对应的地址装入输出寄存器。

步骤6:将最小值对应节点置为无效(频数置为FF),将次小值对应节点的频数置为最小值与次小值频数之和,地址置为当前编码周期的新节点地址。

改进后哈夫曼编码系统的基本原理显示如下:
第1个周期内,8为频数最小节点(左节点),4为频数次小节点(右节点),给8和4的最后一位分别编码为0和1。

此时,8和4的父节点编码为10。

第2个周期内,2为左节点,10为右节点。

给2的最后一位编码为0,给10的所有子叶节点的最后一位(已被编码的位不算)编码为1。

此时,2、8、4的父节点编码为11。

以此类推,最后一个编码周期,16为左节点,17为右节点。

此时给7、2、8、4、3最后一位编码为0,给9、0、5、6、1最后一位编码为1。

9个编码周期即可完成编码。

显然,改进后的编码方式简单高效。

采用FPGA平台对编码算法进行硬件实现,简化了逻辑结构,减少了不必要的资源占用,避免了复杂逻辑导致的时序问题。

2 哈夫曼编码的系统仿真与性能验证
2.1 编码算法的实现与仿真
燕尾箭头指示对应符号在当前编码周期完成后的编码结果;加粗方框代表Parent_Addr与当前编码周期产生2.2 编码系统的稳定性测试
为了确保在各种输入数据下编码算法均能正确输出编码结果,需要哈夫曼编码系统进行稳定性测试,测试程序采用python编写,随机生成测试数据,运行仿真,将编码输出结果与软件编码结果进行比对,对解码后输出结果与输入数据进行比对,将所有结果记录到文件,使用脚本令计算机反复自动执行上述过程。

测试时,若直接生成256个0-9随机数据,则0-9频数接近均匀分布,不利于验证系统测试在输入数据各种频数分布下的稳定性。

因此,需要确保数据的随机性。

本方案先随机地产生数据分布的频数,再根据频数生成测试数据,保证稳定性测试全面覆盖所有情况下的输入数据。

测试5000组随机数据的编码正确率为100%,说明编码系统功能正常、性能稳定。

3 结论
为了提高数据压缩效率并降低系统成本,本文突破了传统哈夫曼编码规则和算法流程,提出了面向FPGA平台的哈夫曼编码系统优化设计框架和硬件实现方案,利用动态可重构计算技术有效提高编码效率和存储资源,通过大量仿真测试与性能验证对该编码系统进行全面评估。

在编码过程中,排序模块采取并行排序方式,充分兼顾FPGA并行工作特点,减少时钟周期数;编码模块避免传统二叉树建立过程,简化逻辑结构,提高了硬件资源利用率,减少了面积开销,完全避免由复杂逻辑导致的一系列时序问题。

该哈夫曼编码系统实现
(下转第79页)
以对现有的SDH网络进行升级,制定出DWDM波分复用技术以及RRR弹性分组环和MSTP多项业务数据传输平台。

对于已经完成建设的SDH地区,可以对现有的SDH网络进行升级使其可以适应IP业务的通信网络,对于没有建立SDH网络的地区应该集合当地实际发展,合理选择合适的技术措施。

另一方面,还可以对MSTP技术进行广泛的推广应用,这个技术在传统的SDH的基础上增添了数据处理的功能,可以很好的使用数据的变化,结合多个网络设备,对统一管控是十分有帮互助的。

MSTP既可以兼容TDM业务,又可以满足IP数据业务的需求,可以使得电力信息通信网络具有一定可靠特征。

2.4 拓宽网络技术的应用范围
在电力信息通信中,网络技术可以广泛应用于各个领域。

例如在调度电话与行政电话、发挥继电保护作用的信号灯业务和管理系统的指令与信息等。

在网络信息技术发展的推动下,电力信息通信系统得到进一步的完善,使得电力信息通信业务逐渐往多元化发展。

但传统的网络结构难以满足业务发展的需求,这会导致增加资源占用率。

所以电力企业需要进一步挖掘网络技术的其阿里,进一步拓展网络技术的应用范围,不断的融合和创新技术,慢慢的实现那不同业务之间的对接。

3 结语
当前我国电力行业在不断的发展,人们在生活和工作中对电力行业各项业务的需求也在不断的增加,其在社会中的重要性变得越来越重要,将网络技术应用到电力信息通信,对整个电力行业的发展都有着重要的作用。

其中的通电系统运行状态会直接影响到社会的日常稳定运行。

电力企业是比较特殊的服务行业,是确保其他行业正常运行的关键因素,所以电力通信系统需要不断的完善和创新,才能够顺应时代和社会的发展,满足各行各业的需求。

参考文献
[1]谢清宇,庞霞.浅议网络技术在电力信息通信中的应用[J].
科技与企业,2012(7):91-91.
[2]梁天乐.现代形势下网络技术在电力信息通信系统中的
应用[J].中国新通信,2014(23):79-79.
[3]刘飞鹏,张旭,王佳佳.浅论新形势下网络技术在电力信
息通信中的应用[J].通讯世界, 2016(20):136-137. [4]郭欣华.探究新形势下网络技术在电力信息通信中的应用
[J].信息与电脑(理论版),2018,No.406(12):174-175.
[5]董卫.简析新时期新网络技术在电力信息通信中的应用
[J].信息通信,2015(6):159-159.
了预期编码功能和所有性能指标,完全满足时钟周期数少、频率高、资源占用少等设计需求。

参考文献
[1]张红军,徐超.基于改进哈夫曼编码的数据压缩方法研究
[J].唐山师范学院学报,2014年第36卷第5期. [2]刘方明,潘晓中,杨晓元.数字图像DCT变换的FPGA实
现[J].计算机工程与应用,2012,48(6):65-68.
[3]张颖超.基于FPGA的 Huffman 编码并行实现及高速存
储系统设计[D].长安大学,2015年.
(上接第85页)。

相关主题