游子的博客
慈母手中线,游子身上衣, 临行密密缝,意恐迟迟归, 谁言寸草心,报得三春晖。 数据读取中,请稍候......
posts - 337,  comments - 546,  trackbacks - 0
基于ST20TP4的HDTV信源解码器的软硬件实现
天津大学电子信息学院(300072) 冷高峰 于振生 杜蓓蓓
科学技术的高速发展使广播电视进入了由彩色电视向高清晰度电视HDTV(High-Definition Television)跨越的过渡时代。随着HDTV在全球的兴起以及数字技术的日趋成熟,音/视频产品数字化、高清晰度化已成为未来家电视听产品的大趋势。HDTV采用了国际上流行的MPEG-2标准。MPEG-2规定了数字图像的音、视频编解码算法以及传送的码流应该符合的语法和语义,而其编解码算法又参考了听觉心理模型和视觉心理模型。HDTV的图像格式为1920×1080i,传输码率高达20Mbps,同时采用视频压缩技术可使HDTV的每一帧包含更多的信息,大大提高了图像的清晰度。HDTV在音频压缩方面采用了数字音频的编码和压缩技术。现有的数字音频编码压缩方案有MPEG-2、Dolby AC-3和美国AT&T的MPAC以及欧洲的MIX。它们都能实现5.1声道,即三个前面的声道(L、C、右声道R)、两个环绕声道(左环绕声道Ls、右环绕声道Rs)和一个低音效果声道LFE,使声音效果可以达到家庭影院的音响效果。HDTV声光效果上的优势,注定它的发展有着技术和市场的双重必然性。为了适应当前电视市场的过渡时期,需要一种即能接收数字电视信号,又能解码输出用于显示的中间设备--机顶盒,充当电视台信号与用户显示设备之间的桥梁。机顶盒是随着数字电视广播的发展而出现的,同时也必然随着数字电视广播的发展而不断发展。本文论述的信源解码器则是机顶盒的关键部件。

1 总体方案

根据本课题的任务和内容,选择了ST公司的数字高清晰度电视机顶盒系统解决方案,即ST20+Sti7000+Sti4600的三片方案。该方案采用ST20-TP4作为系统的主控制芯片,它负责将前端或LVDS板输入的TS流解复用,同时负责系统初始化和系统音、视频解码控制。为了配合ST20TP4的运行,需要配备一定数量的DRAM来提供运行程序的存储空间,并存储TS流、解复用后的音、视频PES流数据等。TS流经ST20TP4解复用后分两路输出:一路是解复用后的音频PES流,这路信号将被送入Sti4600进行音频解码,解码后的数字信号再通过DAC转换电路转变为模拟信号输出另一路解复用后的视频PES流将送入Sti7000进行视频解码和格式变换。Sti7000所配的SDRAM用来缓存PES流、解码帧、显示帧、参考帧及OSD数据。解码后的图像以4:4:4的高清晰度格式送入视频DAC电路进行D/A变换。另外,为了配合实际需求,视频模拟输出要求兼容VGA(R,G,B,Hs,Vs)和Y,Pr,Pb两种接口。其中,Y,Pr,Pb信号要带有三电平或两电平同步信号。

2 硬件设计

硬件电路设计以ST20TP4为核心展开,依据主控制芯片的总线结构规划视频接口、音频接口以及各类存储器。ST20TP4有一个32位带符号的2的补码地址空间。按32位地址寻址,总的地址空间大小为4G字节。(所谓"带符号的2的补码地址空间"是指该空间地址排列是由底部MixInt#80000000向下增长至#FFFFFFFF,接着是#00000000然后增长到MaxInt#7FFFFFFF)。整个寻址空间分为四个区(每区1G字节),由地址A31、A30决定。

需要注意:3区(A31A30=01 #40000000~#7FFFFFFF)为外部存储器空间。外部存储器接口(EMI)把它又分为4组,不同的外部存储器和外部设备可以映射到其中。这4组中组0、组1和组3是通用存储器组,每一个都可以通过有关寄存器的设置来选择时序;组0和组1可以选择DRAM型或SRAM型器件,组3仅支持SRAM型器件。EMI组2(#60000000~#6FFFFFFF)指定与MPEG音视频解码芯片接口。它提供4个选通信号:两个MPEG解码器IC的片选notCS0-1;两个解码器压缩数据选通信号notCDSTRB0-1。其中notCS0-1用来请求一个MPEG解码器寄存器存取周期,而notCDSTRB0-1用来请求压缩数据写周期。这4个选通信号有效与否取决于组2的地址范围,也就是说可以依靠地址来区分不同的MPEG解码器及同一MPEG解码器的寄存器和压缩数据接收FIFO。此外,为了与各种速度的MPEG解码器件接口,当选择不同地址时,notCS0-1可以有不同的时序(可分别插入1~4个等待状态)。

3 软件编程

在机顶盒这种实时系统中,由于CPU要同时对解复用、视频解码、音频解码等多个方面的事件进行处理,其中既有通信问题,又有同步等问题。因而有必要采取多任务多进程实时操作系统的方式。应用程序可以被分割成多个相对独立的任务共享系统资源。本课题软件开发中使用的实时操作系统是ST公司的STLite/OS20。该操作系统已提供的内容包括:较完整的实时操作系统软件、部分硬件驱动和部分testtool命令。能够实现的功能包括:各种接口功能,如I2C、UART等;MPEG和AC-3音频解码、MPEG视频解码和显示、基本流解复用、section滤波、OSD测试功能、时钟恢复和SD输出等。具体如图1所示。

需要开发的部分主要有:新增加和变动的硬件模块的驱动、前端或LVDS输入的控制、节目操作和管理模块软件的开发。节目操作的软件开发中,节目信息的获取、分析、保存和更新及节目数据库的操作是非常关键的部分,这是因为:一方面,它与前端或LVDS输入模块、解复用模块、音、视频解码模块等硬件驱动层都有很大的联系;另一方面,要实现机顶盒的音、视频解码功能,就必须从码流中找到所有基本流的PID,需要对节目特定信息(PSI)进行提取和分析。 PSI(Program Specific Information)节目特殊信息包含了解码器端解复用所需要的数据。在MPEG-2系统层标准中,每路数字节目都包含一个或多个基本流,每个基本流都分配了一个PID值作为标记。节目、基本流或其中的部分内容可能会被加密,但是PSI信息作为解码的前提是不会被加密的。

传输流中的PSI信息可以分成四种表的结构,每种表又可以分成多个section。这四种表分别为:节目组合表PAT(Program Association Table)、节目映射表PMT(Program Map Table)、有条件接收表CAT(Conditional Access Table)和网络信息表NIT(Network Information Table)。PAT包含了所有的节目号及其相关PMT的PID值;PMT给出PAT表中列出的所有节目的基本流PID信息;CAT的任务在于准备解密数据组用的信息(加密系统的标识、存取权的分配及各码序的发送);NIT可以传送网络数据和频带、转发信号、通带宽度等参数,MPEG对此表的内容没有做详细规定。每个TS流中都应该有PAT表,因为所有PMT和NIT表的PID值都在PAT表中给出,PAT的PID固定为0x0000,当PAT表内容更新时,表中的版本号version_number会增1。当TS流中有一个或多个基本流被加扰,则需要在TS流里传送一个PID值固定为 0x0001的CAT,提供有关加扰了的流的信息。PMT也是TS流中所必需的表,它包含了各个节目的基本流PID信息,这是解复用必不可少的,PMT的PID在PAT中给出。NIT表在TS流里不是必需的,它的内容属于私有数据表(private),如果TS流里存在NIT表,则它的PID值由PAT的内容提供,且TS流中应包含若干个private section。ISO/IEC 13818-1 MPEG-2系统层标准中关于PSI信息定义了四个section结构,分别代表四个表的信息数据结构。这四个 section 结构分别为:Program Association Section、Conditional Access Section、Transport Stream Program Map Section和Private Section。对各表信息的分析实际是对这些section结构的内容进行分析。

对符合MPEG-2标准的传输流进行音、视频解码前必须先经过解复用分出音、视频基本流。为了可以解复用分出音、视频基本流,首先要分析PSI表的各 Section并从中提取基本流PID信息。寻找基本流PID主要对PAT和PMT两个表进行处理。这两个表与基本流PID的关系可以用图2表示。

解复用的过程是这样的:首先,得到完整的PAT表,根据PAT的Section结构找到所有的节目号和各节目号所对应的PMT PID;然后,分别对PAT中列出的每一个节目进行如下操作:根据该节目的PMT PID得到PMT表中对应节目号的Section,按照PMT Section的结构进行分析,进而找到所有该节目的基本流PID值加以保存。

下面以加入新频道为例,简要介绍分析PAT和PMT得到解复用所需的各基本流PID信息的过程。首先,系统会发来一个消息,要求分析最新版本的PAT,调用相应函数(PSI_ProcessForPAT)得到PAT后,调用PAT分析函数如图3得到各节目对应的PMT表的信息,并将信息存入指定的数据结构中;然后此任务向系统发一个消息,通知系统PAT分析完毕;接着,按照数据结构中各PMT的PID,系统会依次向本任务发送要求分析各PMT表的消息。本任务在调用相应函数(PSI_ProcessForPMT)得到所需PMT表后调用分析PMT表的函数(如图3)进行分析,得到各个基本流信息的PID,并将信息存入指定的数据结构中保存,发送消息通知系统PMT分析完毕;最后,如果需要,系统会发消息要求分析其他PSI信息,分析过程类似。

得到各基本流信息的PID后,要选择此频道的哪一个节目,只要调用驱动程序提供的pti_set_pid(pid)和pti_set_pcr_pidpcr_pid分别设置节目相对应的音视频PID和PCR_PID就可以驱动硬件解码了。

posted on 2007-03-30 13:55 游子 阅读(2286) 评论(2)  编辑 收藏 引用 所属分类: 硬件软件

FeedBack:
# re: PSI解复用原理----转载
2007-04-21 17:26 | 游子
Table 2-29 -- Transport Stream program map section
Syntax No. of bits Mnemonic
TS_program_map_section() {
table_id 8 uimsbf
section_syntax_indicator 1 bslbf
'0' 1 bslbf
reserved 2 bslbf
section_length 12 uimsbf
program_number 16 uimsbf
reserved 2 bslbf
version_number 5 uimsbf
current_next_indicator 1 bslbf
section_number 8 uimsbf
last_section_number 8 uimsbf
reserved 3 bslbf
PCR_PID 13 uimsbf
reserved 4 bslbf
program_info_length 12 uimsbf
for (i=0; i<N; i++) {
descriptor()
}
for (i=0;i<N1;i++) {
stream_type 8 uimsbf
reserved 3 bslbf
elementary_PID 13 uimsnf
reserved 4 bslbf
ES_info_length 12 uimsbf
for (i=0; i<N2; i++) {
descriptor()
}
}
CRC_32 32 rpchof
}
不知道为什么,表中的字段都要2位,4位的紧凑在一起?单独用若干字节不是很方便吗?难道一定要这么节约?  回复  更多评论
  
# re: PSI解复用原理----转载
2009-02-16 14:43 | qq
ok! Thank U  回复  更多评论
  
只有注册用户登录后才能发表评论。

欢迎大家扔鸡蛋!送鲜花!

博客可以收入过千吗?

<2006年5月>
日一二三四五六3012345678910111213
14151617181920212223242526272829303112345678910

常用链接

留言簿(8)

随笔分类(314)

随笔档案(337)

文章分类(7)

文章档案(10)

相册

收藏夹(1)

其它

友情链接

数字电视

生活、旅游

自己的链接

计算机

搜索

  •  

积分与排名

  • 积分 - 407924
  • 排名 - 9

最新评论

阅读排行榜

评论排行榜