基于SOPC技术的具有码流监测功能的TS流复用器设计

时间:2022-07-23 02:12:05

基于SOPC技术的具有码流监测功能的TS流复用器设计

摘要:TS流复用器作为数字电视系统前端的关键设备,对其功能、成本、设计灵活性方面的要求越来越高。传统的复用器设计方案已经不能满足市场的需求,本文介绍一种基于可编程片上系统(SOPC)的复用器设计方案,该方案利用软硬件相结合的方法将系统集成在一款Altera公司的现场可编程门阵列(FPGA)上,不但完成了高效、稳定、可移植性强的复用器设计,而且实现了对TS流实时监测的功能。

关键词:SOPC;TS;复用器;码流监测

1 引言

TS流复用器,是将不同来源如MPEG-2编码器和TS码流输入的多路单节目TS(SPTS )或多节目TS(MPTS)数据复接成一路多节目TS(MPTS)(如图1所示)。从现在数字电视前端产品的发展来看,我们对复用器的要求已经不再满足于单独功能的产品了。而且复用器有时会被要求集成在多通道编码器或者字幕机之中。这就为我们提出了两个要求:(1)它的移植性要好。(2)由于复用器和它所应用的产品在数字电视广播中是中间级设备,我们希望它最好可以有码流监测的功能。

众所周知,专用的码流分析仪是数字电视技术开发阶段,分析和监测TS流的必要手段之一,为了迅速有效地找出故障源,解决问题,需要对码流进行监测和分析。在实际工作中,我们发现常常有这样的一种情况,在不方便使用码流分析仪或者不中断设备连接的情况下,希望看到一些TS流的关键信息。同样,复用器的使用者也希望不通过其它的专用设备,就可以监测到复用器所处理的节目流信息,比如PSI信息以及各路节目的业务名称。另外,在复用器的设计中对TS流的一部分处理方法和过程也是码流分析仪工作时需要的。这样我们就可以合理利用资源,将解复用和再复用部分对TS流的分析结果应用于码流监测模块当中。

2 系统实现方案

该复用器系统基于可编程片上系统(SOPC)思想实现(如图2所示)。整个系统由一块FPGA、异步串行接口(ASI)芯片(CYP15G0101)、16×2LCD液晶屏及存储芯片构成。本次设计采用了Altera的嵌入式NIOSⅡ处理器,整个系统在FPGA上嵌入了复用器的硬核逻辑模块以及用于系统控制的NIOSⅡ处理器。具体对TS流的分析处理大都由硬核模块处理,这些模块全部通过AVALON总线作为从设备与NIOSⅡ处理器相关联,NIOSII处理器负责TS流解复用、复用以及监测模块的控制(各寄存器的配置等)以及液晶显示器(LCD)的控制。

具体功能模块

解复用器根据CPU设置各个解复用通道所要输出的节目流PID,并输出相应的节目,而复用器一方面将单路及多路节目比特流按照一定的格式重新组织、复用成单路串行的传输流,另一方面它将编码端的时钟信息插入到TS流中,接收端借此恢复并调整本地时钟,使之与编码端保持严格的同步关系,保证音频/视频的同步恢复。码流监测模块的设计,我们并不要求它完全达到码流分析仪的功能,本次设计只需要实现我们平时比较关心的TS流信息处理:

(1)监测传输码流同步丢失(造成传输中断);

(2)分析PSI信息(解出节目图像的关键依据);

(3)打印出TS流的节目表(确定各路节目的业务名称)。

2.1 解复用器包括以下模块

(1)188-204识别模块:对输入的MPTS和SPTS进行包长确认与同步锁定。

(2)码率统计模块:对输入的节目流进行有效和非法PID识别与统计。

(3)8通道解复用子模块:软件编程对输入的节目流进行PID比较与选通输出。

(4)PID过滤模块:CPU向模块内部分布并行寄存器设定所要过滤掉数据流的PID值,在输出部分进行相应的PID过滤。

(5)PID替换模块:CPU向模块内部RAM设定所要替换的PID值,在输出部分进行相应的PID替换。

2.2 复用器包括以下模块

(1)8通道复用模块:对8个通道进行仲裁读取整包数据,复用输出后的数据保持恒定的码率。

(2)复用接口模块:8通道复用模块进行复用前,各通道数据需要进行缓存并通过申请应答机制写入16通道复用模块复用输出,复用接口模块作用为连接TS数据流与复用模块之间的接口。

(3)PSI信息插入模块:在复用TS流中定时插入PSI信息。

(4) DCM-CC插入模块:由CPU通过AVALON总线模块发送DSM_CC数据在复用子模式中缓存后通过8通道复用模块复用输出。

(5)PCR、PTS、DTS调整模块:两种调整模式,一种采用本地27MHz时钟重新生成PCR,用原PCR值与之对比并用两者相应差值修正PTS与DTS的值,另一种为在复用器入口处提取PCR值并开始计数,计算其在复用输出后的计数值并相应修改PCR。在复用器的数据传送流输入端检测PCR域并记录PCR域初值,然后在复用器的数据传送流输出端检测PCR域并将经过补偿计数后的PCR的新值装载进PCR域。

2.3 码流监测模块

(1)监测传输码流同步丢失

TS流中的一包,是以0x47这样的字节为同步头的长为188字节的一段数据。要找到包同步头Sync_byte(0x47),需要检测输入的TS流的每一个字节,寻找其中匹配的值(0x47)。由于0x47并不是一个被同步头所独占的值,在包的其他位置也可能出现这个值,为了准确无误地检测到同步头,在找到0x47之后,还要检测该字节后第188字节是否也为0x47。我们暂且认为如果能够连续5次在间隔187个字节后找到字节0x47,则找到同步;否则,则要继续逐字节寻找。

之后,为了始终能同步TS流,每隔187个字节检查一次同步头,如果3次未能找到,则认为此时发生了同步头丢失的错误,错误标志位置1。于此同时,重新逐字节寻找同步头。这一功能的实现是利用解复用模块中的188―204识别模块来完成的,CPU通过读取错误标志位的值来判定是否显示同步丢失错误。

(2)分析PSI信息

在一路复用TS流中可以有很多包含多个不同节目的原流。为了确定哪个原流属于哪个节目,解码器要通过TS中包含的附加信息来识别。这样的信息就是节目专用信息(PSI:Program Special Information)表。在这个设计中,该模块的作用就是通过分析PSI信息中的各包的PID值,来找到PAT和PMT列表,并把它们的相关信息打印出来。

由于在解复用模块中已经能够识别节目流的PID,在这里我们通过识别出来的PID来找到相应的PAT和PMT等信息。PAT的PID恒等于0X0000H,通过查找该值找到PAT包。之后在PAT列表中的节目信息中查找到各路节目的program_number 和PMT_PID,通过这两个值我们就可以确定各路节目的业务名称。

(3)打印出TS流的节目表

这一步利用软件来完成。自己定义LCD.h的头文件,里面定义了LCD液晶的初始化lcd_init()以及向LCD发送字符的写函数lcd_write_data()等。CPU可以将识别的PSI信息发送到LCD显示。

3 结束语

用该方案实现的复用器系统不单具有TS码流监测的功能,而且是一个典型的SOPC系统,它由FPGA内嵌的NIOSII处理器代替了传统的外部独立MCU。这样可以大大提高系统的可移植性及设计灵活性。由单个芯片完成整个系统的主要功能,又是可编程系统,具有灵活的设计方式,可裁减、扩充和升级,并具有软硬件在系统中可编程功能。

也就是说我们能够利用最小面积的电路,实现对源流或者整个设备最终输出TS流是否有错误的初步判断,同时也能排查设备中其它器件和电路对TS流传输的干扰。

――――――――――

参考文献

[1]altera corp.Nios Ⅱ Processor Reference Handbook.2006.

[2]alrera corp.Nios Ⅱ Software Developer's Handbook.2006.

[3]alrera corp.Nios Ⅱ hardware development tutorial.2006.

[4]DVB Document ETR290. DVB-MeasurementGuide Lines for DVB Systems[S].

[5]ETSITR 101 290. MeasurementGuide Lines for DVB Systems[S].

[6]郑志航.数字电视原理与应用.北京:中国广播电视出版社,2001.

作者简介:李颖宏,女,工学硕士,现任北方工业大学自动化专业教授,主要从事自控理论及系统的教学及自动控制装置的研发。

上一篇:高职院校校园网管理思考 下一篇:浅谈我国第三方物流发展存在的问题及对策