一种专为存取图象块优化的二维dma传输方法

文档序号:6563495阅读:189来源:国知局
专利名称:一种专为存取图象块优化的二维dma传输方法
技术领域
本发明涉及一种能够专为在视频通信的硬件MAE (media accelerator engine 多媒体加速引擎)上存取图象块优化的二维DMA传输方法。尤其涉及在MAE 高速存取具有字节对齐的子图象块数据以及图象的子块数据边界超越图象边界 时的一种传输方法。
背景技术
传统的DMA传输中,DMA能够和主处理器并行的处理数据,减轻处理器 的负荷,并且由于是直接内存存取,传输速度比CPU存取数据的速度要快,所 以一般需要大批量存取数据的时候就采用DMA方式进行传输。
伹是,传统的DMA数据传输速度逐渐适应不了高带宽、高传输速率的图象 视频数据传lT要求,在普通的二维DMA传输下,处理字节对齐的数据传输方法 是进行单字节传输,浪费了大量带宽,而且在多媒体应用中,图象视频数据是 非常大的一类数据,因为这类图象是二维的。美国专利(US6292853B1)公开了一 种二维DMA传输模式,在这种传输模式下,可以通过配置图象的两维的大小, 指定要传输的图象,在方便配置的同时,也减少了配置的次数,加快了传输速 度。然而在多媒体加速引擎的图象存取中,由于常需要取子图象块来处理,或 者将处理好的子图象块存入存储器中,而这些子图象块有些是字节对齐的,若 用普通的二维DMA,则会大大降低传输速度,而且在某些处理情况下,子图象 块的边界不在原图象的边界内,如用普通的二维DMA传输,则会导致取数错误。

发明内容
本发明的目的在于提供一种专为MAE存取图象块数据优化的二维DMA方法, 旨在提高处理字节对齐时的图象块数据传输速度,并自动补齐不在图象边界内 的子图象块数据。
一种专为存取图象块优化的二维DMA传输方法,该方法包括如F的步骤 步骤l:根据存数边和取数边的起始字节地址求得存数边和取数边的实际存
数和取数的起始word地址;
步骤2:根据存数边和取数边的起始字节地址以及每一行(一雄:)传输数据
的字节数求得每传一行数据的存数边存数次数以及取数边的取数次数; 步骤3:初始化存数边和取数边的行计数值和列计数值; 步骤4:根据存数边起始word地址和自适应FIFO状态读取存数边数据并写入
自适应FIF0中
步骤5:在步骤(4)向自适应FIFO中写入数据的同时,根据取数边word地 址和自适应FIFO状态,且欲读取的有效数据字节数大于或者等于已存有效数据 的字节数时,读指针读取自适应FIFO中的数据
步骤6:存数边存完一行数据后,若自适应FIFO未满,则继续传输下一行的 数据,重新开始行传输数计数,并对列计数器计数一次,读数边则继续读数;
该方法步骤(1)中所述的实际存数和取数的起始WORD地址是通过各自的字 节地址除去低两位之后得到。
所述步骤3还包括如下的步骤
根据存数边开始存入的有效数据数目和取数边开始取数需要取的有效数据 字节数初始化自适应FIFO的读写指针。 所述步骤4还包括如下的步骤
每写入一个数据对存数次数记一次数,并更新自适应FIFO写指针。
所述步骤5还包括如—卜'的步骤-
读完数据后更新取数次数和自适应FIFO读指针以及自适应FIFO状态。
所述步骤6还包括如下的步骤
若读完一行,则重新开始行传输计数,并对列计数器计数一次,直到所有 数据传输完成。
MAE在处理图象的时候,需要取其中的子图像块进行处理,然而有的子图像 块超出了图像边界,超出图象边界的这部分数据如果按照普通的二维DMA的取数 方法只能取到错误的数据。
—种专为存取图象块优化的二维DMA传输方法,其特征在于所述该方法采 用自动补齐技术对超出图像边界的子图像块进行取数,包括如下的具体步骤
步骤l:使用平面坐标确定一个图象,将图象上的每一个点用平面坐标表示 其位置;
步骤2:用起始点坐标和子图象宽度及高度确定所需传输的子图象块;
步骤3:根据子图象块所要传输的点的坐标确定子图象块点所在的区域,再 根据子图象块点所在的区域,采用不同的补齐方法;
步骤4:对子图象块所有待传输的点,重复上述步骤(3),每次处理四个 点直至取完该子图象块数据。
上述步骤(3)所述的根据子图象块所要传输的点的坐标确定子图象块点所 在的区域,再根据子图象块点所在的区域,采用不同的补齐方法,其特征在于: 该方法具体为若子图象块点的坐标不在图象区域内,则取最靠近该点图象边 界的四个字节数据;其中,
若子图象块点在图象的左边或者右边区域,则对耳义过来的四个字节数据只
采用一个临近图象边界的字节做为补齐数;
若子图象块点在图象的正上方或者正下方,则取过来的四个字节的数据都 作为补齐数,即存入FIFO的四个宇节数据就是取到的数。
本发明的显著意义在于
本发明公开了一种专为MAE高速存取图象块数据的二维DMA传输方法,该 方法适应MAE存取数据高速度的要求,使用一种自适应FIFO计数,自动补齐不 在图象边界内的子图象块数据,在字节对齐的数据传输时能有效的提高传输速 度,最大时可以将传输速度提高四倍。使用在MAE处理中取子图象块参考帧等 应用时子图象块点不在图象区域时的自动补齐方法,可以保证处理数据存取的 正确性和MAE处理的正确性。


图1是一个带有MAE二维DMA的系统框图2是四种不同的字节对齐的块数据在内存中存和取的情况示意图; 图3是自动比较FIF0的示意图,其中左边标志的是写指针,右边标志的是读指针; 图4是在内存中的图象和子图象块的抽象示意图。
具体实施例方式
下面结合附图,对本发明所述方法进行更为详细的说明。 图l是本发明所述方法的系统框图,在该系统中,DMA在被配置好寄存器参
数后,控制数据经过中间的FIFO存取。
当待传输的数据是字节对齐的时候,也就是其地址的低两位不是O的时候,
采用16个字节的自适应FIFO来处理数据的传输。图3就是16字节的自适应FIF0示
意图,图2是典型的四种字节对齐的不同情况,具体的^"节对齐处理方式如下
首先假设取数边起始地址的低两位为g,要取的二维数据的行宽低两位为 gl,其他高位为g2,取数数目为g3,存数边的起始地址的低两位为s,要存的二 维数据的行宽低两位为sl,其他高位为s2,存数数目为s3。使用自适应FIFO处 理字节对齐的高速传输包括如下步骤
步骤l:根据存数边和取数边的起始字节地址求得存数边和取数边的实际存 数和取数起始word地址。它们分别是各自的字节地址除去低两位之后得到;
歩骤2:根据存数边和取数边的起始字节地址以及每一行(一维)传输数据
的字节数求得每传一行数据存数边的存数次数以及取数边的取数次数;其中
存数次数的确定如果s等于0, sl等于0,则存数次数s3^s2,如果s不等 于0, sl不等于0,且s + sl大于4,则存数次数s3-s2+2,其他情况下存数次数 s3 = s2 + l;
取数次数的确定如果g等于0, gl等于0,则取数次数g3二g2,如果g不等 于0, gl不等于0,且g+gl大于4,则取数次数g3二g2 + 2,其他情况—F取数次数 g3=g2 + l。
附图2是典型的四种字节对齐的不同情况,下面分别说明这四种情况下各自 的存数次数和取数次数
驸图2 : (a)情况下的存数次数和取数次数都是3次,(b)情况下的存数次 数和取数次数都是4次,(c)情况下的存数次数是3,取数次数是4, (d)情况 下的存数次数是4,取数次数是3。
步骤3:初始化存数边和取数边的行计数值和列计数值;初始化自适应FIFO 的读写指针,如图3所示,读写指针并不是指向同一处,这样可以保证冗余数据 不会影响有效数据存取。其中
步骤3.1:存数边和取数边的行计数初始值就等于步骤(2)中的行存数次
数和行取数次数,列初始值都等于要传的数据的列数目;
步骤3.2:写指针的初始化第一次传输之前,写指针指向0000;
步骤3.3:读指针的初始化如果s大于或等于g,第一次读FIFO数据的时候
指针为(g-S),如果S小于g,则为(16+g-S);
下面结合附图2来说明步骤3所述的具体的初始化过程。在图2中a情况下 初始写指针是0000,初始读指针也是0000,第一次存入的数据的第一个字节将 是冗余的无效数据,读出的第一个字节也是冗余无效的;b情况下存数边指针是 0000,第一次存的数前三个字节都是冗余数据,取数边的指针是0001,这样才 能保证第一次取数前两个字节都是冗余数据;c情况下存数边初始指针是0000, 读数边初始指针是1110,这样才能保证读到两个有效数据存入需要的word地址; d情况下初始写指针是0000,初始读指针则是0011,这样才能从有效数据开始读 取。
步骤4:根据存数边起始word地址和自适应FIFO状态读取存数边数据写入自 适应FIF0中,如果FIFO有最少四个字节的空位置,那么就根据存数边起始地址 开始读数据写入FIFO,否则,就等待。每写入一个数据对存数次数记一次数, 即减去l,并对自适应FIF0写指针更新即增加4。
步骤5:在向自适应FIFO写入数据的同时,根据取数边起始word地址和自适 应FIFO状态,在欲读取的有效数据字节数小于或者等于已存有效数据字节数时, 再发读使能信号读取数据,读完后更新取数次数和自适应FIFO读指针以及自适 应FIFO状态。这时读指针的更新直接增加4就可以。
下面结合附图2来介绍具体该在什么时候才能读,即读使能信号什么时候才 能有效,以及读指针怎么变化。在图2中a情况下,写和读只要同步进行就可
以了,因为两边的情况完全一样;b情况下,第一次取数必须要取到两个有效数, 而第一次存数只能存入一个有效数,所以必须等存数边存入两个数之后再取数, 即必须保证要取的有效数据的字节数小于已经存入的有效数据字节数,而且取 下一个数必须等再次写入一个数才能取,直到最后一个数写入,再连发两次读 使能,保证读完所有有效数据,当然;c情况下写入一次数据就可以开始读数据 了; d情况下则要等存数边存完第二次数才能开始取数,读第二个数必须等三个 数存入,直到最后--个数存入,再连发两次读使能信号,保证数据能读完,。
步骤6:存数边存完一行数据后,只要自适应FIFO不是满的,则开始下一行 的数据传输,重新开始行传输数计数,并对列计数器计数一次,读数边则继续 读数,若读完一行,则重新开始行传输计数,并对列计数器计数一次,直到所 有数据传输完成。另外,对自适应FIFO的读写指针必须进行重新定位。具体的 重新定位方法是
如果存数数目s3等于取数数目g3,那么读写指针的重定位都是跟行内数据 传输时变化一样,即增加4;如果存数数目s3大于取数数目g3,则取数的读指针 重定位的时候需要增加8个字节的单位,而存数边的指针则仍然是增加4;如果 存数数目s3小于取数数目g3,则存数的 i指针重定位的时候需要增加8,取数的 读指针则是增加4。
当传输的子图象的范围超出图象边界的时候,采用自动补齐技术,如附图4 所示,具体的步骤如下
步骤l:使用坐标模式确定一个图象,把图象的第一个点确定为坐标原点, 图象的行方向定为x轴,列方向定为y轴,图象上的每-一个点都用坐标(x,y)来 表示,在图4中,标出了x轴和y轴。
步骤2:对要传输的子图象块,当图象确定下来之后,用起始点坐标和子图
象宽度以及高度来确定要传输的子图象块。图4中的区域6就是图象的区域,它 的地址是连续的,每一行的行尾地址跟下-行的行首地址是连续的,子图象块 则不一定。
步骤3:根据子图象块要传输的点的坐标确定子图象块的点所在的区域,再
根据子图象块点所在的区域,采用不同的补齐方法,其中
(a) 图象在区域l中时取图象的左下的点值补齐所有区域l中的点的值,
也即是坐标点为(0, 0)点的值;
(b) 图象在区域2中时取图象的下边界的点值来补齐相应的值,采用坐标
点(x,O) , (x+l,0), (x+2,0), 0t+3,0)四点的值;
(c) 图象在区域3中时取图象的右下的点值来补齐区域3中的点值,也即是 坐标点(X行宽,0)来补齐;
(d) 图象在区域4中时取图象的左边界的点值来补齐区域4中的点值,也即 是坐标点(0, y)的点值来补齐
(e) 图象在区域5中时取图象的左上边界的点值来补齐区域5中的点值,也 即是坐标点(0, y方向图象宽度)点值来补齐;
(f) 图象在区域6中时不需要补齐;
(g) 图象在区域7中时取图象的上边界的点值来补齐区域7中的点值,也即
是坐标点(x, y图象宽度),(x + l, y图象宽度),(x+2, y图象宽度), (x+3, y图象宽度);
(h) 图象在区域8中时取图象右边界点值来补齐区域8中点值,也即是坐 标点(x行宽,y)的点值来补齐;
(i) 图象在区域9中时取图象右上的点值来补齐区域9中的点值,也即是 坐标点(x行宽,y图象宽度)来补齐所有区域9的数据点值。
歩骤(4)对子图象块的待传输的所有的点,重复3的步骤,每次处理四个
点,直到该子图象块数据取完。
本发明所用的实例只是用来对本发明所述方法的一种解释说明,并不代表 本发明所要保护的范围仅限于此,凡采用本发明中所提及的方法,或者采用对 本发明所述方法中的某些步骤进行替换,均在本发明所要求的保护范围,从事 本行业的技术人员对此应予理解。
权利要求
1、一种专为存取图象块优化的二维DMA传输方法,该方法包括如下的步骤步骤1根据存数边和取数边的起始字节地址求得存数边和取数边的实际存数和取数的起始word地址;步骤2根据存数边和取数边的起始字节地址以及每一行(一维)传输数据的字节数求得每传一行数据的存数边存数次数以及取数边的取数次数;步骤3初始化存数边和取数边的行计数值和列计数值;步骤4根据存数边起始word地址和自适应FIFO状态读取存数边数据并写入自适应FIFO中;步骤5在步骤(4)向自适应FIFO中写入数据的同时,根据取数边word地址和自适应FIFO状态,且欲读取的有效数据字节数大于或者等于已存有效数据字节数时,读指针读取自适应FIFO中的数据;步骤6存数边存完一行数据后,若自适应FIFO未满,则继续下一行数据的传输,重新开始行传输数计数,并对列计数器计数一次,读数边则继续读数;
2、 根据权利要求1所述的一种专为存取图象块优化的二维DMA传输方法, 其特征在于该方法步骤(1)中所述的实际存数和取数的起始WORD地址是通过 各自的字节地址除去低两位之后得到。
3、 根据权利要求1所述的一种专为存取图象块优化的二维DMA传输方法,其特征在干该方法所述步骤(3)中还包括如下的步骤根据存数边开始存入的有效数据数目和取数边开始取数需要取的有效数据字节数初始化自适应FIFO的读写指针。
4、 根据权利要求1所述的一种专为存取图象块优化的二维DMA传输方法, 其特征在于该方法所述步骤(4)中还包括如下的歩骤 每写入一个数据对存数次数记一次数,并更新自适应FIFO写指针。
5、 根据权利要求1所述的一种专为存取图象块优化的二维DMA传输方法,其特征在于该方法所述步骤(5)中还包括如下的步骤读完数据后更新取数次数和自适应FIFO读指针以及自适/^FIFO状态。
6、 根据权利要求1所述的一种专为存取图象块优化的二维DMA传输方法,其特征在于该方法所述步骤(6)中还包括如下的步骤若读完一行,则重新开始行传输计数,并对列计数器计数--次,直到所有 数据传输完成。
7、 一种专为存取图象块优化的二维DMA传输方法,其特征在于所述该方 法采用自动补齐技术对超出图像边界的子图像块进行取数,包括如下的具体步骤歩骤l:使用平面坐标确定一个图象,将图象上的每一个点用平面坐标表示 其位置;步骤2:用起始点坐标和子图象宽度及高度确定所需传输的子图象块; 步骤3:根据子图象块所要传输的点的坐标确定子图象块点所在的区域,再根据子图象块点所在的区域,采用不同的补齐方法;步骤4:对子图象块所有待传输的点,重复上述步骤(3),每次处理四个点直至取完该子图象块数据。
8、 根据权利要求7所述的一种专为存取图象块优化的二维DMA传输方法,步 骤(3)所述的根据子图象块所要传输的点的坐标确定子图象块点所在的区域,再根据子图象块点所在的区域,采用不同的补齐方法,其特征在于该方法具 体为:.若子图象块点的坐标不在图象区域内,则取最靠近该点图象边界的四个 字节数据;其中,若子图象块点在图象的左边或者右边区域,则对取过来的四个字节数据只采用--个临近图象边界的字节做为补齐数;若子图象块点在图象的正上方或者正下方,则取过来的四个字节的数据都 作为补齐数,即存入FIFO的四个字节数据就是取到的数。
全文摘要
本发明公开了一种专为MAE存取图象块数据优化的二维DMA方法,该方法能够显著提高在处理字节对齐时的图象块传输速度,自动补齐不在图象边界内的子图象块数据,主要包括如下的步骤(1)根据存数边和取数边的起始字节地址来得存数边和取数边的实际存数和取数的起始word地址;(2)根据存数边和取数边的起始字节地址及每行传输数据的字节数求得存数边存数次数以及取数边的取数次数;(3)初始化存数边和取数边的行计数值和列计数值;(4)读取存数边数据并写入自适应FIFO中;(5)向自适应FIFO中写入数据;(6)自适应FIFO未满,继续传输下一行数据。该方法可以将传输速度提高四倍,保证处理数据存取的正确性。
文档编号G06F13/20GK101196860SQ200610157440
公开日2008年6月11日 申请日期2006年12月8日 优先权日2006年12月8日
发明者方应龙, 汤加跃 申请人:深圳艾科创新微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1