复用器中的SI信息检测电路是数字电视技术中重要的组成部分,负责处理通过复用器复用后的TS流。本文将详细介绍SI信息,以及在FPGA上设计SI信息检测方案的过程,并通过对实际码流的测试,验证了本方案能够实现无丢失且无重复的快速接收。
要理解什么是TS流以及SI信息。TS流是传输流(Transport Stream)的简称,通常由多个节目和业务组成。在MPEG-2标准中,为了正确地对TS流进行解复用,规定在码流的PSI信息中包含有关节目组成和相互关系的信息。但是PSI信息仅限于描述当前单一码流,无法提供多个相关业务和节目的识别信息。因此,DVB标准中引入了SI信息,对PSI信息进行了扩展。SI信息提供了对整个系统所有码流的描述,包括传输内容、广播数据流的编排和时间表等。
SI信息主要包含网络信息表(NIT)、业务群信息表(BAT)、业务描述表(SDT)、事件信息表(EIT)、时间及日期表(TDT)等。复用器中最常用的SI表有NIT表、SDT表、BAT表。NIT表可以提供节目来源的网络信息,如多路传输流和物理网络信息;BAT表提供类似节目的集合信息;SDT表则提供电视台名称和电视节目名称,有助于接收端实现友好的界面显示和操作。
SI信息的结构较为复杂,它通常需要进行分段处理,因为携带的数据量较大。属于同一表的分段具有相同的PID(包标识符)、表标识符及不同的段号。一个完整的分段包含包头、自适应字段(可选)、point field字段(可选)、表头信息和有效数据四部分。为了能够在传输流中传输,SI表需要分包插入多个TS包中,属于同一分段的TS包具有相同的PID和连续的计数器指针。
SI信息的检测过程可以分为几个功能模块。首先是输入及同步模块,该模块利用IP核将输入的串行码流转换为并行码流,供后续模块使用。同步模块负责对输入的TS流进行同步及失步测试,一旦同步建立,就能将完整的TS包传输到检测模块。这个同步模块能适应不同大小(188字节及204字节)的码流输入。
SI信息的检测模块是根据SI信息的格式设计的,通常使用多个状态机实现分层检测。在检测模块中,首先要获取传输流首部有效负载起始位为1的SI包,这可以通过判断PID和payload_unit_start_indicator来实现。若该SI包是第一次接收,则根据表头信息来分析该包是否要接收;如果不是第一次接收,则直接丢弃。分析完表的第一个包后,对于接收的每个相同PID且连续计数器指针连续的包,通过减少TS包数量计数器TS-num的值,以判断该表是否接收完毕;当TS-num为1时,表明该包是该表的最后一个包,应在有效数据结束后进行CRC校验。
整个SI信息检测模块的关键在于实现快速准确的检测,确保在接收端能够正确地对TS流进行解复用,让用户能够享受丰富多样的电视节目和服务。FPGA在本方案中起到了核心作用,它能够根据设计的逻辑电路进行并行处理,对高速传输的TS流进行有效的SI信息检测。FPGA方案设计具有很高的灵活性和可扩展性,能够满足不同应用场景的需求,是实现SI信息检测电路的理想选择。