4.5错误产生、侦测与分类机制
当接收端硬件接收到由传送端所传送的传输串流封包时,硬件会先对封包进行一次所罗门译码,若是超出其纠错解碼能力时,将会把封包标头内的错误指标字段(ErrorIndicator)设定为1,藉此来标示发生错误的封包,而本研究于错误侦测判断时,即是根据此标头字段值,并透过设定此字段值来产生显著的错误数据,以突显MPE-FEC机制的运作。当发现错误封包之后,将立即执行错误分类机制来找出错误发生在整个section的哪个区段并在一个与MPE-FEC框架相同大小的ErrorBit-mapBuffer(EBB)中的相对应位置设成1来表示其在框架中的错误位置,以便提供往后所罗门译码所需的错误位置数据,而整个错误分类机制的虚拟程序代码如表3所示。
表3 错误分类机制虚拟程序代码
If ErrorIndicator is equal to 1
If HeaderDecoded is true
If error at middle of section
Set 1 in EBB according to the TS payload
region of this section in MPE-FEC frame
Drop this TS packet
else
If packet carry part of next section header
Set 1 in EBB according to the TS payload
region of this section and whole the next
section payload region in MPE-FEC
frame
Drop this TS packet and drop all TS
packets of next section
else
Set 1 in EBB according to the TS
payload region of this section in
MPE-FEC frame
Drop this packet
else
Set 1 in EBB at whole section payload
region in MPE-FEC frame
Drop all TS packets of this section
当传输串流分派器收到封包并立即侦测与判断封包标头中的错误指标字段是否为1,若为1则表示发生错误而进一步开始找出此错误封包所载送的数据是位于整个section的哪个区段位置,若是发生在section标头部位,由于标头是载送整个section最重要的信息来源位置,因此为了能正确地接收往后的section,故当发生错误的封包包含任一字节的标头信息时,将会将整个section数据完全丢弃而等待下一个正确载送section标头的封包进来。如果发生错误的封包是载送标头信息之外的部份时,则再进一步判断封包中载送的数据范围是位于整个section数据的哪个区段,若仅是中间部位,则只丢弃该封包而等待下一个正确封包即可,但若是section末端数据的话,则需再进一步的判断是否包含到下一个section标头信息,如果有的话,则一并把载送下一个section数据的所有封包丢弃而等待下一个正确载送section标头的封包进来,反之则一样仅丢弃该封包即可。 4.6Time-Slicing传输机制设计
DVB-H传送数据的方式是采用Burst传输方式,采用此种方式时,则必须精确地得知下一个Burst的抵达时间与传输该Burst数据的最大传输时间,才能让硬件能于正确时间点开关接收器来接收数据,而接收端在接收数据时,必须满足两个时间要求:
(1) 当Burst到来,并接收到第一个MPEsection进行解读时,section标头必须在Delta-TJitter时间内解碼并将Delta-T值回传到实体层。
(2) IP解封装器必须于Delta-T时间内完成所有section的译码与MPE-FEC机制的运作,并将数据输出到终端。
由于未必能在Burst的最大维持时间内将所有section数据解读完成,故接收端必须以缓冲器暂存整个Burst时间内的所有section封包,而封包的译码工作在剩余的Delta-T时间内完成即可。