TS流解复用的SoC设计与实现
2013-02-13云桂桂杨秀芝
云桂桂,杨秀芝
(福州大学,福建 福州350002)
责任编辑:薛 京
在数字化、信息化的21世纪,电视的数字化改革也进入全盛时期,数字电视系统的各个环节及功能模块都是热门研究的对象。本文研究的解复用主要完成码流系统层的解析,从码流中抽取出指定节目的音视频流及ECM/EMM流[1-3]。它是后续解码的基础,并为解码提供必要的参数和信息。因此,解复用是数字电视接收系统中至关重要的环节。
1 解复用实现方案
在目前主流的实现方案中,解复用有以下3种实现方式:
1)纯硬件的设计,由FPGA等硬件电路来完成数字电视信号的分析与处理等。采用这种方案可以达到最快的处理速度,但灵活性较低,每次增加功能或更新标准都必须修改硬件电路。
2)纯软件的设计,由DSP、ARM等微处理器集成嵌入式操作系统。此方案具有最高的灵活性,但对于实时处理码流显得力不从心。
3)软硬结合的SoC设计,用硬件来实现实时的信号处理。SoC内部集成的微处理器来实现对硬件电路的控制及码流的分析。既满足实时的要求,又具有较高的灵活性。
基于以上3种方案的比较,本文采用软硬结合的SoC设计。由FPGA实现硬件部分的功能模块,根据Nios设定的参数,对码流进行过滤、匹配及提取,最后将滤出的数据送入对应的缓存中。NiosII软核则作为系统的微处理器,用来实现软件部分的设计。根据解复用要求设定过滤、匹配参数,并对硬件滤出的数据进行分析,进而完成整个解复用过程。
2 FPGA硬件电路设计
硬件电路首先对输入的ASI信号进行串并转换,并检测TS包的同步字节[4]。本设计中采用Altera公司提供的IP核来实现ASI的接收,在此不再详细描述。然后根据Nios设定的TS过滤参数和分段匹配参数,从码流中过滤出所需的PSI/SI分段数据、音视频的TS包及ECM/EMM的TS包,完成对传输流中节目的分离,过滤出用户指定的某套节目相关的所有信息。所设计的硬件电路结构如图1所示。
2.1 TS包过滤
采用参数匹配法实现TS包的过滤,当需要过滤不同的数据时,只需修改对应的过滤参数,而不用修改过滤模块的硬件电路。根据TS包的数据格式,TS包头的PID值是TS包的标识,通过比对PID值便可识别所需的TS包。本设计中预设的TS包过滤参数如下:
1)pid_table_en:32位分别对应32个PID表项,用来指示PID表项中哪些PID有效,为“1”说明对应位置的PID值有效。
2)pid_table:32个16位的PID码表,每个码表对应一个PID通道。码表中每个值的低3位指示具有该PID值的TS包类型,类型值如表1所示;高13位为设置的PID值。
根据表1描述的类型分别处理,其中PSI/SI信息经过分段匹配及数据提取后,将有效分段数据送入PSI/SI缓存区,其他TS包直接送入各自的缓存区。
3)pid_filter_en:32个32位寄存器,指示每个PID通道连接的分段过滤器。
TS过滤的实现过程如下:首先将当前TS包的PID字段与pid_table中的各个PID值进行匹配,若匹配成功,且pid_table_en中对应位置的值为“1”,说明当前TS包是所需要的包,否则丢弃。然后根据对应的pid_table的低3位判断拥有该PID值的TS包类型,对各类型的数据进行分析处理。同时为下级模块提供当前TS包的负载情况、加扰情况以及该PID值在码表中的位置等信息。
2.2 Section分段匹配
根据预先配置的分段匹配参数对PSI/SI分段首部8个字节进行匹配,分段首部包含了充分的标识信息,因此可以取得很好的匹配效果[3]。分段匹配模块的主要功能是由过滤深度为8 byte的过滤器完成的。每个过滤器有3组参数:
1)sec_pattern:8个匹配字节数据,作为匹配标准的数据。
2)sec_mask:8个8位匹配掩码,1:表示该位需要匹配;0:表示不需匹配。根据TS码流的语法规则,有些字段对识别分段没有意义,有些字段包含了保留位。无意义的字段和保留位不需要匹配,可将对应的掩码位置0。
3)sec_mode:8个8位匹配方式,1:表示不匹配模式;0:表示匹配模式。匹配模式是当待匹配字节与标准字节数据相同时,匹配成功。
过滤器以字节为单位,依次将分段首部的8个字节数据与匹配字节的标准数据进行比较,结合匹配掩码和匹配方式,可以对PSI/SI表中任何一个表的任意一个分段进行匹配过滤。采用状态机来实现该功能,过滤器首先处于初始等待状态,当分段首部字节有效时,进入匹配状态。每个时钟周期完成一个字节的匹配,若当前字节匹配成功,继续处理下一个字节,否则转到失败状态直到当前的分段首部数据结束,返回等待状态。只有8个字节全部匹配成功才输出成功信号。状态转移如图2所示。
图2 过滤器的状态转移图
分段匹配模块则由32个上述的过滤器组成。每个通道可以连接多个过滤器,即每个通道的分段数据允许同时与多个目标分段进行匹配,只要通过其中一个过滤器即可。分段匹配模块根据需匹配的分段数启动其中一个或多个过滤器,每个过滤器匹配其中一个分段。最终的匹配结果是被启动的过滤器输出结果的“或”。其结构如图3所示。
图3 分段匹配模块结构
2.3 PSI/SI数据提取
PSI/SI数据提取首先要判断当前TS包是否包含所需的PSI/SI分段数据,包含两种情况:一是匹配成功,还需判断该分段是否已经被收集过,如果没被收集过则从FIFO中读取TS包,否则丢弃;二是没有匹配成功,那么还需进一步判断,如果该包是PSI/SI分段有效数据的中间包并且携带该分段首部的TS包已被收集,则从FIFO中读取该TS包。然后根据PSI/SI的语法结构,从读取的TS包中提取出有效的PSI/SI负载数据。
3 嵌入式软件设计
利用SOPC builder工具可以参数化地定制NiosII处理器及其外围接口[4-5],并为各个外设分配地址和中断号建立自己的Nios系统。根据本设计的需求,定制了一个包括CPU、SDRAM、Flash、JTAG和TIMER的最小Nios系统。另外通过PIO内核实现与FPGA内部逻辑的联系,实现参数的传递。
通过在Nios软核处理器上集成uCOS嵌入式操作系统实现软件部分的功能,一是对实现解复用所需参数的配置;二是对码流PSI/SI信息的过滤分析。
3.1 参数配置
在前面小节中各个模块相关的参数已经做了介绍。下面以某个PMT表的过滤来说明参数的具体设置,假设该PMT表的值存在PID码表的第7个位置上。
pid_table_en:0x00000080//第7个位置上的PID值有效。
pid_table[7]:PMT_PID<<3|0x00//高13位是该PMT的PID值,低3位是000。
pid_filter_en[7]:0x00000003//启动第0和第1个分段匹配器。
section_filter_mode[0][8]/section_filter_mode[1][8]//8个字节均为0x00,采用匹配模式。
section_filter_mask[0][8]/section_filter_mask[1][8]//第0、3、4、6个字节为0xff,其他为0x00。即只匹配table_id(0)、program_number(3,4)、section_number(6)字段。
section_filter_pattern[0][8]:0x02,0x00,0x00//节目号高8字节,节目号低8字节,0x00,0x00(分段0),0x00。
section_filter_pattern[1][8]:0x02,0x00,0x00//节目号高8字节,节目号低8字节,0x00,0x01(分段1),0x00。
3.2 PSI/SI信息的过滤分析
根据数据过滤流程和特点,将PSI/SI信息的过滤分析分成3个子模块:PSI/SI管理(PSI/SI_Manager)、PSI/SI分析(PSI/SI_Parser)、PSI/SI滤波(PSI/SI_filter)。
1)PSI/SI_Manager负责统筹调用过滤模块或分析模块来完成相应的功能。
2)PSI/SI_Filter负责对系统的PSI/SI滤波通道资源进行统一管理,记录每个滤波通道的状态和滤波参数,完成对指定PSI/SI的过滤功能。
3)PSI/SI_Parser根据PSI/SI语法规则对过滤出来的各种PSI/SI表进行解析,并将解析的信息填充到对应的数据库中,供其他模块使用。
4 系统实际测试
本设计中,作者添加了红外遥控接口以便测试。用户可以通过遥控来进行选择操作。解复用工作过程如下:首先初始化完成后,用户确认搜索,由Nios设定PAT过滤参数,FPGA硬件模块过滤出码流中负载完整PAT表的分段,并将PAT分段数据分配到PSI/SI缓存区中,并在数据存储完成后通知Nios。Nios对PAT表进行分析,提取码流中的节目信息,并将PMT、CAT及SI表的分段信息置入过滤参数中,由硬件模块过滤出码流中所有的PMT、CAT和SI表的分段,分别分配到各自缓存区中。最后根据用户的节目选择情况,Nios分析该节目相关的PSI/SI,确定待解复用节目的全部PID值。将该套节目的音视频和ECM/EMM的包信息置入过滤参数中,过滤出该节目的视音频包和ECM/EMM包,如图4所示。
图4 解复用过程(截图)
最后将解复用输出的音视频流、PCR信息及ECM/EMM流通过ASI接口发送,并接入到码流分析仪进行分析和录制。图5显示的是输出的音视频流的带宽信息及播放效果。
输出码流中包含2路PID信息,分别是所选节目的音视频PID。利用码流分析仪将解复用出的音视频流进行录制,通过播放器可以播放出所选的节目画面,说明系统正确地解复用出所选节目的音视频流。
5 小结
图5 解复用输出的音视频流带宽信息及播放效果
解复用是数字电视接收系统中很重要的一个环节,是后续解码的基础。本文采用SoC架构来实现TS流的解复用,利用FPGA实现码流的过滤与匹配,可以很好地满足实时性的要求。同时通过Nios嵌入uCOS操作系统实现参数的设定以及PSI/SI的分析,当需不同的数据或更新标准时,只需修改对应的参数及分析程序,而不必修改硬件电路,使系统达到较高的灵活性。
[1]高夫.DVB系统中解复用器的设计与实现[D].合肥:中国科学技术大学,2004.
[2]王兆庆.HDTV STB解复用技术的应用研究[J].现代电子技术,2010(7):186-188.
[3]陈国华.MPEG-2传输流解复用器的硬件实现[D].杭州:浙江大学,2007.
[4]云桂桂,杨秀芝,吴林煌.数字电视传输流中PSI信息的分析与错误检测[J].电视技术,2011,35(6):82-84.
[5]Altera corp.Nios II Software Developer's Handbook[EB/OL].[2013-02-10].http://wenku.baidu.com/view/53b55fc1d5bbfd0a79567373.html.