MPEG-4 SP级解码器中的SDRAM接口设计
发布时间:2008/6/3 0:00:00 访问次数:566
关键词:sdram;mpeg-4;填充
引言
图像处理系统都需要用到容量大、读写速度高的存储介质。sram操作简单,但其昂贵的价格会使产品成本上升。相比较而言,sdram的控制较ram复杂,但具有价格便宜、体积小、速度快、功耗低等优点,所以从降低成本的角度出发,本文采用sdram实现mpeg-4 sp(simple profile)级解码器的数据缓冲功能。
mpeg-4 sp级解码器
mepg-4 sp的定义就是面向低码率的视频通信标准,工作在矩形i帧和p帧,支持带有运动补偿的基于dct 编码的基本功能。i帧采用帧内编码方式,而p帧采用帧间编码方式,仍然在16×16 的宏块基础上进行帧间/帧内编码。其中,intra 宏块的纹理编码采用 dct 变换和 ac/dc 预测,进一步降低了码率;inter 宏块的运动矢量可有1mv和 4 mv两种表示方法,其中运动矢量具有半像素精度,支持非限制运动矢量。
本解码器选用fpga作为系统的核心处理器,因为fpga可提供必需的并行机制,从而可为视频解码器提供经济的实时解决方案。对比目前硬件的mops性能,发现通用处理器的性能约为2000 mops;dsp处理器将这一数字提高到8000 mops左右,但仍然受限于只能通过有限数量的计算单元完成数据流的处理。相比之下,fpga则有很大的自由度,性能可轻松超过10万mops,而且用fpga能够比较方便地实现系统的集成,维护和升级。
图1是解码器的电路结构图,实现了从es流到可供显示器显示用的模拟信号的解码过程。首先,进入fpga的es流被缓存到fifo中,fifo的大小是3m bits,实践表明它可以应对各种码速率的码流输入;然后fpga读取fifo中的数据进行解码,外扩16mbits的sdram作为必要的数据中转;解码得出的数据是4:2:0的ycrcb信号,通过色度空间转换变为rgb信号,再加上用于控制显示的行、场同步以及消隐信号,传送给adv7210转化成模拟信号,从而在显示器上看到实际解出的画面。
sdram接口电路的设计
整体时序和结构安排
图2是sdram的接口电路结构框图。sdram接口负责sdram与fpga内部模块的数据交互,其中命令产生器与sdram直接通信,产生sdram能识别的控制信号;地址产生模块负责地址映射,因为总控制器给出的地址是解出的宏块在重建帧中的相对位置和p帧中宏块对应的mv,经过地址映射后,就变成sdram命令产生器能识别的地址;上电模块完成正常工作前的sdram初始化工作。sdram总控模块控制着整个接口,主要负责启动和控制相关模块。总控模块在上电时启动上电模块;在场消影期启动刷新模块。解码时与sdram的数据交互主要分三部分:读显示数据,填充并且读参考帧数据,写入解出的宏块数据,在此期间总控模块的控制信号启动相应的地址映射模块产生读写地址,并由地址选择模块负责分配。
存储策略和地址映射策略
在sdram中总共存储了两帧图像的数据,其中一帧作为参考帧,在解p帧时要根据运动矢量提供参考宏块的数据形成重建帧,同时它还可实现显示数据缓冲;另外一帧是写入正在解出的重建帧数据。解码器处理的图像格式为cif,数据格式为4:2:0,所以每一帧占用空间为352×288×1.5×8 bit。sdram中的两个bank(组),分别存放正在重建的帧和参考帧。每一个bank被分成三个连续空间,一块用来顺序存储亮度信息,另外两块分别顺序存储色度信息。在下一个帧起始信号到来时,原来存储参考帧的bank变成存储重建帧,而另外一个bank中存储的解完的重建帧将作为正在重建的下一帧的参考帧。
sdram接口的主要任务
解码器工作时是以宏块为单位进行处理的。解一个宏块时,首先从已经存在sdram中的参考帧中读取参考宏块数据,加上残差数据后得到解出的宏块,存储到sdram中,而且发给显示模块的数据也是以宏块为单位提供的。所以考虑到解码器工作的实际情况,本文选择长度为8的突发读写模式,这样可以高效地存储数据。下面介绍sdram的具体任务。
和解码模块的数据交互
sdram主要与解码模块和显示模块进行大量的数据交互,具体的数据流向(实线)和地址线(虚线)如图3所示。
图3中的ram在fpga内部,负责缓存sdram读出和将要存储的数据。本存储方案以宏块为基本单位,所以每个ram存储的都是一个宏块的数据。其中,存储重建帧色度和亮度数据的ram和存储待显示的亮度和色度数据的ram大小都为384byte,包括亮度的16×16和色度的8×8×2个像素点。存储参考帧色度和亮度参考数据的ram大小为486byte,其中包括亮度的4个9×9的像素点和色度的9×9×2个像素点。mpeg-4解码器支持半像素的精度,所以先根据半像素精度的运动矢量取出一个9×9的块,再进行半像素插值成8×8的宏块以后,与残差相加得到重建宏块。
填充
mpeg-4支持非限制运动矢量,所以填充就成为数据存储操作的一个重要内容。本文提出了一种简便的方法,该方法在把数据存储到sdram中
关键词:sdram;mpeg-4;填充
引言
图像处理系统都需要用到容量大、读写速度高的存储介质。sram操作简单,但其昂贵的价格会使产品成本上升。相比较而言,sdram的控制较ram复杂,但具有价格便宜、体积小、速度快、功耗低等优点,所以从降低成本的角度出发,本文采用sdram实现mpeg-4 sp(simple profile)级解码器的数据缓冲功能。
mpeg-4 sp级解码器
mepg-4 sp的定义就是面向低码率的视频通信标准,工作在矩形i帧和p帧,支持带有运动补偿的基于dct 编码的基本功能。i帧采用帧内编码方式,而p帧采用帧间编码方式,仍然在16×16 的宏块基础上进行帧间/帧内编码。其中,intra 宏块的纹理编码采用 dct 变换和 ac/dc 预测,进一步降低了码率;inter 宏块的运动矢量可有1mv和 4 mv两种表示方法,其中运动矢量具有半像素精度,支持非限制运动矢量。
本解码器选用fpga作为系统的核心处理器,因为fpga可提供必需的并行机制,从而可为视频解码器提供经济的实时解决方案。对比目前硬件的mops性能,发现通用处理器的性能约为2000 mops;dsp处理器将这一数字提高到8000 mops左右,但仍然受限于只能通过有限数量的计算单元完成数据流的处理。相比之下,fpga则有很大的自由度,性能可轻松超过10万mops,而且用fpga能够比较方便地实现系统的集成,维护和升级。
图1是解码器的电路结构图,实现了从es流到可供显示器显示用的模拟信号的解码过程。首先,进入fpga的es流被缓存到fifo中,fifo的大小是3m bits,实践表明它可以应对各种码速率的码流输入;然后fpga读取fifo中的数据进行解码,外扩16mbits的sdram作为必要的数据中转;解码得出的数据是4:2:0的ycrcb信号,通过色度空间转换变为rgb信号,再加上用于控制显示的行、场同步以及消隐信号,传送给adv7210转化成模拟信号,从而在显示器上看到实际解出的画面。
sdram接口电路的设计
整体时序和结构安排
图2是sdram的接口电路结构框图。sdram接口负责sdram与fpga内部模块的数据交互,其中命令产生器与sdram直接通信,产生sdram能识别的控制信号;地址产生模块负责地址映射,因为总控制器给出的地址是解出的宏块在重建帧中的相对位置和p帧中宏块对应的mv,经过地址映射后,就变成sdram命令产生器能识别的地址;上电模块完成正常工作前的sdram初始化工作。sdram总控模块控制着整个接口,主要负责启动和控制相关模块。总控模块在上电时启动上电模块;在场消影期启动刷新模块。解码时与sdram的数据交互主要分三部分:读显示数据,填充并且读参考帧数据,写入解出的宏块数据,在此期间总控模块的控制信号启动相应的地址映射模块产生读写地址,并由地址选择模块负责分配。
存储策略和地址映射策略
在sdram中总共存储了两帧图像的数据,其中一帧作为参考帧,在解p帧时要根据运动矢量提供参考宏块的数据形成重建帧,同时它还可实现显示数据缓冲;另外一帧是写入正在解出的重建帧数据。解码器处理的图像格式为cif,数据格式为4:2:0,所以每一帧占用空间为352×288×1.5×8 bit。sdram中的两个bank(组),分别存放正在重建的帧和参考帧。每一个bank被分成三个连续空间,一块用来顺序存储亮度信息,另外两块分别顺序存储色度信息。在下一个帧起始信号到来时,原来存储参考帧的bank变成存储重建帧,而另外一个bank中存储的解完的重建帧将作为正在重建的下一帧的参考帧。
sdram接口的主要任务
解码器工作时是以宏块为单位进行处理的。解一个宏块时,首先从已经存在sdram中的参考帧中读取参考宏块数据,加上残差数据后得到解出的宏块,存储到sdram中,而且发给显示模块的数据也是以宏块为单位提供的。所以考虑到解码器工作的实际情况,本文选择长度为8的突发读写模式,这样可以高效地存储数据。下面介绍sdram的具体任务。
和解码模块的数据交互
sdram主要与解码模块和显示模块进行大量的数据交互,具体的数据流向(实线)和地址线(虚线)如图3所示。
图3中的ram在fpga内部,负责缓存sdram读出和将要存储的数据。本存储方案以宏块为基本单位,所以每个ram存储的都是一个宏块的数据。其中,存储重建帧色度和亮度数据的ram和存储待显示的亮度和色度数据的ram大小都为384byte,包括亮度的16×16和色度的8×8×2个像素点。存储参考帧色度和亮度参考数据的ram大小为486byte,其中包括亮度的4个9×9的像素点和色度的9×9×2个像素点。mpeg-4解码器支持半像素的精度,所以先根据半像素精度的运动矢量取出一个9×9的块,再进行半像素插值成8×8的宏块以后,与残差相加得到重建宏块。
填充
mpeg-4支持非限制运动矢量,所以填充就成为数据存储操作的一个重要内容。本文提出了一种简便的方法,该方法在把数据存储到sdram中
上一篇:纵观3G基站开发的变化