MPEG-2传输流解复用在内嵌ARM核的FPGA上的实现
发布时间:2008/5/28 0:00:00 访问次数:914
摘??? 要:本文介绍了mpeg-2传输流解复用的原理,使用内嵌arm的fpga芯片epxa10实现了mpeg-2传输流的解复用,并从硬件设计和软件结构两个方面详细地介绍了设计思想。
关键词: arm;fpga;mpeg-2;解复用
引言
随着芯片技术的发展,fpga的容量已经达到上百万门级,从而使fpga成为设计的选择之一。altera公司的fpga芯片epxa10应用sopc技术,集高密度逻辑(fpga)、存储器(sram)及嵌入式处理器(arm)于单片可编程逻辑器件上,实现了risc和fpga的完美结合。本文使用epxa10芯片,利用片上的arm微处理器对mpeg-2传输流进行解码,得到必要的解码参数,实现了将传输流分成视频流和音频流的解复用。
epax10器件
简要介绍
altera公司的epxa10器件单片集成了arm硬核,百万门级的fpga,以及sdram存储器的接口。它将fpga和arm处理器完美结合在一起,是一个典型的sopc结构。
其中arm处理器是32位的arm922t,工作频率可以达到200mhz,具有8k的数据缓存和8k的指令缓存。通过板上的jtag接口,可以实现断点调试功能。
片上的百万门级fpga可用于实现用户自定义的逻辑。它通过ahb总线和arm处理器相互连接。为了更加灵活的使用,fpga用户自定义逻辑可以定义为主模块(master),在总线通信时处于发起端;或是定义为从模块(slave),在总线通信时处于接收端。fpga器件内部有3m大小的存储器,同时集成了sdram控制器。在fpga开发板上可以外接128m的sdram,为了便于内部fpga和外部sdram大数据量的交换,用户还可以定义自己的dma模块,用于访问外部sdram。通过uart、网卡接口、jtag接口,fpga可以很方便地同外部计算机通信、下载程序,及调试程序等。
mpeg-2传输流解复用原理
mpeg-2传输流简要介绍
作为数字视频压缩技术的国际通用标准,mpeg-2标准于1994年被运动图像专家组制定出来,分成系统层、视频压缩层和音频压缩层。系统层主要用来描述音、视频的数据复用和音、视频的同步方式。在系统层定义了ts(传输流)和ps(节目流)两种形式的码流。ps通常用于相对无错的环境,例如dvd中,其长度为2048字节;ts通常用于相对有错的环境,例如数字电视的地面广播传输中,分组长度规定为188字节。ts流和ps流都是由编码后的基本数据流(es)根据一定的格式打包形成pes包,再加入一些系统信息而构成的,码流形成过程如图2所示。根据mpeg-2协议,在发送端,基本流的pes打包由音/视频编码器完成,复用器接收编码端的音、视频数据流以及辅助数据流,按照一定的复用方法将其交织成为单一的ts流。为了实现音、视频同步,在码流中还必须加入各种时间的标志和系统的控制信息。接收端和发送端正好相反。
传输流及其psi表
传输流ts的结构长度为188字节,分成包头和包负荷两部分。包头主要包括同步字节和pid以及其他的信息,同步字节用来指示一个ts包开始(0x47),pid表示ts包的类型。例如一个节目里的音频pes包,在转换成为ts包后会具备同样的pid,这样,接收端只需要接收具有此pid的ts包,就可以将该节目的音频解出来了。包负荷是包的实际内容,根据具体情况,可以放置pes包或psi包。传输流由一个或者多个节目构成,而每一个节目由视频流、音频流、私有信息流以及其他的数据包构成。
psi包在传输流解复用中占据重要地位,它通过四个表格来定义码流的结构,分别是节目关联表(pat)、节目映射表(pmt)、条件接收表(cat)和网络信息表(nit)。其中最为关键的部分是pat表和pmt表。
pat表是psi信息的索引表,pid值固定为0。在pat表中列出了该传输码流中所有节目的pmt表的pid值。如果接收方希望接收其中的一个节目,即可根据这个pid值解出对应于该节目的pmt表,从中可以查询到与该节目相关的所有音频流、视频流,以及私有信息的pid,在接收时就可以只接收具有这些pid值的包。
pat表的pid值为0,根据pat表可以得到各个节目对应的pid值,如节目0,pid=122,对应nit网络信息表;节目1,pid=60;节目20,pid=200等。如果希望看节目20,就根据200这个pid值得到节目20对应的pmt表,再进一步查到节目20的视频、音频及私有信息包对应的pid值,分别为500、510和540。解有这些pid值的传输包就可以解出音频和视频的pes包,最终解出音频流和视频流。cat表的pid值固定为1,用来传递加密信息,不在本文的讨论范围内。
在mpeg-2系统层解码时,需要由一个解复用器按照上述的原理对psi表进行处理,同时将各个音、视频基本流从传输流中分离出来,送入对应的解码器中,所以解复用器在mpeg-2解码中占据重要的地位。
解复用系统的具体实现
本文设计的是dvb的sdtv系统集成解码芯片,视频解码最高支持mpeg-2的mp@ml,分辨率为720×576,实时解码;音频解码满足ac-3标准。
从前面的部分可知,解复用器需要承担将数据分流的工作,所以数据处理量相当大,很多解复用器都采
摘??? 要:本文介绍了mpeg-2传输流解复用的原理,使用内嵌arm的fpga芯片ea10实现了mpeg-2传输流的解复用,并从硬件设计和软件结构两个方面详细地介绍了设计思想。
关键词: arm;fpga;mpeg-2;解复用
引言
随着芯片技术的发展,fpga的容量已经达到上百万门级,从而使fpga成为设计的选择之一。altera公司的fpga芯片ea10应用sopc技术,集高密度逻辑(fpga)、存储器(sram)及嵌入式处理器(arm)于单片可编程逻辑器件上,实现了risc和fpga的完美结合。本文使用ea10芯片,利用片上的arm微处理器对mpeg-2传输流进行解码,得到必要的解码参数,实现了将传输流分成视频流和音频流的解复用。
epax10器件
简要介绍
altera公司的ea10器件单片集成了arm硬核,百万门级的fpga,以及sdram存储器的接口。它将fpga和arm处理器完美结合在一起,是一个典型的sopc结构。
其中arm处理器是32位的arm922t,工作频率可以达到200mhz,具有8k的数据缓存和8k的指令缓存。通过板上的jtag接口,可以实现断点调试功能。
片上的百万门级fpga可用于实现用户自定义的逻辑。它通过ahb总线和arm处理器相互连接。为了更加灵活的使用,fpga用户自定义逻辑可以定义为主模块(master),在总线通信时处于发起端;或是定义为从模块(slave),在总线通信时处于接收端。fpga器件内部有3m大小的存储器,同时集成了sdram控制器。在fpga开发板上可以外接128m的sdram,为了便于内部fpga和外部sdram大数据量的交换,用户还可以定义自己的dma模块,用于访问外部sdram。通过uart、网卡接口、jtag接口,fpga可以很方便地同外部计算机通信、下载程序,及调试程序等。
mpeg-2传输流解复用原理
mpeg-2传输流简要介绍
作为数字视频压缩技术的国际通用标准,mpeg-2标准于1994年被运动图像专家组制定出来,分成系统层、视频压缩层和音频压缩层。系统层主要用来描述音、视频的数据复用和音、视频的同步方式。在系统层定义了ts(传输流)和ps(节目流)两种形式的码流。ps通常用于相对无错的环境,例如dvd中,其长度为2048字节;ts通常用于相对有错的环境,例如数字电视的地面广播传输中,分组长度规定为188字节。ts流和ps流都是由编码后的基本数据流(es)根据一定的格式打包形成pes包,再加入一些系统信息而构成的,码流形成过程如图2所示。根据mpeg-2协议,在发送端,基本流的pes打包由音/视频编码器完成,复用器接收编码端的音、视频数据流以及辅助数据流,按照一定的复用方法将其交织成为单一的ts流。为了实现音、视频同步,在码流中还必须加入各种时间的标志和系统的控制信息。接收端和发送端正好相反。
传输流及其psi表
传输流ts的结构长度为188字节,分成包头和包负荷两部分。包头主要包括同步字节和pid以及其他的信息,同步字节用来指示一个ts包开始(0x47),pid表示ts包的类型。例如一个节目里的音频pes包,在转换成为ts包后会具备同样的pid,这样,接收端只需要接收具有此pid的ts包,就可以将该节目的音频解出来了。包负荷是包的实际内容,根据具体情况,可以放置pes包或psi包。传输流由一个或者多个节目构成,而每一个节目由视频流、音频流、私有信息流以及其他的数据包构成。
psi包在传输流解复用中占据重要地位,它通过四个表格来定义码流的结构,分别是节目关联表(pat)、节目映射表(pmt)、条件接收表(cat)和网络信息表(nit)。其中最为关键的部分是pat表和pmt表。
pat表是psi信息的索引表,pid值固定为0。在pat表中列出了该传输码流中所有节目的pmt表的pid值。如果接收方希望接收其中的一个节目,即可根据这个pid值解出对应于该节目的pmt表,从中可以查询到与该节目相关的所有音频流、视频流,以及私有信息的pid,在接收时就可以只接收具有这些pid值的包。
pat表的pid值为0,根据pat表可以得到各个节目对应的pid值,如节目0,pid=122,对应nit网络信息表;节目1,pid=60;节目20,pid=200等。如果希望看节目20,就根据200这个pid值得到节目20对应的pmt表,再进一步查到节目20的视频、音频及私有信息包对应的pid值,分别为500、510和540。解有这些pid值的传输包就可以解出音频和视频的pes包,最终解出音频流和视频流。cat表的pid值固定为1,用来传递加密信息,不在本文的讨论范围内。
在mpeg-2系统层解码时,需要由一个解复用器按照上述的原理对psi表进行处理,同时将各个音、视频基本流从传输流中分离出来,送入对应的解码器中,所以解复用器在mpeg-2解码中占据重要的地位。
解复用系统的具体实现
本文设计的是dvb的sdtv系统集成解码芯片,视频解码最高支持mpeg-2的mp@ml,分辨率为720×576,实时解码;音频解码满足ac-3标准。
从前面的部分可知,解复用器需要承担将数据分流的工作,所以数据处理量相当大,很多解复用器都采