石英表厂家
免费服务热线

Free service

hotline

010-00000000
石英表厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

【新闻】基于FPGA的并行可变长解码器的实现德惠

发布时间:2020-10-18 20:50:26 阅读: 来源:石英表厂家

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 摘要:介绍了一种采用并行方式的构建的多符号可变长码解码器。该解码器通过增加结构的复杂性对硬件资源的占用,换取可变长码解码的高吞吐量。这种结构突破了可变长码码字之间的前向依赖性,可并行侦测出Buffer中的所有可能的码字。采用FPGA实现了这种结构。 </FONT></P>

<P><FONT face=Courier size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 关键词:可变长解码 现场可编程逻辑门阵列 硬件描述语言</FONT></P>

<P><FONT face=Courier size=2></FONT>&nbsp;</P>

<P><FONT face=Courier><FONT size=2>&nbsp;&nbsp;&nbsp; 可变长编码(VLC)是一种无损熵编码,它广泛应用于多媒体信息处理等诸多领域。在H.261/263、</FONT><FONT size=2>MPEG</FONT><FONT size=2>1/2/3等国际标准中,VLC占有重要地位。VLC的基本思想是对一组出现概率各不相同的信源符号,采用不同长度的码字表示,对出现概率高的信源符号采用短码字,对出现概率低的信源符号采用长码字。Huffman编码是一种典型的VLC,其编码码字的平均码长非常接近于数据压缩的理论极限——熵。</FONT></FONT></P>

<P><FONT face=Courier size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 可变长解码(VLD)是VLC的逆过程,它从一组连续的码流中提取出可变长码字,并将之转换为对应的信源符号。由于在VLC过程中,码字之间通常不会加入任何分隔标识,这就造成了在解码过程中识别码字的困难。因此,在VLD过程中,变长码字必须逐一识别,只有码流中居前的码字被识别之后,才能定位后序码字的起始位置,这一点在很大程度上限制了VLD运行的效率。</FONT></P>

<P><FONT face=Courier size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 本文讨论一种新型的VLD解码结构,它通过并行侦测多路码字,将Buffer中的多个可变长码一次读出,这将极大地提高VLD的吞吐量和执行效率。然后采用FPGA对这种并行VLD算法的结构进行验证,最终得出相应结论。</FONT></P>

<P><FONT face=Courier size=2></FONT>&nbsp;</P>

<P><FONT face=Courier><FONT size=2>&nbsp;&nbsp;&nbsp;<STRONG> 1 算法描述</STRONG></FONT></FONT></P>

<P><STRONG><FONT face=Courier size=2></FONT></STRONG>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 由于码流中的可变长码之间具有前向依赖性,因此如何确定可变长码码字在连续码流中的起始位置是VLD的关键所在。传统的VLD解码方案主要为位串行解码方案和位并行解码方案两种。</FONT></P>

<P><FONT face=Courier size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 在位串行解码方案中,码流逐位送入解码器,解码器通过逐位匹配实现可变长码的解码。这种过程实质上是一种建造Huffman树的反过程,从根节点出发,直至叶子节点为止。由于这种方式采用逐位操作方式,而可变长码的码长又各不相同,使得码字识别所需的运行周期也不相同。在解码长较短的码字时,其解码速度较快,而在解码长较长的码字时,其解码速度较慢。显然,位串行解码方案效率相对较低,解码速度因码字长度不同而不同,无法满足某些对实时性要求较高的应用场合。</FONT></P>

<P><FONT face=Courier size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 针对位串行解码方案的不足,多种位并行解码方案被提出。位并行解码方案采用并行方式工作,通过对可变长码的码字进行排序(Ordering)、分割(Partitioning)和簇化(Clustering),采用基于逻辑块的匹配模式中其它树的匹配模式来实现。并行解码方案大大提高了可变长码的解码效率,而且可以确何每个运行周期输出一个解码码字,实现稳定的解码输出。在高级的位并行解码方案中,还可以将解码过程分解为若干阶段,引入流水线操作,进一步提高解码效率。</FONT></P>

<P><FONT face=Courier size=2></FONT><FONT face=Courier>&nbsp;</P>

<P align=center><FONT style="FONT-SIZE: 12px" size=2></FONT></P>

<P><FONT size=2>&nbsp;&nbsp;&nbsp; 在传统的VLD解码方案的基础之上,采用并行操作方式,增加硬件资源和相应的控制逻辑,可实现一个运行周期输出多个解码码字,使可变长码的解码效率进一步得到提高。</FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT size=2>&nbsp;&nbsp;&nbsp; 由于可变长码长度不同,在解码过程中码字存在前向依赖性。如果采用多路并行操作方式,在所有可能成为可变长码码字的起始位置同时进行预测,然后通过后续控制筛选出合法的码字,就可以对多个可变长码实现同时解码。这就是多符号可变长并行解码方案的基本思想。</FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT face=Courier><FONT size=2>&nbsp;&nbsp;&nbsp; 具体说明如下:假设某个信源符号集有K个符号,K个符号所对应的变长码字用Ck=(cok,…,cimk-1)|ckl∈{0,1},k=0,…,k-1表示,这些变长码的长度为集合L,其中最长的码长用ln表示,最短的码长用l1表示;具有相同码长的码字最多为dmax个。现采用分页方式重新</FONT><FONT size=2>组织</FONT><FONT size=2>这些可变长码,将具有相同码长的码字存入一个页内,那么易知一个页内最多可能拥有dmax个码字。为了识别一个页内的不同码字,还需要引入页内偏移量,然后采用线性结构将这些页面重新组合。</FONT></FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 下面给出一个依据该思想重新组织信源符号的实例:</FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 对于存储在Buffer中的等待解码的数据码流X,用滑动窗口从中截取前N位,这里的N应当大于或等于可变长码中最长码字的码长,即N≥ln。由于可变长码最短的码长为l1,因此在这N位码流中,最多可包含M=[N/l1]个可变长码。为了表示方便,这里用Wi(i=0,1,…,M-1)表示这M个可变长码。</FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 虽然,对于W0,其起始位置必然为0;如果W0的码长为L0,那么W1的起始位置则为L0;如果W1的码长为L1,那么W2的起始位置为L0+L1,依此类推。由于在解码开始时,L0的取值无法明确,其可能取值范围是l1≤L0≤Ln,因此每个Wi的可能起始位置分别由一组值组成。</FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 为了实现并行解码,采用多个可变长码检测单元从所有可能的起始位置同时侦测,一旦W0的码长L0被侦测出,就可以从所有已解码的可能的变长码中找出W1,并确定W1的码长L1,由此W2的起始位置也就得以确定。依此类推,最多可逐次将Wi(i=0,1,…,M-1)个变长码解出。</FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 每个Wi的解码过程只比Wi-1的解码过程多一个加法操作的延迟,相对于变长码的识别,加法操作的延迟非常的小。当然,如果滑动窗口N的取值过大,每个Wi之间的加法操作的延迟将累加,这将降低解码的整体效率。因此对于滑动窗口N的选择,需要结合实际应用中可变长码编码的特点来权衡。</FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT face=Courier size=2>&nbsp;&nbsp;&nbsp; 设某个待解码流为B={110110100011000011001111,…}。这里采用长度N=12的滑动窗口进行码流提取,由于变长码的长度从2~8不等,因此每个运动周期至少可以解码出1个码字,最多可解码出6个码字,这6个变长码字可能的起始位置分别为W0:{0};W1:{2,3,4,5,6,7,8};W2:{4,5,6,7,8,9,10};W3:{6,7,8,9,10};W4:{8,9,10};W5:{10}。</FONT></P>

<P><FONT size=2></FONT>&nbsp;</P>

<P><FONT face=Courier><FONT size=2>&nbsp;&nbsp;&nbsp; 综合起来,可能成为该可变长码起始位置的集合为{0,2,3,4,5,6,7,8,9,10},因此在应用上共需要10个可变长码检测单元并行执行。</FONT></P></FONT></FONT>

河北声屏障

内盘期货招商

107杨树苗

塔钟

相关阅读