您当前的位置:五五电子网电子知识单片机-工控设备综合-其它在FPGA上实现H.264/AVC视频编码标准 正文
在FPGA上实现H.264/AVC视频编码标准

在FPGA上实现H.264/AVC视频编码标准

点击数:7705 次   录入时间:03-04 11:33:32   整理:http://www.55dianzi.com   综合-其它

       尽管H.264/AVC承诺将此已有 视频 编码 标准 具有更高的编码效率,它仍为系统架构师、DSP 工程师和硬件设计人员带来了巨大的工程设计挑战。H.264/AVC 标准引入了自 1990 年推出 H.261 之后视频编码标准演进过程中出现的大部分重大改变和算法间断 (algorithmIC discontinuities)。

        实现 H.264/AVC 编码标准所需的算法计算复杂度、数据局部性,以及算法和数据并行性,常常会直接影响系统级别的整体架构决策。这种影响又会决定在广播、视频编辑、电话会议以及消费电子领域开发H.264/AVC解决方案所需的最终开发成本。  

       复杂度分析

       为了实现实时 H.264/AVC 标准清晰度 (SD) 或高清晰度 (HD) 分辩率编码解决方案 ,系统架构师常常需要使用多个 FPGA 和可编程 DSP。为了说明所需计算的巨大复杂度,先探讨一下 H.264/AVC 编码器的典型运行时的周期要求。H.264/AVC 编码器基于由联合视频工作组(JVT)提供的软件模型,该工作组由来自 ITU-T 的视频编码专家组 (VCEG) 和 ISO/IEC 的运动图像专家组 (MPEG) 的专家组成。采用Intel的VTune软件,在 Intel Pentium III 1.0 GHz 通用 CPU、512 MB 内存的平台上运行,按照主要配置编码解决方案实现 H.264/AVC SD,需要约 1,600 BOPS(每秒十亿次运算)。            

       然而,单凭计算复杂度并不能决定一个功能模块是否应映射为硬件或是使其保持为软件。为了评估在由 FPGA、可编程 DSP或通用主处理器混合组成的平台上实现 H.264/AVC 编码标准时,软件和硬件分割的可行性,需要分析将会影响整体设计决策的大量架构问题。  

       数据局部性。        

       在同步设计中,按照特定的顺序和粒度访问内存,同时根据延迟、总线竞争、对准、DMA 传输率以及所用内存的类型(如 ZBT 内存、SDRAM和 SRAM 等)使时钟周期数降至最小的能力至关重要。数据局部性问题主要是由数据单元和算术单元(或处理引擎)之间的物理接口体现的。  

       数据并行性。        

       大多数信号处理算法都是对高度并行的数据进行操作(如 FIR 滤波)。单指令多数据 (SIMD) 和向量处理器对可被并行化或做成向量格式(或长数据宽度)的数据具有较高的处理效率。        

       FPGA可通过提供大量块 RAM 支持大量极高总计带宽要求来实现这一点。在新的 Xilinx Virtex-4 SX器件中,块 RAM 的数量与 Xtreme DSP的逻辑片数紧密匹配(例如,SX25具有128个块RAM,128个DSP逻辑片;SX35具有192个块 RAM,192个DSP 逻辑片;SX55具有320个块 RAM,512个DSP逻辑片)。   信号处理算法并行机制。        

       在典型的可编程 DSP 或通用处理器中,信号处理算法并行机制通常是指指令级并行 (ILP)。超长指令字 (VLIW) 处理器是此类采用ILP的机器中的一个例子,它将多条指令(ADD、MULT 及 BRA)组合起来,在一个周期内执行。处理器中高度流水线化的执行单元也是实现并行机制的典型硬件示例。现在已经有可编程DSP采用这种架构(如TI的TMS320C64x)。

www.55dianzi.com   
       但是,并非所有算法都能使用这种并行机制。递归算法,如 IIR 滤波、MPEG 1/2/4 中的变长 编码 (VLC)、上下文自适应变长编码 (CAVLC),以及 H.264/AVC 中的上下文自适应二进制算术编码 (CABAC),当映射到这些可编程 DSP 时,均无法达到最优且效率不高。这是因为数据递归阻碍了 ILP 的有效利用。作为取代方案,可在 FPGA 结构中有效地构建专用硬件引擎。  

       计算复杂度。        

       可编程 DSP 受计算复杂度的限制,可通过处理器的时钟速率来度量。在FPGA中实现的信号处理算法通常为计算 密集型算法。其中的例子有运动估计中的绝对差值和 (SAD) 引擎以及 视频 缩放。        

       通过将这些模块映射到 FPGA 中,主处理器或可编程DSP就可有额外的周期来处理其他算法。此外,FPGA 结构还可以具有多时钟域,从而允许选择性硬件模块根据各自的计算要求使用独立的时钟速度。   理论上质量的最优性。        

       当且仅当对复杂度没有限制时,任何基于速率失真曲线的理论最优解决方案均可实现。在可编程 DSP 或通用处理器中,计算复杂度常受可用时钟周期的限制。而 FPGA 则相反,通过对硬件引擎的多重实例化,或提高结构中块 RAM 和寄存器组的利用率,实行数据和算法并行机制,从而提供更高的灵活性。       

       可编程 DSP 或通用处理器通常受每个周期发出的指令数、执行单元中的流水线级数以及完全馈给执行单元所需最大数据宽度的限制。在可编程 DSP 中,受每个任务可用周期数的限制,视频质量常常大受影响。而在 FPGA 结构中,硬件资源则可得到完全分配(三步和完全搜索运动估计对比)。  

       使用FPGA 实现功能模块

包括功能块和数据流的 H.264/AVC 宏块编码器

图 1 包括功能块和数据流的 H.264/AVC 宏块编码器        

       图 1 为定义了主功能块和数据流的整个 H.264/AVC 宏块级编码器。H.264/AVC 标准 的主要优势在于能够通过以不同的方式和方向分析像素冗余,预测要编码的图像内容的值,而这种分析以前从未在其他标准中进行过。但与以前的标准相比,其复杂度和内存访问带宽增加了4倍。  

       改进预测方法        

       下面重点分析一下在 H.264/AVC 视频编码设计中实现其增强编码效率的主要特点,根据前文讨论过的设计准则对这些功能模块进行评估。  

       四分之一像素精度(QUARTer-pixel-aCCurate) 运动补偿。        

       以前的标准采用二分之一像素运动向量精度。新设计通过采用四分之一像素运动向量精度对此进行了改善。二分之一像素位置的预测值是通过沿横向和纵向采用一个一维6抽头 FIR 滤波器 [1, -5, 20, 20, -5, 1]/32 计算得到的。        



www.55dianzi.com

       四分之一像素位置的预测值是通过将全像素和二分之一像素位置的采样值进行平均得到的。这些二次采样内插运算可在 FPGA 内的硬件中高效地实现。  

       小块尺寸可变块大小运动补偿。        

       该 标准 在 16×16 像素宏块尺寸中为铺瓦结构 (tiling structure) 提供了更多的灵活性。它允许使用 16×16、16×8、8×16、8×8、8×4、4×8 和 4×4 子宏块尺寸。        

       由于给定 16×16 宏块铺瓦结构的组合增多,因此要找到一个速率失真优化铺瓦解决方案需要很高的计算强度。这一额外特性为运动估计、细化和模式决策过程中所用的 计算引擎增加了巨大负荷。  

       环中自适应去块(debLOCking) 滤波。        

       去块滤波器已经在 H.263+ 和 MPEG-4 第 2 部分的实现中作为后处理滤波器被成功采用。在 H.264/AVC 中,去块滤波器将在运动补偿环路中移动,对在预测和解码过程中的残留差值 编码 阶段造成的块边缘进行滤波。滤波对 4×4 块和 16×16 宏块边缘均可进行,两个边上的两个像素可能会被一个三抽头滤波器更新。滤波器系数或强度由内容自适应非线性滤波器决定。  

       帧内编码有向空间预测。        

        当无法采用运动估计时,可以采用帧内有向空间预测来估计空间冗余。这种技术通过从相邻块沿预先定义的一组方向向相邻像素外插来预测当前块。然后就可以对预测块和实际块之间的差值进行编码了。  

[1] [2]  下一页


本文关键字:暂无联系方式综合-其它单片机-工控设备 - 综合-其它