首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

图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数据均已收集完成,则立即进行每列的所罗门纠错译码,藉此来修复于传输时因噪声干扰所造成的数据错误。
返回列表