基于ST20-TP4和ST20TP4芯片实现数字电视机顶盒系统的设计

科学技术的高速发展使广播电视进入了由彩色电视向高清晰度电视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流解复用,同时负责系统初始化和系统音、视频解码控制。为了配合st20tp4st20tp4的运行,需要配备一定数量的dram来提供运行程序的存储空间,并存储ts流、解复用后的音、视频pes流数据等。ts流经st20tp4解复用后分两路输出:一路是解复用后的音频pes流,这路信号将被送入sti4600sti4600进行音频解码,解码后的数字信号再通过dac转换电路转变为模拟信号输出?另一路解复用后的视频pes流将送入sti7000sti7000进行视频解码和格式变换。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就可以驱动硬件解码了。


三星s8搭载如此多反人类的科技!国产手机还是要多多学习!
Linux环境下段错误的产生原因及调试方法小结
保时捷第三代Cayenne正式发布 新车将迎来亚洲首秀
关于全ADI有源器件解决方案的组成部分
ThinkPad L系列笔记本新品推出,搭载英特尔Comet Lake处理器
基于ST20-TP4和ST20TP4芯片实现数字电视机顶盒系统的设计
用低成本的措施来实现满足可靠性的交付
小米Note3评测:上市一周就降价?小米6究竟比小米Note3好在哪?
realme X7 Pro怎么样?搭载天玑1000+ 120Hz高刷柔性屏 IMX686后摄
运算放大器的简易测量--失调和偏置电流
LiDAR面临着两大挑战
浦桑尼克无线吸尘器P9GTS评测 重心易掌握拿放不费力
兼容TDK贴片共模电感国产品牌究竟做到了吗
【实用干货】7条实用的PCB布线规则,建议收藏!
工程实践中常遇到的问题
激光雷达应用领域
三星S8第二,搭载骁龙836处理器,835又淘汰了?
Status建立了分片客户端Nimbus来解决区块链的可伸缩性问题
集成多参数便携式病患监控的应用挑战和解决方案
如何提升IC设计产业链水平与完善度