发明内容
本发明要解决的技术问题,在于提供一种图像数据或音频数据的叠加处理方法和装置,用于图像或音频叠加的运算,独立运作,不占用系统资源,不影响处理速度,功耗小。
本发明是这样实现的:一种图像数据或音频数据的叠加处理方法,其是通过设置在主设备上并连接于总线的一叠加处理器进行,该叠加处理器包括一主控制器、一寄存器、一运算器,三个FIFO、一主设备总线接口以及一从设备总线接口,所述三个FIFO分别为FIFO-1、FIFO-2、FIFO-3;所述叠加处理方法包括主控制器部分和运算器部分;
所述主控制器部分包括如下步骤:
步骤11、从寄存器中读出启动标志位,判断是否启动,是:跳到步骤12;否:重新进行步骤11;
步骤12、从寄存器读出要进行叠加处理的两组图像数据或音频数据A和B的起始地址和运算后存放的地址,该两起始地址和运算后存放的地址分别称为地址变量A0、B0和C0,
步骤13、判断FIFO-1是否为满?是:跳到下一步;否:通过主设备总线接口访问主设备的内存控制器,从内存中读出一段图像数据或音频数据A存放到FIFO-1中,并把地址变量A0加上读出的长度,生成新的地址变量A0;
步骤14、判断FIFO-2是否为满?是:跳到下一步;否:通过主设备总线接口访问主设备的内存控制器,从内存中读出一段图像数据或音频数据B存放到FIFO-2中,并把地址变量B0加上读出的长度,生成新的地址变量B0;
步骤15、判断FIFO-3是否为空?是:跳到下一步;否:通过主设备总线接口访问内存控制器,把FIFO-3的数据写到内存中,并把地址变量C0加上写到内存的数据的长度,生成新的地址变量C0;
步骤16、判断是否运算完毕,是:清除启动标志,通过主设备的中断控制器启动中断输出,并跳到步骤11;否:跳到步骤13;
所述运算器部分包括如下步骤:
步骤21、判断FIFO-3是否为满?是:继续本步骤的判断;否:跳到下一步;
步骤22、判断FIFO-1是否为空?是:继续本步骤的判断;否:读出一个图像数据或音频数据A,跳下一步;
步骤23、判断FIFO-2空吗?是:继续本步;否:读出一个图像数据或音频数据B,跳下一步;
步骤24、把图像数据或音频数据和图像数据或音频数据B进行图像或音频运算,把运算结果写到FIFO-3中,然后返回到步骤21。
其中,所述叠加处理器具体是设置在主设备的SOC上。所述主设备是带有图像输出的设备、带有音频输出的设备或者兼带音频和图像输出的设备。
本发明还一种图像数据或音频数据的叠加处理装置,其是通过设置在主设备上并连接于总线的一叠加处理器进行,该叠加处理器包括一主控制器、一寄存器、一运算器、三个FIFO、一主设备总线接口以及一从设备总线接口,所述三个FIFO分别为FIFO-1、FIFO-2、FIFO-3;
所述主控制器用于:
从寄存器中读出启动标志位,判断是否启动,是:跳到下一步;否:重新开始本步骤;
从寄存器读出要进行叠加处理的两组图像数据或音频数据A和B的起始地址和运算后存放的地址,该两起始地址和运算后存放的地址分别称为地址变量A0、B0和C0,
判断FIFO-1是否为满,是:跳到下一步;否:通过主设备总线接口访问主设备的内存控制器,从内存中读出一段图像数据或音频数据A存放到FIFO-1中,并把地址变量A0加上读出的长度,生成新的地址变量A0;
判断FIFO-2是否为满,是:跳到下一步;否:通过主设备总线接口访问主设备的内存控制器,从内存中读出一段图像数据或音频数据B存放到FIFO-2中,并把地址变量B0加上读出的长度,生成新的地址变量B0;
判断FIFO-3是否为空,是:跳到下一步;否:通过主设备总线接口访问内存控制器,把FIFO-3的数据写到内存中,并把地址变量C0加上写到内存的数据的长度,生成新的地址变量C0;
判断是否运算完毕,是:清除启动标志,通过主设备的中断控制器启动中断输出,并跳到上述从寄存器中读出启动标志位、判断是否启动的步骤;否:跳到上述判断FIFO-1是否为满的步骤;
所述运算器用于:
判断FIFO-3是否为满,是:继续本步骤的判断;否:跳到下一步;
判断FIFO-1是否为空,是:继续本步骤的判断;否:读出一个图像数据或音频数据A,跳下一步;
判断FIFO-2是否为空,是:继续本步;否:读出一个图像数据或音频数据B,跳下一步;
把图像数据或音频数据和图像数据或音频数据B进行图像或音频运算,把运算结果写到FIFO-3中,然后返回到上述判断FIFO-3是否为满的步骤。
本发明具有如下优点:
1、本发明方法主要通过主控制器和运算器配合运作,用于图像或音频数据的叠加的运算,其主控制器部分主要用于将需要叠加的数据读出存放在两个FIFO中,由运算器提取运算后存放在另一FIFO中,再由主控制器把FIFO-3的数据写到内存中,方法简单,实现方便;
2、本发明方法是在带有图像输出或音频输出的设备上专门设置一图像数据或音频数据的叠加处理器进行,并将该叠加处理器设置在SOC上,该叠加处理器独立运作,不占用系统资源,不影响系统的处理速度,功耗小。
具体实施方式
本发明方法,可用于带有图像输出的设备、带有音频输出的设备,或兼带图像输出和音频输出的设备,下称主设备。
请参阅图1所示,为实现本发明方法专门设计的数据叠加处理器的结构示意图,主设备的总线上连接有一系统处理器1、一内存控制器2、一中断控制器3,以及本发明的叠加处理器4。所述叠加处理器4设置于主设备的SOC(未图示)上。
所述叠加处理器4包括一主控制器41、一寄存器42、一运算器43,三个FIFO44、一主设备总线接口45以及一从设备总线接口46;所述寄存器42、主设备总线接口45、从设备总线接口46均连接所述主控制器41,所述主控制器41再分别通过所述三个FIFO44连接所述运算器43,所述主控制器41还与所述中断控制器3连接。所述三个FIFO44分别为FIFO-1、FIFO-2、FIFO-3。
所述主控制器41:通过总线把内存储器中待运算的数据读取放到FIFO-1和FIFO-2中,并把运算后存于FIFO-3中的数据写到内存储器中。
所述寄存器42:用于存储该图像叠加或音频叠加处理器的状态和配置参数。
所述运算器43:用于运算需要叠加的两组图像数据或音频数据;
所述FIFO-1和FIFO-2:用于存放需要叠加的两组图像数据或音频数据。
所述FIFO-3:用于存放运算完的图像数据或音频数据。
结合图2和图3所示,本发明方法的处理流程分为主控制器部分和运算器部分。下面具体举三个实例进行详细说明:
实施例一、仅图像数据的叠加
主控制器41的处理流程为:
步骤11、从寄存器42中读出启动标志位,判断是否启动,是:跳到步骤12;否:重新进行步骤11;
步骤12、从寄存器42读出要进行叠加处理的两组图像数据A和B的起始地址(称为地址变量A0和地址变量B0)和运算后存放的地址(称为变量C0);
步骤13、判断FIFO-1是否为满?是:跳到下一步;否:通过主设备总线接口45访问内存控制器2,从内存中读出一段图像数据A存放到FIFO-1中,并把地址变量A0加上读出的长度,生在新的地址变量A0,以供下一次读取;
步骤14、判断FIFO-2是否为满?是:跳到下一步;否:通过主设备总线接口45访问内存控制器2,从内存中读出一段图像数据B存放到FIFO-2中,并把地址变量B0加上读出的长度,生在新的地址变量B0,以供下一次读取;
步骤15、判断FIFO-3是否为空?是:跳到下一步;否:通过主设备总线接口45访问内存控制器2,把FIFO-3的数据写到内存中供主设备使用,并把地址变量C0加上写到内存的数据的长度,生在新的地址变量C0,以供下一次读取;
步骤16、判断是否运算完毕,是:清除启动标志,通过中断控制器3启动中断输出,跳到步骤11;否:跳到步骤13。
运算器的处理流程为:
步骤21、判断FIFO-3是否为满?是:因无法提供空间存储运算器的运算结果,因此继续本步骤的判断,直至不满;否:说明有剩余空间,跳到下一步;
步骤22、判断FIFO-1是否为空?是:说明FIFO-1中没有用于运算的数据,因此继续本步骤的判断,直至有需要运算的数据;否:说明有需要运算的数据,此时读出一个图像数据A,跳下一步;
步骤23、判断FIFO-2空吗?是:说明FIFO-2中没有用于运算的数据,因此继续本步,直至有需要运算的数据;否:说明有需要运算的数据,此时读出一个图像数据B,跳下一步;
步骤24、把图像数据A和图像数据B进行运算,把运算结果写到FIFO-3中,以供主控制器41把FIFO-3的数据写到内存中供主设备使用,然后返回到步骤21。
实施例二、仅音频数据的叠加
主控制器41的处理流程为:
步骤11、从寄存器42中读出启动标志位,判断是否启动,是:跳到步骤12;否:重新进行步骤11;
步骤12、从寄存器42读出要进行叠加处理的两组音频数据A和B的起始地址(称为地址变量A0和地址变量B0)和运算后存放的地址(称为变量C0);
步骤13、判断FIFO-1是否为满?是:跳到下一步;否:通过主设备总线接口45访问内存控制器2,从内存中读出一段音频数据A存放到FIFO-1中,并把地址变量A0加上读出的长度,生在新的地址变量A0,以供下一次读取;
步骤14、判断FIFO-2是否为满?是:跳到下一步;否:通过主设备总线接口45访问内存控制器2,从内存中读出一段音频数据B存放到FIFO-2中,并把地址变量B0加上读出的长度,生在新的地址变量B0,以供下一次读取;
步骤15、判断FIFO-3是否为空?是:跳到下一步;否:通过主设备总线接口45访问内存控制器2,把FIFO-3的数据写到内存中,并把地址变量C0加上写到内存的数据的长度,生在新的地址变量C0,以供下一次读取;
步骤16、判断是否运算完毕,是:清除启动标志,通过中断控制器3启动中断输出,跳到步骤11;否:跳到步骤13。
运算器的处理流程为:
步骤21、判断FIFO-3是否为满?是:因无法提供空间存储运算器的运算结果,因此继续本步骤的判断,直至不满;否:说明有剩余空间,跳到下一步;
步骤22、判断FIFO-1是否为空?是:说明FIFO-1中没有用于运算的数据,因此继续本步骤的判断,直至有需要运算的数据;否:说明有需要运算的数据,此时读出一个音频数据A,跳下一步;
步骤23、判断FIFO-2空吗?是:说明FIFO-2中没有用于运算的数据,因此继续本步,直至有需要运算的数据;否:说明有需要运算的数据,此时读出一个音频数据B,跳下一步;
步骤24、把音频数据A和音频数据B进行运算,把运算结果写到FIFO-3中,以供主控制器41把FIFO-3的数据写到内存中供主设备使用,然后返回到步骤21。
实施例三、图像数据和音频数据的叠加
本实施例为实施例一和实施例二的合并,如可先进行实施例一中所有步骤将图像数据叠加完毕之后进行实施例二的所有步骤进行音频数据的叠加;也可反过来进行,即先进行实施例二的所有步骤进行音频数据的叠加完毕之后进行实施例一中所有步骤将图像数据叠加,因此,此处不做重复描述。
本发明还一种图像数据或音频数据的叠加处理装置,其是通过设置在主设备上并连接于总线的一叠加处理器进行,该叠加处理器包括一主控制器、一寄存器、一运算器、三个FIFO、一主设备总线接口以及一从设备总线接口,所述三个FIFO分别为FIFO-1、FIFO-2、FIFO-3;
所述主控制器用于:
从寄存器中读出启动标志位,判断是否启动,是:跳到下一步;否:重新开始本步骤;
从寄存器读出要进行叠加处理的两组图像数据或音频数据A和B的起始地址和运算后存放的地址,该两起始地址和运算后存放的地址分别称为地址变量A0、B0和C0,
判断FIFO-1是否为满,是:跳到下一步;否:通过主设备总线接口访问主设备的内存控制器,从内存中读出一段图像数据或音频数据A存放到FIFO-1中,并把地址变量A0加上读出的长度,生成新的地址变量A0;
判断FIFO-2是否为满,是:跳到下一步;否:通过主设备总线接口访问主设备的内存控制器,从内存中读出一段图像数据或音频数据B存放到FIFO-2中,并把地址变量B0加上读出的长度,生成新的地址变量B0;
判断FIFO-3是否为空,是:跳到下一步;否:通过主设备总线接口访问内存控制器,把FIFO-3的数据写到内存中,并把地址变量C0加上写到内存的数据的长度,生成新的地址变量C0;
判断是否运算完毕,是:清除启动标志,通过主设备的中断控制器启动中断输出,并跳到上述从寄存器中读出启动标志位、判断是否启动的步骤;否:跳到上述判断FIFO-1是否为满的步骤;
所述运算器用于:
判断FIFO-3是否为满,是:继续本步骤的判断;否:跳到下一步;
判断FIFO-1是否为空,是:继续本步骤的判断;否:读出一个图像数据或音频数据A,跳下一步;
判断FIFO-2是否为空,是:继续本步;否:读出一个图像数据或音频数据B,跳下一步;
把图像数据或音频数据和图像数据或音频数据B进行图像或音频运算,把运算结果写到FIFO-3中,然后返回到上述判断FIFO-3是否为满的步骤。
综上所述,本发明方法主要通过主控制器和运算器配合运作,用于图像或音频数据的叠加的运算,其主控制器部分主要用于将需要叠加的数据读出存放在两个FIFO中,由运算器提取运算后存放在另一FIFO中,再由主控制器把FIFO-3的数据写到内存中,方法简单,实现方便;另外本发明方法是在带有图像输出或音频输出的设备上专门设置一图像数据或音频数据的叠加处理器,并将该叠加处理器设置在SOC上,用于图像或音频叠加的运算,该叠加处理器独立运作,不占用系统资源,不影响系统的处理速度,功耗小。