首页> 中国专利> 一种基于可重构技术的MPEG2亮度插值的实现方法

一种基于可重构技术的MPEG2亮度插值的实现方法

摘要

本发明涉及一种基于可重构技术的MPEG2亮度插值的实现方法,包括以下步骤:首先,进行算法分析,根据MPEG2亮度插值的定义设计出DFG,得到算法的数据传输需求;其次,根据算法分析的结果和可重构阵列的架构,对数据流图进行分割和映射,设计出最优的数据传输的方案;然后,根据上面两步的结果,利用配置工具,生成可重构阵列的配置字;最后,通过ARM处理器将配置信息载入到可重构阵列的配置信息存储器中,以此将可重构阵列配置成为一个专用于执行MPEG2亮度插值的加速模块。本发明优于纯软件的方式,可以更好的满足视频解码的实时性要求,可以大大的节省开发时间和开发费用,实用性很高。

著录项

  • 公开/公告号CN102340668A

    专利类型发明专利

  • 公开/公告日2012-02-01

    原文格式PDF

  • 申请/专利权人 上海交通大学;

    申请/专利号CN201110294977.5

  • 申请日2011-09-30

  • 分类号H04N7/26(20060101);H04N7/46(20060101);

  • 代理机构31236 上海汉声知识产权代理有限公司;

  • 代理人郭国中

  • 地址 200240 上海市东川路800号

  • 入库时间 2023-12-18 04:30:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-16

    未缴年费专利权终止 IPC(主分类):H04N7/26 授权公告日:20130717 终止日期:20150930 申请日:20110930

    专利权的终止

  • 2013-07-17

    授权

    授权

  • 2012-03-28

    实质审查的生效 IPC(主分类):H04N7/26 申请日:20110930

    实质审查的生效

  • 2012-02-01

    公开

    公开

说明书

技术领域

本发明涉及的是一种嵌入式视频解码领域的方法,具体的说,涉及的是一种基于可重构技术的MPEG2亮度插值的实现方法。

背景技术

随着视频标准的发展,视频压缩的效果和性能越来越好,但其复杂度和计算量也大大增加。相应的,在解码端要实现实时解码,对硬件的数据并行性和计算效率提出了很高的要求。

 MPEG2是运动图像专家组于1994年发布的视频和音频压缩国际标准,经过了多年的修订与完善,现在MPEG2已经非常成熟,在数字广播电视、卫星转播,DVD产品、高清影像等领域有着广阔的应用,虽然更新的MPEG4标准已经发布,但是MPEG2的市场占有率较高,仍然有很高的研究和应用价值。

运动估计是去除视频中各帧的时间相关性,增大视频编码压缩率的重要方法。在编码端,要进行帧间预测,就是根据相邻帧的相似性,按照一定的搜索算法,找到相邻帧中相似的块,用运动矢量来标识,再将运动矢量经过熵编码压缩。在解码端,相应的需要进行运动补偿,根据解码出来的运动矢量,找到当前帧在参考帧中最相近的块,恢复出编码前的图像数据。

由于自然物体运动的连续性,采用整数像素点来进行帧间预测往往不能找到匹配的很好的图像块。因此,一般采用将整数点像素进行插值,得到分数点像素再进行帧间预测,实验证明,这可以大大提高帧间预测的准确度和编码效率。在解码端,要恢复图像,同样需要先做插值得到分数像素点的样本值。

 MPEG2中运动补偿使用的是1/2像素精度,所以有三种插值的位置,如图1所示,(图中圆形的是整数像素点,正方形的是行和列的1/2像素点,三角形的是中间的1/2像素点,箭头上的数字为插值时整数点样本值的权重),分别为:

1. 行方向1/2像素插值:对水平方向相邻的两个整数像素的值取平均值。

 2.列方向1/2像素插值:对垂直方向相邻的两个整数像素的值取平均值。

 3.中间1/2像素插值:对水平方向相邻的两个整数像素和垂直方向相邻的两个整数像素,共四个像素点的值取平均值。

 MPEG2解码时,亮度是按照8×8的块为单位进行,在插值的时候,要得到8×8块的所有三种分数像素点的亮度插值数据,需要输入9×9的块数据,如图2所示,也即多输入一行和一列的数据。

传统上,执行一个算法的方式主要有两种:通用处理器和专用集成电路(ASIC:Application Specific Integrated Circuit)。通用处理器可以通过软件编程来执行各种算法,十分灵活,但是在性能、功耗和面积上往往不能达到要求。而ASIC是针对特定算法进行设计,可以达到很高的性能,同时面积和功耗也比较小,但是不能执行别的算法,灵活性差。而且设计ASIC需要完成一系列复杂的流程,研发周期很长,经常难以满足产品上市时间的要求,同时研发费用很高,特别是随着芯片工艺尺寸的缩小,成本更是成倍增加。因此对一种新的计算技术的需求十分迫切。

可重构计算技术就是在这种背景下出现的,目的是填补两者之间的空白,在性能和灵活性上做一个折中。可重构计算的核心部分是多个功能单元组成的阵列,并且有灵活的互联连接它们。根据功能单元的粒度大小,可以分为细粒度和粗粒度阵列。FPGA是一种典型的细粒度可重构阵列,以查找表为最小粒度单元,其出现较早,比较成熟,现在有着很广泛的应用。但是随着算法的规模和复杂度增加,FPGA的单元数量和互联面积剧增,同时功耗增大。粗粒度阵列一般以字长宽度的算术逻辑单元(Arithmetic Logic Unit)为最小粒度单元,非常适合大规模计算密集型的应用,例如视频编解码、图像处理、无线通信和数据加密等。

发明内容

本发明的目的是针对现有技术的不足,提出一种基于可重构技术的MPEG2亮度插值的实现方法,利用可重构阵列,加速MPEG2标准亮度插值算法的执行,更好的满足实时解码的需求。

本发明是通过以下的技术方案实现的,本发明一种基于可重构技术的MPEG2亮度插值的实现方法,包括以下步骤:

首先,进行算法分析,根据MPEG2亮度插值的定义设计出DFG(Data Flow Graph,数据流图),得到算法的数据传输需求;

其次,根据算法分析的结果和可重构阵列的架构,对数据流图进行分割和映射,设计出最优的数据传输的方案;

然后,根据上面两步的结果,利用配置工具,生成可重构阵列的配置字;

最后,通过ARM处理器将配置信息载入到可重构阵列的配置信息存储器中,以此将可重构阵列配置成为一个专用于执行MPEG2亮度插值的加速模块。

  

所述根据MPEG2亮度插值的定义设计出DFG,具体如下:

计算行和列的1/2像素插值的DFG是一致的,要得到1个插值点的样本值,需要输入2个整数样本值,做1次加法和1次移位;

计算中间的1/2像素点的插值的DFG有4个节点,要得到1个插值点的样本值,需要输入4个样本值,做3次加法和1次移位。

所述对数据流图进行分割和映射,具体是指:可重构阵列有64个计算单元,计算1个行或列的1/2像素样本值的DFG有2个节点,对DFG进行扩充,映射到64个节点,即可以并行计算出32个行或列的1/2像素样本值,由于需要相邻块的整数像素点样本值以及整数像素样本值的复用,1次需要输入个36整数像素样本值,采用按行输入(计算行的1/2像素样本值)和按列输入(计算列的1/2像素样本值)的方式,则1次需要输入4行或4列的整数像素样本值,完成1个8×8块数据的行或列的1/2像素插值需要循环2次;

计算中间的1/2像素样本值的DFG有4个节点,对其进行扩充,映射到32个节点,即可以并行计算出8个中间的1/2像素的样本值,由于需要相邻块的整数像素点样本值以及整数像素样本值的复用,1次需要输入45个整数像素样本值,采用按行输入的方式,1次需要输入5行的整数像素点数据,完成1个8×8块数据的中间1/2像素插值需要循环8次;

输入数据,也即8×8块数据存储在SRAM中,可重构阵列开始运行后,将其载入阵列的输入FIFO中,阵列的计算单元从输入FIFO中读入数据进行计算,然后将输出数据写入阵列的输出FIFO中,然后将输出数据写入SRAM的指定位置,然后继续取出下一个输入数据,重复以上过程。

所述可重构阵列是通过配置字来控制的。

所述可重构阵列的配置字,包括:数据的读取和写入模块,计算单元的数据来源和操作码,可配置的模块都有一个配置字的FIFO,运行时从中取出配置字并执行,配置字是一串二进制的数字。

所述可重构阵列的配置字,以32位为单位,大小与模块的功能有关,可配置部分包括REDL、CEDL、RCA、CEDS、CIDL、REDS、RIDL。配置字通过一个配置工具辅助手工生成,按照上一步得到的结果,得到一系列的二进制文件。

所述通过ARM处理器将配置信息载入到可重构阵列的配置信息存储器中,具体是指:配置信息存储在片上的ROM或者片外的存储设备(如SD卡)中,在系统运行开始时,主核ARM处理器执行系统的初始化程序,这些配置字二进制文件被写入到可重构阵列内专门用于存储配置字的RAM或者FIFO中,然后ARM处理器使能可重构阵列,可重构阵列读取配置字并开始计算,这样可重构阵列就专门用于MPEG2亮度插值,成为一个专用模块。

本发明所采用的可重构阵列是一个片上系统( SOC: System on Chip),主要包括了主处理器(ARM7),直接存储器存取控制器(DMAC:Direct Memory Access Controller),片上静态随机存储器(SRAM:Static Random Access Memory),两条片上总线(包括自定义的Fast Bus和工业标准总线AHB),一个可重构处理单元(RPU),ARM处理器是系统的主核,负责系统的初始化和整体控制,DMAC负责从片外的存储器读取数据,RPU是可重构处理的主要部件,AHB总线是32位系统总线,Fast总线是64位的存储器总线。

 Mpeg2亮度插值需要处理的数据,以8×8的块为单位存储在SRAM中,若视频分辨率为D1(704×576),则每帧图像包含6336个块。RPU内部有四个相对独立的8×8的计算单元阵列,为了充分发挥RPU的并行性,本发明采用的执行模式为:第一个计算单元阵列计算行的1/2像素,第二个计算单元阵列计算列的1/2像素,第三个和第四个计算单元阵列共同计算中间的1/2像素,各个计算单元阵列并行执行,没有数据依赖关系。

整个执行过程为:首先,亮度插值需要用到的9×9的输入数据从SRAM中载入到RPU中。然后,这些数据被分发到各个计算单元中,根据事先载入的配置进行计算,经过多次循环后,得到三种1/2像素的8×8的块数据。最后按照配置的地址写入到SRAM中去。然后继续取出下一个8×8的输入数据进行插值,直到一帧所有的数据都处理完,向ARM发出中断,等待下一次的配置。

与现有技术相比,本发明具有以下有益效果:本发明的基于可重构技术来实现Mpeg2亮度插值的方法,在RPU的寄存器传输级(RTL)平台上进行了仿真,得到了执行1个块的亮度插值的周期数为183。同样的方法,使用软件编程,在ARM7TDMI的周期精确级平台进行了仿真,执行的周期数为4816。可以得到性能的加速比为26.32,可见使用可重构技术来执行MPEG2亮度插值要优于纯软件的方式,可以更好的满足视频解码的实时性要求。而且相比ASIC,仅需要根据算法得到一整套配置就可以运行,不需要经过复杂的芯片设计过程,可以大大的节省开发时间和开发费用,实用性很高。

附图说明

图1为MPEG2插值的原理图;

图2为计算8×8块的三种亮度插值数据所需要输入的9×9的块数据示意图;

图3为基于MPEG2亮度插值算法的可重构实现方法所采用的可重构系统结构框图;

图4为从MPEG2亮度插值映射到RCA上的数据流图;

图5为MPEG2亮度插值执行过程中一个块数据传输示意图;

图6为片上SOC系统的示意图。

具体实施方式

下面对本发明的实施例作详细说明,本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

本实施例中,可重构处理单元是核心部分,其内部结构如图3所示,下面对其简要说明。在RPU内部,所有存储器和先入先出队列的宽度都是256位,各个模块的数据端口也是256位。RPU和ARM通过32位AHB总线进行通信。SRAM通过一个存储器接口(EMI:External Memory Interface)和64位的Fast总线与RPU通信。RPU内部又分为4个可重构阵列(RCA: Reconfigurable Cell Array),每个阵列包括了64个处理单元(PE:Processing Element),按照8×8的形式排列,这样整个RPU共有256个PE。RPU内部还包括:一个系统配置接口模块(CI:Configuration Interface),用于配置字的传输以及RPU与ARM的控制交互;一个SRAM数据的读取和存储模块(REDT: RCA External Data Transfer),内部包含读模块(REDL: RCA External Data Load)和写模块(REDS: RCA External Data Store),为4个RCA提供SRAM数据的传输功能;RPU中间数据存储器(MB: Macro Buffer)和其数据载入模块(RIDL: RCA Internal Data Load);两个配置字存储器,GCCM(Global Core Context Memory)和GCGM(Global Context Group Memory),分别用于存储不同层次的配置字;RPU的配置解析和控制模块。每个RCA内部包括:外部输入数据的先入先出队列(ELDF: External Load Data FIFO)和向外部输出的先入先出队列(ESDF:External Store Data FIFO);外部数据载入单元(CEDL:Core External Data Load);8×8的PE阵列以及其输入先入先出队列(RIF:RCA Input FIFO)和输出先入先出队列(ROF:RCA Output FIFO);输出数据存储模块(CDS:Core Data Store);RCA内部中间数据存储器(RIM:RCA Internal Memory)和内部数据载入单元(CIDL:Core Internal Data Load);RCA本地配置字存储器(LGCM:Local Context Group Memory)和常数存储器(CM:Constant Memory);RCA的配置字解析模块和控制模块。

如图6所示,是本发明所采用的可重构阵列是一个片上系统( SOC: System on Chip),主要包括了主处理器(ARM7),直接存储器存取控制器(DMAC:Direct Memory Access Controller),片上静态随机存储器(SRAM:Static Random Access Memory),两条片上总线(包括自定义的Fast Bus和工业标准总线AHB),一个可重构处理单元(RPU),ARM处理器是系统的主核,负责系统的初始化和整体控制,DMAC负责从片外的存储器读取数据,RPU是可重构处理的主要部件,AHB总线是32位系统总线,Fast总线是64位的存储器总线。

本发明中分析了MPEG2的亮度插值过程,从中手工提取出数据流图,如图4所示。一共有2个数据流图:计算行和列的1/2像素点的数据流图相似,每次循环输入4行或4列的36个整数像素点数据,得到4行或4列的32个1/2像素点数据,循环2次就可以得到8×8块的64个1/2像素点数据;计算中间的1/2像素点的数据流图节点数更多,每次循环输入2行的18个整数像素点数据,得到1行的8个1/2像素点的数据, 2个RCA同时计算中间的1/2像素点,循环4次可以得到中间8×8块的64个1/2像素点数据。在计算平均值时,除法都是用移位来完成的,每次计算时阵列需要的常数都通过ARM处理器事先写入CM中,在运行过程中不变。经过规划之后,9×9的块数据在RPU中的数据传输流程如图5所示[其中(a)为计算行和列1/2像素点时的数据传输方案,(b)为计算中间的1/2像素点时的数据传输方案。SRAM的存储采用2D模式,可以直接存取一帧图像中需要的块数据,各个FIFO中阴影部分为有效数据部分,每一行存储8个或9个数据。],详细过程为:

1. RPU通过REDL将需要的9×9块数据写入4个RCA的ELDF中去。RCA0用于计算行的1/2像素点,RCA1用于计算列的1/2像素点,RCA2和RCA3用于计算中间的1/2像素点。RCA0和RCA1的ELDF中写入了9×9块数据的全部数据,RCA2的ELDF中写入了9×9块数据上半部分的5×9块数据,RCA3的ELDF中写入了9×9块数据下半部分的5×9块数据。REDL配置为2D取数模式,数据长度为18 bytes,数据高度为9行(RCA0和RCA1)或5行(RCA2和RCA3),不拼接写入ELDF中,则输入块数据在ELDF中占据了9行(RCA0和RCA1)或5行(RCA2和RCA3)的空间,每行宽度为144位;

2. 每个RCA通过CEDL将ELDF中的9行(RCA0和RCA1)或5行(RCA2和RCA3)数据写入RIF中,存储格式与在ELDF中相同;

3. 每个RCA的64个PE根据亮度插值的配置信息(RCA0和RCA1分别按计算行和列的1/2像素点的数据流图配置,RCA2和RCA3按计算中间的1/2像素点的数据流图配置)进行计算,RCA0和RCA1循环两次,分别得到行和列的8×8的亮度1/2像素点插值数据,RCA2和RCA3循环4此,共同得到中间的8×8的亮度1/2像素点插值数据。这些数据都写入各自的ROF中,存储数据格式与在ELDF中类似,不同在于都少了1行和1列(RCA0和RCA1得到8×8的块数据,RCA2和RCA3得到4×8的块数据);

4. 每个RCA通过CDS将得到的亮度1/2像素点数据写入各自的ESDF中,存储格式与在ROF中相同;

5. RPU通过REDS将4个RCA的ESDF中的亮度1/2像素点插值数据按照指定的配置写入到SRAM中去。REDS配置为2D写入模式,写入数据长度为16 bytes,数据高度为8行(RCA0和RCA1)或4行(RCA2和RCA3),不拼接写入SRAM中;

RPU继续取出下一个输入块数据,重复上述过程,直到一帧图像的所有块都进行了亮度插值,然后向ARM发出中断,等待进一步的配置。

以上所述,仅是本发明的较佳实施实例而已,并非对本发明做任何形式上的限制,任何未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施实例所作的任何简单修改、等同变化与修饰,均属于本发明技术方案的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号