H.264视频解码芯片滤波存储器设计方案
滤波运算后写入DRAM, 我们把写入DRAM 的这一过程称为Store 过程,由Store 模块负责。由图3 可以看出MC 与Deblock 是一个串联的关系。为了提高解码的速度,我们将运动补偿与环路滤波并行执行,即当前解码的结束并不以环路滤波的结束为标志,而当前宏块的运动补偿一结束我们就可以开始下一个宏块的解码。经过大量的实验发现:MC 的时间远比block的时间大很多,当后一个模块要进行滤波时滤波模块早已准备完毕。最后对存储模块我们也同样的用并行的思想来加快解码的速度。结果当作MBx 的MC 时,做MB(x-1)的滤波,同时MB(x-2)存储。此时需要注意MB(x-1)的滤波和MB(x-2)的存储并不是同时开始。因为做MB(x-1)的滤波时也会影响到MB(x-2)中的数据。
因此我们要等MB(x-1)的第一条垂直边滤波结束后才开始MB(x-2)的存储。具体的时间关系如图4 所示。
图4 各个模块之间的时序关系图
(1)滤波前数据的存储及滤波结束后数据的存储
由于设计中采用此种流程,我们需要3 片SRAM来存储MC 的运算结果。这3 片SRAM 交替地进行MC、Deblock 和Store。我们称这3 片SRAM 为SRAM_MB,滤波结束后的数据也存储在此SRAM 中,在经Store 模块将此数据存储到DRAM 中去。因为滤波结束时,恰好原来SRAM_MB 中的数据也已经成为无效数据。这里需要注意,由于有帧场自适应的情况存在,滤波结束后的数据如果帧场情况不一样,我们还需要根据数据不同的情况进行适当的帧场转化,之后再将数据存入DRAM。
(2)垂直滤波后的数据的存储
我们都知道滤波过程是一个先垂直后水平的过程,因此我们需要有一片SRAM 来存储水平滤波的结果。这片SRAM 就叫SRAM_BUFFER。因为水平滤波时正在从SRAM_MB 中读取数据,同一时间不能同时向SRAM 中读取、写入数据。因此我们用SRAM_BUFFER 来暂存垂直滤波结束后的数据。水平滤波时则从SRAM_BUFFER 中读取数据, 滤波后存储到SRAM_MB 中。
5 总结
本文对H.264 解码芯片中的滤波、存储模块作了深入的分析。并根据各个时间数据的特点作相应的存储器的设计, 这种设计方法经过验证能很好地处理H.264 中滤波及存储时的数据的调度。整个滤波过程约52 个周期就可以完成。在MBAFF 情况时各种数据的转化时钟周期控制在70 个以内。这种设计符合要求,并在FPGA 上验证后能够正常的运行,运行时钟达到60MHz,能实时地完成对高清图像的解码。
模拟电路 模拟芯片 德州仪器 放大器 ADI 模拟电子 相关文章:
- 12位串行A/D转换器MAX187的应用(10-06)
- AGC中频放大器设计(下)(10-07)
- 低功耗、3V工作电压、精度0.05% 的A/D变换器(10-09)
- PIC16C5X单片机睡眠状态的键唤醒方法(11-16)
- 用简化方法对高可用性系统中的电源进行数字化管理(10-02)
- 利用GM6801实现智能快速充电器设计(11-20)