首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

尽管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)。
返回列表