微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于SoC的MPEG-4视频解码加速器

基于SoC的MPEG-4视频解码加速器

时间:12-13 来源:互联网 点击:

对于一般的情况, 根据图1 和图2 的流程计算,取C i = 2cos( iπ/16) 。乘法总数22 次。

2 硬件结构和设计技巧

2.1 整体结构的选择

MPEG-4 加速器的的整体框图如图4 所示。其中slave 模块负责模式配置, 接收数据, 反量化并判断OnlyDC 和Halfzero。写向slave 的数据经过反量化操作后进入Xmem。MPEG-4 加速器的Cont rol模块控制整个解码流程。Idct8x1从Xmem 中读出原数据做一维IDCT 并写回Xmem。

由于Xmem 的带宽限制IDCT 8x1只使用两个乘法器, 把乘法排列紧凑后, 普通情况一维IDCT 需要20个周期, Halfzero 需要14个周期。Master 负责取运动补偿图像数据, 并在完成IDCT 变换和叠加后将结果放回显存。每次数据写回显存后, Control 模块会将Xmem 清零, 这样下次解码操作只需将非零数据写入Xmem , 减少了数据的写入时间。

双端口片上存储器Xmem 负责存放IDCT 的中间数据和计算结果, 其中数据通过A端口进行IDCT 变换, IDCT 结果通过B 端口进行叠加, IDCT 计算和运动补偿叠加可以通过A、B 两个端口并行处理。单端口Ymem 负责存放MA STER取回的运动补偿数据。Xmem 和Ymem 是零等待的片上存储器, 而且在外部总线上是可见的, 所以在MPEG-4 加速器不使用时, 它们还可以作为整个芯片高速的缓冲区使用。

图4 M PEG-4 加速器的整体框图

2.2 OnlyDC 情况的处理

在进行二维IDCT 的行变换时, 一般情况和Halfzero情况都会向Xmem 写回8个计算结果; 如果是OnlyDC 则不对Xm em 做任何读写, 所以在做列IDCT时必须对idct8x1 发出的地址进行重新映射, 使其指向这一行的第一个数据。如图5 所示,IDCT发出的地址指向当前要进行IDCT变换的列中的数据, Control 模块中的Address Remap 逻辑会根据On lyDC 状态将地址转换为指向第一列的有效数据。对于列IDCT 我们直接按照一般情况计算。

图5 地址重映射

3 仿真验证和性能分析

本文的设计流程是首先确定IDCT算法, 并用其C语言描述作为设计规范。然后根据设计规范用verilog RTL 描述硬件, 用verisity公司(已被Cadence公司收购)的E语言搭建验证环境, 并将C语言的设计规范嵌入E验证环境中, 通过E语言产生随机激励, 同时发给verilogRTL和C设计规范, 并将两者的结果作比较。这样既保证了硬件实现和C设计规范完全一致, 又通过C设范的重用缩短了验证周期。

我们使用SYNOPSYS 的Design Compiler 对本设计进行了综合, 综合采用SMIC的0.8um的标准单元库。结果显示本设计的关键路径在反量化处, 因为此处直接使用了一次乘加操作。表3给出了本设计的特性。本设计完成更多解码功能, 主频更高, 乘法器更少, 而且引入了可与系统复用的片上内存。

我们分I帧和非I帧两种情况分析本设计的处理时间。在处理I 帧时要进行反量化, 不需要运动补偿叠加。由于反量化是在数据输入的同时进行的, 所以处理时间由非零值的写入时间Tinput , IDCT 计算间Tidct和写回显存的时间Toutput三部分组成。这三部分如图6 (a) 所示的并行处理。在处理非I 帧时, IDCT的结果需要与运动补偿的结果叠加, 所以处理时间时由非零值的写入时间Tinput , IDCT 计算时间Tidct,取运动补偿数据时间Tfetch , 叠加并写回显存的时间Toutput四部分组成。如图6 (b) 所示的并行处理。

(a)I 帧处理时间 (b) 非I 帧处理时间

图6 处理时间

其中取运动补偿的结果和最后写回现存都要占用总线接口, 所以要依次进行。从这两幅图可以看出, 并行处理使得这两种情况总的处理时间是相同的。以行IDCT一般情况15% ,OnlyDC情况70% , Halfzero情况10% 计算, 一个block 的IDCT 所需的周期Tidct为:

T idct = (0 × 70%+ 14 × 10%+ 20 × 20% ) × 8 + 20 × 8 = 203.2 (个周期)

如不考虑回写时由显存造成的延时,M PEG24加速器处理的处理时间T 为:

T = Tinput + 6 × Tidct + Toutput = 6 × 64 × 15%+ 6 × 203 + 64 = 1340.8 (周期/宏块)

4 结论

本文给出了一种应用于嵌入式系统芯片的MPEG-4 解码加速模块。本设计面向MPEG-4 简单层, 将四个亮度块和两个色差块一起并行处理, 使流水线更加紧凑; 由于内部存储器的带宽有限, 我们只使用两个乘法器完成IDCT , 并使用较小面积的代价将于IDCT密切相关的反量化和运动补偿叠加一起实现, 这样进一步减少了数据在总线上的传输, 更有利于提高速度和减小功耗。本设计在以北京大学微处理器研究中心UN ITY-1为内核的SoC-UN ITY805+ 中, 已经得到应用。实验表明可以实现MPEG-4简单层CIF格式的视频解码。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top