基于FPGA的并行可变长解码器的实现技术

发布者:码字狂人最新更新时间:2010-10-27 来源: 电子技术应用关键字:解码器  FPGA  可变长编码  VLC 手机看文章 扫描二维码
随时随地手机看文章

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

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

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

  1 算法描述

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

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

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

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

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

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

  下面给出一个依据该思想重新组织信源符号的实例:

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

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

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

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

  设某个待解码流为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}。

  综合起来,可能成为该可变长码起始位置的集合为{0,2,3,4,5,6,7,8,9,10},因此在应用上共需要10个可变长码检测单元并行执行。[page]

  2 实现与验证

  多码字并行解码方法实现的关键在于解码过程的并行性,采用硬件方案实现起来并不 难。上例中10个可变长码检测单元可采用经典的位并行解码方案实现,因为位并行解码方案能够保证不同长度码字的输出时间基本相同,为其后的操作带来便利。在本文中,采用基于查找表的方式来实现。

  码字检测单元所检测到的可变长码的码长及页内偏移量(这里采用码字的最右位作为页内偏移量),在识别过程中可能存在没有任何有效码字的情况。为此,增加了一位有效状态位,作为输出是否有效的标志。变长码检测单元CD的结构框图如图1所示。

  由于前一个有效码字Wi-1的码长控制着码字Wi的选取,而对应Wi-1的检测单元Cdi-1输出了Wi-1的码长,因此在实现上可以采用将Cdi-1的输出作为有效码字Wi选取的控制位,它通过控制一个多路选择器MUX,从所有对应可能是Wi起始位置的CD输出中选取有效的输出作为有效码字Wi。在有效字Wi被成功识别后,需要将其码长即Cdi的输出与Cdi-1的输出相加,作为有效码字选择的控制。这些功能通过一个复合的多路复用器-加法器MA实现,多路复用器-加法器MA的结构如图2所示。

变长码检测单元CD的结构框图

  在所有有效码字的起始位置被识别后,根据对应CD单元的输出,即码长信息和页内偏移量,可以通过查表将对应的码长数据转换成相应的信源符号或存储相应信源符号的地址。这些功能由信号转换单元SYMBOL完成。

  根据上面的讨论,设计出用于上例的多符号并行解码器,其结构图如图3所示。

结构图

  为了验证这种这种结构,采用FPGA器件实现它,选择的是一片Xilinx xc2s400e-6ft256器件,其规模为145000门。在这里,采用VHDL语言进行RTL级描述,利用XST进行综合,并在ModelSim5.8中进行仿真。结果验证正确,其仿真结果如图4所示。

仿真结果

  实验表明,系统允许最大时钟频率为44.172MHz,占用了197个Slice(4%),74个Slice Flip Flops(<1%),347个四输入查找表(12%)和1个全局时钟(25%)。

关键字:解码器  FPGA  可变长编码  VLC 引用地址:基于FPGA的并行可变长解码器的实现技术

上一篇:一种基于FPGA分布式算法的滤波器设计实现
下一篇:3G/4G时代FPGA将扮演重要角色

推荐阅读最新更新时间:2024-05-02 21:11

适用于 Imagination PowerVR Series6 图形处理器的高级 VP9 解码器面市
2014 年 3 月 6 日 —— Imagination Technologies宣布其战略合作伙伴 MulticoreWare 推出了全新的高级GPU 加速 VP9 软件解码器,该款解码器适用于Imagination的行业领先的 PowerVR Series 6 Rogue 图形处理器 (GPU)。 这款基于 OpenCL 的解码器是同 Google 合作开发而成的,支持 1080p、30fps 的 YouTube 视频回放,为在包括移动设备、平板电脑、互联电视和其他产品的多种设备上的播放高清视频提供低功耗解决方案。通过采用这款全新解码器,现有的配备 PowerVR Series6 GPU 的产品可以播放由 VP9
[嵌入式]
基于FPGA的汽车ECU设计充分符合AUTOSAR和ISO 26262标准(二)
基于 FPGA 静态硬件的 ECU 设计   AUTOSAR 架构非常适合由 CPU、存储器和可编程逻辑组成的嵌入式系统。ECU 平台需要一个 CPU 或主机处理器来管理应用并处理分布在应用层的软件组件中的不同功能。同时,MCU 层和部分基础软件层可以在可编程逻辑结构中的硬件中综合。因此,除了能够实现与 CPU 相连的标准外设,其它定制外设和协处理器也能够在硬件中并存,并在软件中完全或部分地加以管理。   另外从功能安全的角度来看,专用协处理器或内核处理器也非常适用,因为用它们实现功能可让硬件从源头避免干扰,即便要求冗余性,也能给系统设计带来高灵活性。另外,居于中间的 RTE 层可以在分布于 FPGA 中的 RAM 模块中,或
[模拟电子]
基于<font color='red'>FPGA</font>的汽车ECU设计充分符合AUTOSAR和ISO 26262标准(二)
基于FPGA开发设计,为何模块看到一个严重警告
早在2017年1月初,我们宣布Xilinx IP目录中的所有IP使用xci和xcix格式的文件,这已经不是什么新鲜事了,其实我们之前一直在说这是我们多年来的主要建议,这其中包括很多重要的原因,xci文件是一个xml格式的文件,它能够搜集ip所有的配置信息,更重要的是包括Vivado指向的ip所生成的大量文件,比如上下文综合、约束和模拟文件等。根据xci文件Vivado可以确定IP是否已经“完全生成”或者缺少哪些文件。 许多客户都更喜欢与ISE core生成器接近的生成模型,因为这样会生成单个文件,将.dcp文件从生成目录拷贝到Vivado工程目录,作为源文件代替之前使用的.xci文件,我们尝试支持这种模式,但是这种方法存在很多
[网络通信]
Tensilica HiFi 2音频DSP支持SBC编解码器
       2009年2月25日,Tensilica今日宣布,即将推出基于HiFi 2音频DSP的蓝牙SBC(Sub-Band Codec)编解码器,设计人员可以很方便的将HiFi 2引擎集成到SOC设计中,从而使手机、便携音乐播放器等移动设备获得包括蓝牙音频规格在内的50多种音频编解码能力。       Tensilica公司移动多媒体市场总监Larry Przywara表示:“我们目睹了便携设备市场对高品质蓝牙功能的强劲需求,我们的解决方案能够在CPU使用率极低的条件下提供接近CD的音质,从而最大限度地延长电池寿命。我们的合作伙伴P-Product公司在HiFi 2音频DSP上成功移植了SBC编解码器,这也从侧面证明了T
[家用电子]
采用FPGA IP实现DDR的读写控制的设计与验证
前言 随着高速处理器的不断发展,嵌入式系统应用的领域越来越广泛,数字信号处理的规模也越来越大,系统中RAM规模不断增加,比如视频监控、图像数据采集等领域,图像处理的实时性对RAM带宽的要求不断增加,传统的SDRAM在带宽上已经逐渐无法满足应用要求,DDR SDRAM(双倍速率SDRAM)采用在时钟CLK信号的上升和下降沿,双沿做数据传输;比传统的SDRAM只在时钟上升沿传输的方式,传输带宽增加了一倍。DDR RAM已开始广泛应用于嵌入式系统中,正逐步取代传统的SDRAM。 DDR RAM操作速度的提高,对设计者来说,对控制时序的设计有了更高的要求;并且,DDR内存采用的是支持2.5V电压的SSTL-Ⅱ标准,不再是SDRAM使用的
[应用]
一种基于FPGA的振动信号采集处理系统
  振动现象是机械设备运行的伴随过程,结构部件处于工作状态就有振动信号产生,常见故障通过振动和由振动辐射出来的噪声反映。在飞行器的健康监控和诊断过程中,作为提取故障信息的主要手段,振动信号的采集和处理具有特殊重要的意义。   飞行器振动过程的捕捉由于采样点数密集, 传感器 数量多, 传感器 之间同步要求高,对于振动采集系统采样速率、采样精度和数据处理能力提出了更高的要求,单纯依靠CPU完成数据采样和处理越来越力不从心。   以FPGA为代表的可编程逻辑器件以其工作稳定、速度快、灵活的可编程能力等特点,获得了越来越广泛应用。本文提出了一种基于FPGA的振动信号采集处理系统;该系统具有实时性高,纠错能力强等特点,采用数据流控制的方法实
[嵌入式]
一种基于<font color='red'>FPGA</font>的振动信号采集处理系统
FPGA实现DSP与液晶显示器的快速接口
随着器件集成工艺的发展和Soc器件的出现,现在的数字系统正在越来越多地采用可编程器件设计。这样,不仅开发周期短,而且在价格和使用难易度上也显示了很大的优势。更为重要的是,还能利用器件的现场可编程特性,根据应用的要求对器件进行动态配置,简便易行地完成功能的添加或变化。 在高速的数字信号处理系统中,要涉及到大量的计算,为了提高运算速度,正大量使用DSP器件。目前的可编程器件,其时钟频率可以很高,在高速数字信号处理系统中将发挥越来越大的作用。因此,DSP+FPGA的方案正越来越多地被电子工程师们采用。 在很多的实际数字系统中,往往需要良好的用户界面,其中LCD是被大量采用的显示器件。由于LCD是典型的慢速设备(相对于DSP来讲)
[嵌入式]
FPGA设计中仿真技术解决故障的方法
  本文针对FPGA实际开发过程中,出现故障后定位困难、反复修改代码编译时间过长、上板后故障解决无法确认的问题,提出了一种采用仿真的方法来定位、解决故障并验证故障解决方案。可以大大的节约开发时间,提高开发效率。   FPGA近年来在越来越多的领域中应用,很多大通信系统(如通信基站等)都用其做核心数据的处理。但是过长的编译时间,在研发过程中使得解决故障的环节非常令人头痛。本文介绍的就是一种用仿真方法解决故障从而减少研发过程中的编译次数,最终达到准确定位故障、缩短解决故障时间的目的。文例所用到的软件开发平台为Altera公司的Quartus II,仿真工具为ModelSim。    问题的提出   系统开发在上板调试过程中,有时
[工业控制]
<font color='red'>FPGA</font>设计中仿真技术解决故障的方法
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved