基于九宫格的精细运动估计数据读取方法

文档序号:9755172阅读:471来源:国知局
基于九宫格的精细运动估计数据读取方法
【技术领域】
[0001]本发明属于集成电路设计技术,涉及于九宫格的精细运动估计数据读取方法。
【背景技术】
[0002]H.264高清视频编码核进行精细运动估计的操作时,搜索框内的数据量大无规律且跨行操作较多,因此读写效率很低,数据写入片外DDR2 SDRAM存储器会耗费大量时间。为了满足实时编码对大数据量高速访问的需求,本专利提出按固定顺序访问的宏块读取方法,采用九宫格的形式进行数据的片上缓存的方法以及采用地址预先判断和提前终止冗余数据等方法来提高精细运动的访问速度。

【发明内容】

[0003]本发明的目的是提供一种基于九宫格的精细运动估计存储实现方法,能够有效地完成大量无规律的精细运动估计数据的高速读取操作需求。
[0004]本发明的技术解决方案是:
[0005]—种基于九宫格的精细运动估计数据读取方法,包括以下步骤:
[0006]I)按固定顺序访问宏块:
[0007]1.1)对帧内图像进行一次读宏块请求时,连续读出4个宏块的数据,并且每4次请求只锁存一次地址;
[0008]1.2)使用两组片上DPRAM用于缓存亮度和色度数据,其中:亮度数据在片外DDR2SDRAM中按照一帧图像的起始地址连续存储,顶场数据放在一帧空间中从起始地址开始的上半部分,底场数据放在一帧空间中从二分之一高度对应的地址开始的下半部分;
[0009]1.3)根据下一个需要读出的像素地址是否在预取4个宏块地址范围内来判断是否命中;如果在命中内,则本次请求所需的数据在DPRAM缓存中,直接从DPRAM中取出相应的数据;如果不命中,则计算该像素所在的宏块地址并直接从DDR2 SDRAM中预读取后4个宏块的数据;
[0010]2)采用九宫格形式的存储访问:
[0011]2.1)将第一次读请求的所在宏块地址进行缓存,并以该宏块为中心,向八个方向各扩展一个宏块形成九宫格;
[0012]2.2)通过起始地址一次计算出该九宫格内9个宏块的所有数据在DDR2 SDRAM中的映射地址;
[0013]2.3)根据精细运动估计各请求的访问地址是否在九宫格的地址范围内,判断本次请求所需的数据是否地址命中;如果命中,则直接从DPRAM中取出相应的数据;如果不命中,则需要以当前请求对应的地址计算出新的预取地址,并预取出对应九宫格中的亮度和色度数据存放于DPRAM缓存中。
[0014]上述方法还包括步骤3采用地址预先判断的方法提前终止冗余数据,具体步骤为:实时判断相邻两次精细运动估计之间的所有运动矢量所需的数据是否都已取出;若是,则立即终止多余的读DDR2 SDRAM操作。
[0015]上述步骤2.2)中的9个宏块的数据包括一个运动矢量的所有整像素、半像素和四分之一像素读操作的像素数据。
[0016]本发明的主要优点:
[0017]本发明根据采用三种优化方法对精细运动估计的读取操作进行了优化,预读取数据避免了片外DDR2 SDRAM的频繁访问,九宫格的方法规整了数据的地址减少了跨行操作,终结冗余数据的方法进一步缩短了数据的读取时间。
【附图说明】
[0018]图1是传统精细运动估计的读请求次数;
[0019]图2是{0,0}搜索的预取范围;
[0020]图3是三步搜索的预取范围;
[0021 ]图4是基于九宫格的运动矢量预读取范围;
[0022]图5是基于九宫格的精细运动估计读请求次数;
[0023]图6是FME模块的架构示意图;
[0024]图7是本发明的流程框图。
【具体实施方式】
[0025]本发明基于九宫格的精细运动估计数据读取方法,包括以下步骤:
[0026]步骤I,按固定顺序访问的宏块读取方法:
[0027]由于帧内图像的连续性,编码时按固定顺序访问的图像宏块(每个宏块有16行2列像素数据)是可以进行地址预测和命中判断的。为了提高片外DDR2 SDRAM的读写效率,一次读宏块请求可以从片外连续读出4个宏块的数据,并且每4次请求只需要锁存一次地址。由于地址连续,每个宏块的基地址范围可以预先计算得到;
[0028]使用两组片上DPRAM用于缓存亮度和色度数据,亮度数据在片外DDR2SDRAM中按照一帧图像的起始地址连续存储,顶场数据放在一帧空间的上半部分(起始地址),底场数据放在下半部分(一帧的二分之一高度对应的地址);
[0029]设计命中判断机制,根据下一个需要读出的像素地址是否在预取4个宏块地址范围内来判断命中;如果在范围内,则本次请求所需的数据是否在DPRAM缓存中,直接从DPRAM中取出相应的数据;如果不命中则计算该像素所在的宏块地址并直接从DDR2 SDRAM中预读取后4个宏块的数据。
[0030]步骤2,采用九宫格的形式进行数据的片上缓存:
[0031]在精细运动估计中,对于运动矢量不为O的读像素操作,数据会进行多次跨行读取(如图1所示);将第一次读请求的所在宏块地址进行缓存,并扩展为九宫格的范围将数据预读取到片上DPRAM缓存,可以有效减少跨行读取的次数(如图5所示);
[0032]根据九宫格在帧内的存储地址计算出其所在宏块的地址,并从该宏块向右向下(向像素行列增加的方向)个扩展3个宏块,总计9个宏块(包括器是宏块)这9个宏块的范围包括了一个运动矢量的所有整像素、半像素和四分之一像素读操作的像素数据。通过起始地址一次计算出九宫格(9个宏块)的所有数据在DDR2 SDRAM中的映射地址;
[0033]根据精细运动估计各请求的访问地址是否在九宫格的地址范围内,判断本次请求所需的数据是否在缓存中,是否地址命中;如果命中则直接从DPRAM中取出相应的数据;如果亮度不命中则需要以当前请求对应的地址计算出新的预取地址,并预取出对应九宫格中的亮度和色度数据存放于DPRAM缓存中。如果亮度命中而色度不命中,则只重新预取色度的九宫格数据;
[0034]步骤3、采用地址预先判断的方法提前终止冗余数据:实时判断所需要的数据是否已经完从DDR2 SDRAM中取出(对于相邻两次精细运动估计之间的所有运动矢量读操作,读请求所需的数据都写已回编码核,但九宫格数据还未预取结束时,立即终止多余的读DDR2SDRAM操作)以减少读取时间,减少外存带宽的占用。
[0035]本发明设计思路及工作原理:
[0036]1、精细运动估计读取效率低的原因:
[0037]精细运动估计是在粗运动估计搜索框内进行的,而随着运动矢量的不同,精细运动估计会读取不同位置的数据,而搜索框的大小为13*10个宏块的范围,因此读操作很难找到固定的范围读取;而跨行操作也会极大的增加读取时间,因此精细运动估计的读取效率是影响编码芯片性能的主要因素之一。
[0038]如图1所示,在传统精细运动估计的读取操作中,从精细运动估计中取出某个当前宏块对应的读取操作共发生
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1