一种多格式视频解码器的测试系统和测试方法

文档序号:7860015阅读:145来源:国知局
专利名称:一种多格式视频解码器的测试系统和测试方法
技术领域
本发明涉及一种多格式视频解码器的测试系统和测试方法。
背景技术
在SOC(系统级芯片,System on Chip)设计领域,众多IP(知识产权,IntellectualProperty)在使用前,都必须做充分的验证,包括模块验证、集成验证、系统验证和FPGA (现场可编程门阵列,Field — Programmable Gate Array)验证。前三者一般是软件仿真,可 以详细地记录下仿真不同时刻各种信号的变化情况,缺点是仿真速度慢,仿真的测试案例有限。而FPGA验证能够以接近实际的速度运行各种测试案例,大大加快了仿真速度,有利于提高测试案例的覆盖率,加快测试的进度。多格式视频解码器用于采用硬件的方式解码各种格式的视频码流,不同于以往的用软件的方式对视频码流进行解码,用硬件的方式可以极大解降低CPU的负荷,提升整个系统的性能,减少系统的总体功耗等。现有的情况是,由于多格式视频解码器所占用的逻辑资源很大,普通的FPGA装不下,所以,通常较多地采用模块验证、集成验证和系统验证,而作FPGA验证较少;另外,即使作FPGA验证,对于测试案例所需的大量数据输入和输出操作,包括用什么设备存储、如何进行传输和传输速度如何等,也是一个很大的问题。

发明内容
本发明主要解决的技术问题是提供一种多格式视频解码器的测试系统和测试方法。为解决上述技术问题,本发明采用的一个技术方案是提供一种多格式视频解码器测试方法,包括如下步骤系统上电,双FPGA从配置FLASH中读取编程文件,进行SOC系统初始化;PC机通过ARM JTAG调试器连接线连接到SOC系统的JTAG接口 ;ARMJTAG调试器初始化SOC系统的内存控制器,内存控制器将测试程序从PC机加载到SOC系统的内存芯片;以及SOC系统的CPU执行所述测试程序以对视频解码器进行测试。其中,所述步骤“S0C系统的CPU执行所述测试程序以对视频解码器进行测试”包括初始化文件系统;判断内存芯片中待解码视频码流是否足够解码一帧;当确定所述内存芯片中待解码视频码流足够解码一帧时,配置视频解码器对待解码视频流进行解码;将解码后的帧数据写入内存芯片中;从存储卡中读取正确的帧数据到内存芯片;以及将解码后的帧数据与正确的帧数据进行比对,并根据比对的结果输出log信息。其中,所述的多格式视频解码器测试方法,还包括判断是否显示视频图像;当确定显示视频图像时,将解码后的帧数据送到显示屏控制器,显示屏控制器驱动显示屏进行显不O其中,当判断内存芯片中待解码视频码流不够解码一帧时,还包括判断存储卡中的待解码视频码流是否消耗完;当确定存储卡中的待解码视频码流尚未完全消耗完时,读取存储卡中的待解码视频码流到内存芯片中,然后返回所述步骤“判断内存芯片中待解码视频码流是否足够解码一帧”;当确定存储卡中的待解码视频码流已经完全消耗完时,全部解码结束并输出log信息。其中,当待解码视频流为大批量的视频文件时,所述步骤“执行所述测试程序以对视频解码器进行测试”包括打开存储卡中的测试列表文件,其中,所述测试列表文件包含各个待解码视频码流的文件名、正确帧数据的文件名和视频格式;判断测试列表文件是否读取到文件尾;当确定测试列表文件尚未读取到文件尾时,读取测试列表文件,获取待解码视频码流文件名、正确帧数据文件名和视频格式;根据获取的待解码视频码流文件名、正确帧数据文件名读取存储卡中的待解码视频码流以及正确帧数据到内存芯片;以及根据视频格式对内存芯片中的待解码视频码流进行视频解码,将解码后的数据与正确帧数据进行比对并根据比对的结果输出log信息。本发明采用的另一个技术方案是
提供一种多格式视频解码器测试系统,包括PC机、存储卡以及显示屏,所述多格式视频解码器测试系统还包括SOC系统和内存芯片,其中,所述SOC系统包括通过总线矩阵相互连接的第一 FPGA以及第二 FPGA,所述第二 FPGA与所述PC机、内存芯片、存储卡以及显示屏分别电连接;所述内存芯片用于存储测试程序;所述PC机用于编译和调试所述测试程序,所述PC机包括ARMJTAG调试器以及配置FLASH,其中,所述配置FLASH用于存储编程文件,所述PC机通过所述ARM JTAG调试器连接线连接到SOC系统的JTAG接口 ;所述存储卡用于存储输入输出数据,所述输入输出数据包括待解码视频码流、正确帧数据以及测试列表文件;所述第一 FPGA和第二 FPGA用于当系统上电时从配置FLASH中读取编程文件,完成SOC系统初始化;其中,所述第一 FPGA包括视频解码器;所述第二 FPGA包括存储卡控制器,用于对所述存储卡进行读写控制;内存控制器,用于将所述测试程序从所述PC机加载到所述内存芯片,实现对内存芯片的读写控制;CPU,用于执行所述测试程序以对所述视频解码器进行测试;以及显示屏控制器,用于将经过视频解码器解码后得到的显示数据送到所述显示屏上进行显示。其中,所述CPU还用于初始化存储卡文件系统,判断内存芯片中待解码视频码流是否足够解码一帧。当确定内存芯片中待解码视频码流足够解码一帧时,所述CPU还用于控制视频解码器对所述待解码视频流进行解码,并将解码后得到的帧数据存储到内存芯片中;所述CPU还用于对比解码后的帧数据与正确的帧数据,以根据比对结果输出log信息,其中,所述log信息包括解码是否正确以及当解码发生错误时,所述错误所在的位置信息。其中,所述CPU还用于当确定内存芯片中待解码视频码流不够解码一帧时,判断存储卡中的待解码视频码流是否已经消耗完,若是,则确定全部解码结束,否则,再次读取存储卡中的待解码视频码流到内存芯片中,并判断内存芯片中待解码视频码流是否足够解码一帧。其中,所述CPU还用于当输出log信息后,判断是否显示视频图像,并当确定显示视频图像时将解码后的帧数据传送到显示屏控制器,并由显示屏控制器驱动显示屏显示对应图像。其中,存储卡中存储的测试列表文件包含各个待解码视频码流的文件名、正确帧数据的文件名和视频格式,所述CPU还用于读取存储卡中的测试列表文件,并判断所述测试列表文件是否已经读取到文件尾;所述CPU还用于当确定所述测试列表文件尚未读取到文件尾时,根据获取的待解码视频码流的文件名、正确帧数据文件名读取存储卡中的待解码视频码流以及正确帧数据,并存储到内存芯片中,以及根据视频格式对内存芯片中存储的待解码视频码流进行视频解码,从而实现大批量的视频文件测试。本发明的有益效果是本发明在双FPGA上搭建一套SOC系统,实现对视频解码器的快速高效测试验证。通过采用SD / MMC卡等存储卡进行输入输出数据的方式,实现了大数据量的输入输出;通过对SD / MMC卡等存储卡上文件的遍历,实现了对视频解码器进行大批量文件数据的自动验证;通过对解码后的视频图像进行显示,实现了实时查看解码效果的功能。


图I是本发明一实施方式中多格式视频解码器的测试系统的结构方框图;图2是本发明一实施方式中SOC系统框图; 图3是本发明一实施方式中多格式视频解码器的测试方法的流程图;图4是本发明一实施方式中对视频解码器进行测试的具体方法流程图;图5是本发明一实施方式中对视频解码器解码多格式大批量视频文件时测试的方法流程图。主要元件符号说明100、多格式视频解码器的测试系统;10、PC机;20、SOC系统;30、内存芯片;40、存储卡;50、显示屏;60、总线矩阵;21、第一 FPGA ;22、第二FPGA ;11、ARM JTAG调试器;12、配置FLASH ;211、视频解码器;221、CPU ;222、内存控制器;223、显示屏控制器;224、存储卡控制器。
具体实施例方式为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。请参阅图1,为本发明一实施方式中多格式视频解码器的测试系统的结构方框图。所述多格式视频解码器的测试系统100包括PC机10、S0C系统20、内存芯片30、存储卡40以及显示屏50,其中,所述SOC系统20包括第一 FPGA21以及第二 FPGA 22,为方便描述,将所述第一 FPGA21及第二 FPGA22定义为双FPGA。其中,所述第二 FPGA 22分别与所述PC机10、第一 FPGA 21、内存芯片30、存储卡40以及显示屏50电连接。所述PC机10用于编译和调试测试程序,所述PC机10包括ARM JTAG调试器11以及配置FLASH 12。其中,所述配置FLASH 12用于存储编程文件,所述PC机10通过所述ARM JTAG调试器11的连接线连接到SOC系统20的JTAG接口。所述内存芯片30用于存储测试程序,所述存储卡40用于存储输入输出数据,所述输入输出数据包括待解码视频码流、正确帧数据以及测试列表文件,所述显示屏50用于显示解码出来的视频流。在本实施方式中,所述存储卡40为SD存储卡或MMC存储卡,所述显示屏50为LCD屏,所述内存芯片30为同步动态随机存储器,例如SDR或DDR。
请参阅图2,为本发明一实施方式中的SOC系统框图。所述第一FPGA 21包括视频解码器211,所述第二 FPGA 22包括CPU 221、内存控制器222、显示屏控制器223以及存储卡控制器224,所述内存控制器222的外部接口与所述内存芯片30相连接。在本实施方式中,所述存储卡控制器224为SDMMC控制器。所述第一 FPGA 21与所述第二 FPGA 22通过总线矩阵60相连,所述总线矩阵60用于实现AXI / AHB / APB各种不同接口之间的互转互联,所述CPU221、内存控制器222、显示屏控制器223及存储卡控制器等SOC系统20模块分别通过AXI / AHB / APB接口挂接到总线矩阵60上,待测试的视频解码器211通过标准的AXI / AHB / APB接口挂接到总线矩阵60上。SOC系统20逻辑经过FPGA工具编译,生成双FPGA对应的编程文件,所述编程文件固化到配置FLASH 12中。当系统上电时,双FPGA自动从配置FLASH 12中读取所述编程文件,完成SOC系统20的初始化。所述显示屏控制器223的外部接口与显示屏50相连接,所述显示屏控制器223用于将显示数据送到显示屏50上进行显示。所述存储卡控制器224的外部接口与存储卡相连接,所述存储卡控制器224用于对存储卡进行读写控制。 所述ARM JTAG调试器11用于初始化所述内存控制器222,所述内存控制器222用于将测试程序从PC机10加载到内存芯片30,从而实现对内存芯片30的读写控制。所述CPU 221用于执行测试程序以对所述视频解码器211进行测试,具体地,所述CPU 221初始化存储卡文件系统,判断内存芯片30中待解码视频码流是否足够解码一帧。当确定内存芯片30中待解码视频码流足够解码一帧时,所述CPU 221进一步地控制视频解码器211对所述待解码视频流进行解码,并将解码后得到的帧数据存储到内存芯片30中。所述CPU 221还用于对比解码后的帧数据与正确的帧数据,以根据比对结果输出log信息。其中,所述log信息包括解码是否正确以及当解码发生错误时,所述错误所在的位置信息。当确定内存芯片30中待解码视频码流不够解码一帧时,所述CPU 221进一步地判断存储卡40中的待解码视频码流是否已经消耗完,若是,则确定全部解码结束,否则,再次读取存储卡40中的待解码视频码流到内存芯片30中,并判断内存芯片30中待解码视频码流是否足够解码一帧。在本实施方式中,当输出log信息后,所述CPU 221还用于判断是否显示视频图像,并当确定显示视频图像时将解码后的帧数据传送到显示屏控制器223,并由显示屏控制器223驱动显示屏50显示对应图像。存储卡40中存储的测试列表文件包含各个待解码视频码流的文件名、正确帧数据的文件名和视频格式。所述CPU 211还用于读取存储卡40中的测试列表文件,并判断所述测试列表文件是否已经读取到文件尾。当确定所述测试列表文件尚未读取到文件尾时,所述CPU 211根据获取的待解码视频码流的文件名、正确帧数据文件名读取存储卡40中的待解码视频码流以及正确帧数据,并存储到内存芯片30中,以及根据视频格式对内存芯片30中存储的待解码视频码流进行视频解码,从而实现大批量的视频文件测试。请参阅图3,为本发明一实施方式中多格式视频解码器的测试方法的流程图。所述多格式视频解码器的测试方法包括以下步骤步骤SI、系统上电,双FPGA 20从配置FLASH 12中读取编程文件,完成SOC系统20初始化;
步骤S2、PC机10通过ARM JTAG调试器11连接线连接到SOC系统20的JTAG接Π ;步骤S3、ARM JTAG调试器11初始化内存控制器222,内存控制器222将测试程序从PC机10加载到内存芯片30 ;步骤S4、CPU 211执行所述测试程序以对视频解码器进行测试。请参阅图4,是对视频解码器进行测试的方法流程图。所述CPU执行所述测试程序以对视频解码器进行测试步骤具体包括步骤S31、初始化存储卡文件系统;在本实施方式中,所述存储卡文件系统为FAT32文件系统。步骤S32、判断内存芯片30中待解码视频码流是否足够解码一帧,若是,则执行步 骤S33,否则,执行步骤S40。步骤S33、配置视频解码器211对待解码视频流进行解码;步骤S34、将解码后的帧数据写入内存芯片30中;步骤S35、从存储卡40中读取正确的帧数据到内存芯片30 ;步骤S36、将解码后的帧数据与正确的帧数据进行比对;步骤S37、根据比对的结果输出log信息;其中,所述log信息包括解码是否正确以及当解码发生错误时,所述错误所在的位置信息。步骤S38、判断是否显示视频图像,若是,执行步骤S39,否则,返回步骤S32 ;步骤S39、将解码后的帧数据送到显示屏控制器223,显示屏控制器223驱动显示屏50进行显示,然后返回步骤S32 ;步骤S40、判断存储卡中的待解码视频码流是否消耗完,若是,则执行步骤S42,否贝U,执行步骤S41 ;步骤S41、读取存储卡中的待解码视频码流到内存芯片中,然后返回步骤S32 ;步骤S42、全部解码结束,输出log信息。对多格式视频解码器进行测试,需要多种格式的视频文件和解码出来的正确的标准视频文件,这样大的数据流,可以通过SD或MMC等存储卡40来实现。通过PC机10将运行测试程序所需的输入输出数据写入到SD或MMC存储卡中,所述输入输出数据包括多种格式的待解码视频流和正确帧数据,然后将SD或MMC存储卡插入到SOC系统20的SD / MMC存储卡的外部接口,然后运行测试程序。请参阅图5,本发明一实施方式中对视频解码器解码多格式大批量视频文件时测试的方法流程图。步骤S51、打开存储卡40中的测试列表文件,其中,所述测试列表文件包含各个待解码视频码流的文件名、正确帧数据的文件名和视频格式;步骤S52、判断测试列表文件是否读取到文件尾,若是,执行步骤S58,否则,执行步骤S53 ;步骤S53、读取测试列表文件,获取待解码视频码流文件名、正确帧数据文件名和视频格式;步骤S54、根据获取的待解码视频码流文件名、正确帧数据文件名读取存储卡中的待解码视频码流以及正确帧数据到内存芯片30 ;
步骤S55、根据视频格式对内存芯片中的待解码视频码流进行视频解码;步骤S56、将解码后的数据与正确帧数据进行比对;步骤S57、根据比对的结果输出log信息;步骤S58、测试结束。通过对log信息进行分析,很容易查看到测试列表文件中各测试文件的解码情况,进而快速定位问题所在,例如,解码器在解码哪个测试文件时发生错误,以及发生错误的位置等。通过这些信息,就可以辅助查找到解码器RTL代码中的bug。本发明在双FPGA上搭建一套SOC系统,实现对视频解码器的快速高效测试验证。通过采用SD / MMC卡等存储卡进行输入输出数据的方式,实现了大数据量的输入输出;通过对SD / MMC卡等存储卡上文件的遍历,实现了对视频解码器进行大批量文件数据的自动验证;通过对解码后的视频图像进行显示,实现了实时查看解码效果的功能。·
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种多格式视频解码器测试方法,其特征在于,包括如下步骤 系统上电,双FPGA从配置FLASH中读取编程文件,进行SOC系统初始化; PC机通过ARM JTAG调试器连接线连接到SOC系统的JTAG接口 ; ARM JTAG调试器初始化SOC系统的内存控制器,内存控制器将测试程序从PC机加载到SOC系统的内存芯片;以及 SOC系统的CPU执行所述测试程序以对视频解码器进行测试。
2.根据权利要求I所述的多格式视频解码器测试方法,其特征在于,所述步骤“S0C系统的CPU执行所述测试程序以对视频解码器进行测试”包括 初始化文件系统; 判断内存芯片中待解码视频码流是否足够解码一帧; 当确定所述内存芯片中待解码视频码流足够解码一帧时,配置视频解码器对待解码视频流进行解码; 将解码后的帧数据写入内存芯片中; 从存储卡中读取正确的帧数据到内存芯片;以及 将解码后的帧数据与正确的帧数据进行比对,并根据比对的结果输出log信息。
3.根据权利要求2所述的多格式视频解码器测试方法,其特征在于,还包括 判断是否显示视频图像; 当确定显示视频图像时,将解码后的帧数据送到显示屏控制器,显示屏控制器驱动显示屏进行显示。
4.根据权利要求2所述的多格式视频解码器测试方法,其特征在于,当判断内存芯片中待解码视频码流不够解码一帧时,还包括 判断存储卡中的待解码视频码流是否消耗完; 当确定存储卡中的待解码视频码流尚未完全消耗完时,读取存储卡中的待解码视频码流到内存芯片中,然后返回所述步骤“判断内存芯片中待解码视频码流是否足够解码一帧”;当确定存储卡中的待解码视频码流已经完全消耗完时,全部解码结束并输出log信息。
5.根据权利要求I所述的多格式视频解码器测试方法,其特征在于,当待解码视频流为大批量的视频文件时,所述步骤“执行所述测试程序以对视频解码器进行测试”包括 打开存储卡中的测试列表文件,其中,所述测试列表文件包含各个待解码视频码流的文件名、正确帧数据的文件名和视频格式; 判断测试列表文件是否读取到文件尾; 当确定测试列表文件尚未读取到文件尾时,读取测试列表文件,获取待解码视频码流文件名、正确帧数据文件名和视频格式; 根据获取的待解码视频码流文件名、正确帧数据文件名读取存储卡中的待解码视频码流以及正确帧数据到内存芯片;以及 根据视频格式对内存芯片中的待解码视频码流进行视频解码,将解码后的数据与正确帧数据进行比对并根据比对的结果输出log信息。
6.一种多格式视频解码器测试系统,包括PC机、存储卡以及显示屏,其特征在于,所述多格式视频解码器测试系统还包括SOC系统和内存芯片,其中,所述SOC系统包括通过总线矩阵相互连接的第一 FPGA以及第二 FPGA,所述第二 FPGA与所述PC机、内存芯片、存储卡以及显示屏分别电连接; 所述内存芯片用于存储测试程序; 所述PC机用于编译和调试所述测试程序,所述PC机包括ARM JTAG调试器以及配置FLASH,其中,所述配置FLASH用于存储编程文件,所述PC机通过所述ARM JTAG调试器连接线连接到SOC系统的JTAG接口 ; 所述存储卡用于存储输入输出数据,所述输入输出数据包括待解码视频码流、正确帧数据以及测试列表文件; 所述第一 FPGA和第二 FPGA用于当系统上电时从配置FLASH中读取编程文件,完成SOC系统初始化;其中,所述第一 FPGA包括视频解码器;所述第二 FPGA包括 存储卡控制器,用于对所述存储卡进行读写控制; 内存控制器,用于将所述测试程序从所述PC机加载到所述内存芯片,实现对内存芯片的读写控制; CPU,用于执行所述测试程序以对所述视频解码器进行测试;以及 显示屏控制器,用于将经过视频解码器解码后得到的显示数据送到所述显示屏上进行显不。
7.根据权利要求6所述的多格式视频解码器测试系统,其特征在于,所述CPU还用于初始化存储卡文件系统,判断内存芯片中待解码视频码流是否足够解码一帧,当确定内存芯片中待解码视频码流足够解码一帧时,所述CPU还用于控制视频解码器对所述待解码视频流进行解码,并将解码后得到的帧数据存储到内存芯片中;所述CPU还用于对比解码后的帧数据与正确的帧数据,以根据比对结果输出log信息,其中,所述log信息包括解码是否正确以及当解码发生错误时,所述错误所在的位置信息。
8.根据权利要求7所述的多格式视频解码器测试系统,其特征在于,所述CPU还用于当确定内存芯片中待解码视频码流不够解码一帧时,判断存储卡中的待解码视频码流是否已经消耗完,若是,则确定全部解码结束,否则,再次读取存储卡中的待解码视频码流到内存芯片中,并判断内存芯片中待解码视频码流是否足够解码一帧。
9.根据权利要求7所述的多格式视频解码器测试系统,其特征在于,所述CPU还用于当输出log信息后,判断是否显示视频图像,并当确定显示视频图像时将解码后的帧数据传送到显示屏控制器,并由显示屏控制器驱动显示屏显示对应图像。
10.根据权利要求7所述的多格式视频解码器测试系统,其特征在于,存储卡中存储的测试列表文件包含各个待解码视频码流的文件名、正确帧数据的文件名和视频格式,所述CPU还用于读取存储卡中的测试列表文件,并判断所述测试列表文件是否已经读取到文件尾;所述CPU还用于当确定所述测试列表文件尚未读取到文件尾时,根据获取的待解码视频码流的文件名、正确帧数据文件名读取存储卡中的待解码视频码流以及正确帧数据,并存储到内存芯片中,以及根据视频格式对内存芯片中存储的待解码视频码流进行视频解码,从而实现大批量的视频文件测试。
全文摘要
本发明公开一种多格式视频解码器测试方法,包括如下步骤FPGA从配置FLASH中读取编程数据,完成SOC系统初始化;将PC机通过ARM JTAG调试器连接线连接到SOC系统的JTAG接口;初始化内存控制器,将测试程序从PC机加载到内存芯片;执行所述测试程序以对视频解码器进行测试。本发明还公开了一种多格式视频解码器测试系统。
文档编号H04N17/00GK102917242SQ201210331368
公开日2013年2月6日 申请日期2012年9月10日 优先权日2012年9月10日
发明者陈祖尚 申请人:福州瑞芯微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1