硬件huffman解码器(三)-并行解码

Huffman并行解码

上篇提出的串行Huffman解码优化方法可以有效地提高解码速度。但其缺点是一种电路设计只能用于一种编码(或针对所有具有相同状态转换的编码)的解码。因此,我们将在下文中介绍一种可配置的Huffman并行解码方法。

编解码操作除了可以使用固定算法映射得到的组合逻辑或状态机实现,也可以采用ROM实现。ROM的输入(地址)为编解码前的数据,ROM的输出(每个条目的值)为编解码后的数据。对于定长编码,只需要一个预先写好内容的ROM(或RAM)即可实现对应的编解码器。而对于如Huffman编码这样的不定长编码,则需要加入额外的电路实现。

Shaw-Min Lei在1991年发表的一篇论文”An Entropy Coding System for Digital HDTV

Applications”就提到了这种Huffman并行解码电路。

假设一个Huffman编码的最长编码长度为n,则我们需要一个长度至少为n的移位寄存器、一个大小为的CODE RAM和一个大小为的LEN RAM。CODE RAM用于存储解码后的字符,LEN RAM存储每个Huffman编码的长度。以下图中的编码为例,最大编码长度为5,在CODE RAM中,地址为00xxx的条目存储的值都为字符a的编码,地址为01xxx的条目存储的值都为b的编码;在LEN RAM中,地址为00xxx的条目存储的值都为2,地址为01xxx的条目存储的值都为2。

Buffer用于存储待解码的二进制序列,buffer的长度一般大于最大编码长度,但只有一个最小长度为最大编码长度的窗口作为解码ROM地址输入用于解码。每当LEN RAM读出的数值(编码长度)小于等于当前buffer中有效数据的长度时,CODE RAM读出的值即为解码结果。Buffer在解码完一个字符后进行相应的移位操作(数据移位或者窗口移位)。

例如上图中解码流程:

1. Buffer中存有32位有效数据

2. 时刻1,解码得到字符b,窗口右移2位

3. 时刻2,解码得到字符g,窗口右移7位

4. 以此类推

5. 时刻6,解码的到e,右移2位,并且buffer读入新数据

6. 以此类推

7. 最终完成解码过程

文章作者:速易芯 李昊翔

更多详细文章可关注公众号 “速易芯Fastchip” !

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

速易芯Fastchip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值