微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > 手机电视(DVB-H)软件接收器

手机电视(DVB-H)软件接收器

时间:10-10 来源:中国数字电视 点击:


图5MPE-FEC框架

如图6,在发送端透过纵向填入数据与横向纠错编码来完成交织编码的编码方式再进行封装传送。而在接收端接收后则进行反向的纠错译码动作,藉此来修复因传输所发生的数据错误。


图6 MPE-FEC框架交织编码方式

4、 DVB-H软件接收器系统设计

DVB-H接收器的详细软件架构如图7所呈现,主要由传输串流分派器(TransportStreamDispatcher)、子译码器(SubDecoder)组件、控制器(Controller)对象与MPE-FEC运算单元(MPE-FECOperationUnit)所组成。


图7DVB-H接收器软件架构

4.1传输串流分派器

传输串流分派器主要负责将DVB-H传输串流中各种类型的封包转递给不同的子译码器进行处理并从封包中过滤使用者所欲观看的节目传递给DVB-H终端装置。若在Burst传输期间,封包数据因噪声干扰而损毁,或者传送端于传送时为符合服务的传输位率而添加一些填塞封包,因此为减少封包的处理时间,故在传输串流分派器取得封包之后,便先检查此流封包是否发生错误与是否为填塞封包,若发生错误,则将封包丢弃,而整个执行程序将进入到错误分类机制(ErrorCategorizationmechanism)中,若为填塞封包则即早丢弃,避免填塞封包送入子译码器中花费不必要的处理时间。为简化子译码器的复杂度,传输串流分派器系使用分派表方式来注册欲译码的封包子译码器类型,并藉此分离各个子译码器之间的相依关系。分派表系采用杂凑表(Hashtable)的一种应用,使用杂凑表的优点在于不论注册数量的多寡,查询时间花费永远固定为常数值,因此将可广泛支持未来规范中新增的窗体或电视台所自订的私有窗体。而整个传输串流分派器的分派处理动作则如表1的虚拟程序代码(Pseudocode)所示。

表1 传输串流分派器之虚拟程序代码

If System Start then

Set Buffer to receive TS packet

If ErrorIndicator is equal to 1

Drop this TS packet

Start Error Categorization mechanism

else if PID is equal to 8191

Drop this TS packet

else if PayloadUnitStartIndicator is equal to 1

If ContinueSection is not equal to Null

Call the sub-decoder to continue decode

else

If sub-decoder is not found

Drop this unknown TS packet

else

Call the sub-decoder to decode

else

If ContinueSection is not equal to Null

Call the sub-decoder to continue decode

else

Drop this TS packet


4.2子译码器组件

于初始化时期,子译码器必须向传输串流分派器注册封包类型,以便从传输串流分派器中得到相对应的封包。

表2子译码器共通虚拟程序代码

Function:DecodeFunction

从传输串流分派器中取得section中的第一个封包并译码。

Set PayloadBuffer to receive the section data

Set PaylaodLength equal to PacketPayloadLength

If SectionHeaderLength is equal to 12

Decode the section header

If section payload is not equal to Null

Output section payload to

SectionPayloadCottectionUnit

else

Set ReceiveLength equal to PayloadLength

Set ContinueSection to this sub-decoder

Function:ContinueFunction

从传输串流分派器中取得接续的section封包资料。

Set PayloadBuffer to receive the section data

Set PayloadLength equal to PayloadLength add

ReceiveSectionPayloadLength

If SectionHeaderLength is equal to 12

Decode the section header

If section payload is not equal to Null

Output section payload to

SectionPayloadCottectionUnit

If PayloadLength is equal to SectionLength

Set ContinueSection to Null

else

Set ContinueSection to this sub-decoder

子译码器共通的虚拟程序代码如表2所示,传输串流分派器则根据分派表中已经注册的子译码器信息来递送封包给特定子译码器,子译码器则根据封包中所传达的数据将讯息或组态释出,并传递给控制器对象。当子译码器藉由解读section的长度字段得知该section数据长度超过一个封包所能承载的数量时,会将接续片段指针对象设定指向自己。此后,当传输串流分派器接收到封包后,将会检视接续片段指针对象是否为空对象,若为空对象则从分派表中寻找负责解碼此封包的子译码器。若非空对象,则将封包传送给欲接续接收的子译码器,直到整个section数据接收完成之后,子译码器才会将接续片段指针对象重设为空对象,而从下一个封包开始,将以正常程序寻找封包子译码器。

4.3控制器对象

控制器对象为DVB-H软件接收器与使用者互动的接口。控制器的主要功能除了撷取使用者的输入讯息之外,也实作讯息输出接口。在控制行为部分,控制器仅与子译码器互动,在讯息输出方面,则是与整个DVB-H软件接收器中的所有组件连结在一起。另外,在实作设计上则不同于传统将控制接口嵌入于播放器的作法,藉由此方式达到DVB-H软件接收器与播放装置各别独立的能力。

4.4MPE-FEC运算单元

MPE-FEC运算单元主要负责进行整个MPE-FEC机制的运作,如图8而其又可分为三个运作单元,分别为:MPEsection数据收集单元、FECsection数据收集单元与所罗门译码单元(RSDecodingUnit)。

其中MPE与FECsection数据收集单元主要负责收集从子译码器解读取出的section数据,当完成section数据收集后即填入位于所罗门译码单元中的MPE-FEC框架中,直到整个框架的所有section数据均已收集完成,则立即进行每列的所罗门纠错译码,藉此来修复于传输时因噪声干扰所造成的数据错误。

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时间内完成即可。

除此之外,由于在处理的过程中使用缓冲器来暂存section封包数据,而再取出解读时,其标头中所挟带的实时性Delta-T信息已失效,仅有解读第一个MPEsection所造成的延迟时间最为短暂。

因此,在实作上即采用第一个MPEsection标头所挟带的Delta-T信息来告知实体层下一个Burst的到来时间,而其余section标头内的Delta-T信息将不被读取采用。整个section封包处理延迟时间示意图即以图9呈现。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top