整理:模拟电视软件系统分析简结

来源:互联网 发布:笔记本电脑数据恢复 编辑:程序博客网 时间:2024/04/29 10:04

                           模拟电视软件系统   

电视软件系统架构图1.11.2(带OS层)所示;它是个层次清晰的软件基础平台,共分为应用层、通用层、驱动程序层、OS,OSD的库文件,应用层(application)用来提供软件工程师作定制化修改,通用层(Utilities layer)用来提供一些通用的应用程序,驱动程序层(DRIVER)用来对芯片器s件(HARDWARA)进行驱动的程序编写,OSD库文件(OSD LIBRARY)用来提供OSD设计中底层应用程序。其中修改OSD菜单主要用工具来实现,生成OSD的代码部分(OSD FILES);然后来程序应用的代码合二为一,就成了全部的程序代码。 对于电视系统可以通过并口、串口或JTAG口一般都是基于RS232的,配合系统开发工具,提供给软硬件工程师作系统开发用。通过UARTDDC2BI接口对系统作程序更新、寄存器在线读写等。另外也可以通过JTAG(JOIN TEST ACTION GROUP)口进行各种各样的调试。

   

                   电视软件系统架构图1.1

                  电视软件系统架构图1.2

 

一、对于具体的电视软件系统,我们把它的结构分几个流程和三个部分来看。   

几个流程:UI流程、开机流程、关机流程、源切换流程、TV自动搜索流程、TV换台流程、动态刷新流程等。

三个部分:初始化部分,系统主循环,和中断服务系统(如图2)。

   系统模块图2

 

(一)、几个流程说明:

 

UI流程:这个流程比较简单,实现了从一个Button被按下,然后执行相关操作,最后OSD显示出来的每个步骤。

      开机流程分两种:一个是冷开机,即打开电源开关开机,一个是热开机,即在待机状态下按遥控器开机。在这个流程里,实现了从开机一刹那,MCU复位从0000地址处开始执行到最后屏的背光打开,图像显示出来的每个步骤。

     关机流程:在这个流程里,实现了从遥控器按下,UI模块解码得到关机命令,然后进入待机状态的每个步骤。

      源切换流程:这是核心流程,因为这个流程控制了信号从输入到输出一系列变换,设置,然后显示出来。在这个流程里,实现了信号源开始切换时,设置相关寄存器,等待信号稳定,获得信号格式,然后根据信号格式设置相关寄存器,直到最后显示出来得每个步骤。

      TV自动搜索流程:这个流程实现了TV搜台功能,并且包括了获取CNI,根据CNI进行自动排序的APS(Auto program system)功能。

      TV换台流程:这个流程实现了TV换台的功能,包括了设置Tuner的频点,自动检测伴音制式,丽音制式,自动微调等一系列步骤。

动态刷新流程:一些寄存器要根据输入信号实时刷新,一般在while(TRUE)或定时中断函数中加入一些handler来实时刷新这些寄存器。

   

(二)、三个部分说明:

初始化部分:系统上电后先进行系统的初始化 ,初始化程序主要完成基本的I/O的设置,硬件的初始化,变量的初始化等。

系统进入主循环:主循环是系统的核心模块,绝大部分的软件处理工作是在主循环中实现的。

中断服务程序:中断服务程序完成需要实进处理的功能,内容包括通讯、摇控、定时等。

 

二、软件系统的详细说明

  (一)、 软件系统主要包括以下几个方面或模块:

1:硬件更新:对底层一些硬件驱动的初始化和更新,即对硬件的复位控制和相关寄存器的设定上。

2:通讯命令处理:接收并处理串口输入的调试或升级命令。

3:模式处理:对输入的信号进行模式更新断送。

4:电源处理:响应电源开关,一般是摇控开关机。当接收到摇控器发出的开关机命令时,分别对时钟、内存、LVDS信号、ADC通道,主/子画面通道进行复位或清零处理操作。

5:模式的建立:判断模式后,设定系统输出,建立新的显示模式。

6:定时处理,检测处挂的实时时钟的信号,如果系统设置了开关朵时间,每次都会判断开关机时间是否已经到达,如果已经和设置的时间吻合,则发出开关机消息。

7:菜单处理:响应菜单的操作,将其转化为相应的消息发送给送给处理模式。

8TV处理:可设置自动、手动、微调的标志量,对TUNER进行搜台操作,除搜台外,该模块一般进行AFE(自动频率跟踪)自动校正工作,防止搜到的频点有偏差。

  (二)、几个重要的模块说明

 1、初始化:

软件初始化程序是对各类变量、函数及相关寄存器、功能模块作初始化赋值,是整个程序中不可或缺的一部分,本程序初始化流程如图:

 1):初始化GPIO.GPIO口就是通用输入、输出端口。在声音输入选择、面板指示灯显示、HDMI处理、DVI处理时都需要用到GPIO口,需要对其进行赋初值 ,使GPIO口输出高或低电平 ,或使GPIO处于接收信号的状态。

  2):初始化硬件系统寄存器:初始化硬件系统寄存器包括设定处部FLASH等待状态;初始化两个物理通道为逻辑通道并分配主、子通道信号数据存储空间;初始化中断寄存器;软件复位;设置系统时钟值,含晶振输入时钟(TCLK XTAL)、主接口传输时钟(HCLK,其它时钟值都由其合成而来,并对各个功能模块选择相应的时钟频率,初始化DDS(直接频率合成)时钟频率并进行DDS;初始化解码器,设置相应寄存器;初始化模式侦测寄存器(IFM,此信息可以用于确定初频信号的格式,并可侦测到输入格式的改变,它也能侦测到隔行扫描格式的半帧类型,判断当前模式变化及设定相尖标志位,用于后期模式的处理。

  3):读取E2PROM;如果是新的E2PROM,那么进行默认的E2PROM的初始化。如果检测到的是已经初始化过的EEPROM,那么就可以读取上次关机时保存的数据值,用于此次开机时的初始化值。

 4):初始化外部设备:含初始化实时时钟模块、初始化声音模块、初始化高频头设置、初始化HDMI设备,初始化SAA7117视频解码器。初始化实时时钟模块的主要工作是设定定时中断寄存器,初始化声音模块的主要工作是初始化功放芯片TPA3004D2和丽音芯片MSP3410的寄存器,通过这一初始化来设定扬声器,耳机的声音大小及声音模式,设定丽音接收状态,选择重低音开关,选择SCART 的输入通道,IIS的解调参数等。初始化高频头的设定就是设定IF信源下的初始频道及起始状态,按照频道表搜台时需要将频点写入EEPROM。初始化HMDI设备用来写相关寄存器,使HDMI 设备处于初始化状态。初始化SAA7117视频解码器用来写相关寄存器,SAA7117是视频解码器芯片,对采集到的图像信号进行解析,可实现主、子通道两条通道同时输出模拟或数字信号,用于多画面显示方式。

  5):初始化酒店设置:因为酒店机的要求与家用机的要求有所不同,例如需要能频道锁定、最大音量控制、开机音量设定、开机自动恢复,开机进入指定,面板锁定、开机LOGO等,所以需对一些变量再赋值,以达到机店机的特殊需要。

  6):初始化LCD屏的参数:因液晶屏是不同厂家生产的,每一款都有其特定的参数及特征,在初始化需要对屏参进行初始化配置。屏参含伽马校正曲线、分辨率、每行的点数和每场的行数、像索频率,行频和场频、行/同步宽度进行,行/场同步位置、上电时序等参数。此外屏接收信号有两种方式,即LVDS信号和TTL信号,若为LVDS信号时,则还需对LVDS寄存器作相应的初始化操作。

 7):初始化OSD相关参数:初始化OSD 的相关参数主要包括:初始化OSD BUFFER 空间,初始OSD 队列(OSD消息以队列的模式依次发出,触发相关的事件,使OSD显示不同的状态);初始化OSD语言,初始化OSD透明度,初始化OSD 按键(根据不同的红外接收协议设置不同),始始化OSD 像素扩展,初始化字库等动作。

 8: 初始化全局变量:在    EEPROM 中已经设置了一些用户变量,对另一些全局变量还需初始化,包含彩色制式初始化,初始化暗平衡,初初化降噪,初始化背光值,电影模式侦测(FILM MODE)初始化,定时开机状态的初始化,斜角度平滑处理的初始化(DCDI,色抑制初始化(CCS);自动颜色处理初始化(ACC,动态颜色管理初始化(ACM),运动自适应逐行处理初始化(MADI,设置12画面状态为初始化状态。

  9):设定允许开机标志位,显示开机LOGO:设定开机的寄存器,允许开机,随后发出OSD消息,显示开机logo,正式开机。

  10):初始化信源通道,选择正确的解码芯片:确定当前主通道所选用的信源,检测当前的解调信源需要外部芯片还是内部芯片,使用外部芯片作模拟部分解码,则针对不同的信源作相应的处理,包括声音部分的解码,确保密码正确,在屏幕上显示正确的信息。

  11):初始化当前声音制式:初始化主、子通道声音系统,售对当前声音制式(B/G,,L,I,D/K,

M/N)和丽音状态 FM/AM,.NICAM)的初始化,使声音部分解码正解。

 2、搜台:

搜台有两种方式:其一为全频道搜台,另一种是按频道表搜台。顾名思义,全频道搜台是所有频点都 搜索,频点的范围由具体的高频头决定,而按频道表搜台就电邮近频道表上的频点来搜索,并不是全部频点,其范围由频道表决定。

 

采用全频道搜台,支持存储200个台,所用的是ALPS 的高频头,带宽范围是43-866MHZ,在这么宽的范围里,并不是每一个频点上都会有台的,而且节目与节目之间至少有8MHZ 的间隔,(以中国为例,还有的地区节目带宽的间隔是6MHZ,),用户有自动搜台和手动搜台两种选择,虽然使用两个高频头,但搜以过程公平还只使用主通道的那个高频头,在搜台结束后,两个高频头共享这份存储数据。

   1):自动搜台流程:

      自动搜台流程如图:搜台流程图1所示:   

      自动搜台是按照从低频段到高频的顺序进行的,在全频道的检测哪些频点是有台的信号,从流程可以粗略的看到高频头循环流程,

 

一个新的频点

是否有同步信

是否小于1.9

是否有同步信号

是否在大于3.8

存台

是否小于1.9

50KHZ向前走

 

        搜台流程图1

 

对于确认此频道是否有台,主要依赖几个依据:有没有同步信号 是判断的前提,从高频头读取电压现来判断这个电压值是否大于3.8伏而后大小于1.9伏,这个过程是必要条件。

 

(2):存台的过程:

 一般节目在信号的最佳频点,共大约有2.5MHZ的带宽范围存在同步信号,但不是左右均分,左边要宽点儿,如图2中的虚线所示。自动搜台开始时,先把最低的频点(43MHZ)写入高频头,经过一段时间的延时(高频头内锁相环需要一定的时间稳定,一般是延时150MS)后,读取其同步信号,如果这个前提条件都不成立,则继续向前搜索(以1MHZ的步宽),要是有同步状态,则进行下一步的判断。

  

下面的图2说明在同步信号的判断过程。

首先,在进入在同步信号的范围内后,缩短向前搜索的步距长度,以100KHZ的步距继续向前进行搜索。在推进过程中的第一个判断是要找到AFE电压大于3.8伏的点。

其次:在找到3.8伏的点后,需要再次缩短步距的长度,这时以50KHZ的宽度向前继续搜索找到最佳频点。此时,反馈回来的电压有可能是大于3.8伏的,也有可以是小于3.8伏的,但应该是大于1.9伏的。如果出现小于1.9伏的,就有可能是在读取电压值时出错了。这是要进行有没有同步信号的判断,要是没有同步信号,则认为此点是假台,要是仍有信号,为了不漏台,则继续下一步的判断。

最后,在找到小于1.9伏的点后,往回跳一个步长度,则认为是最佳调频点,并把此点保存下来,但究竟往回跳一个多大的宽才合适, 这是一个经验值,需要经测试才能得出来。

 

3、模式处理:

  模式处理是主程序中非常重要的一个模块,其主要功能是针对输入信号的不同格式进行识别处理,系统首先需要检测是否有同步信号输入,并且检测同步信号是否稳定,判断输入信号属于哪种模式,从而开始建立模式,给出输出信号。

1)处理流程:

建立模式的处理流程,如图3所示:

 

2:判断依据:

 如何来判定输入的信号是否是有效呢?程序每次进行主循环后都会根据硬件更新(hardwara update)模块判断信号的同步状态是否发生改变。状态分为三个模式:稳定,稳定到不稳定,不稳定到稳定。因此会对这三种状态作不同处理。

2.1):稳定状态:如果输入信号一直处于稳定状态,也就是说探测稳定的同步、频率、同步极性等,一直处于稳定状态,那么将不改变模式处理过程。

2.2):稳定到不稳定:当系统的同步信号由原来的稳定状态发生改变,变为不稳定状态时,不能得到稳定的同步信号时,就作无信号处理。

2.3):从不稳定到稳定:当新的模式输入后,同步信号将稳定状态到不稳定状态,再从不稳定状态到稳定状态,然后进行模式判定,系统会根据输入的行、场频、来从支持的模式表中查找出信号格式。如果不能找到合适的模式先无法接近模式表中的任何一种模式,那么当前输入的将作无效模式处理。

 

3

(3)模式表查询:

  当有新的模式输入时,能常采用静态数组来确定信号属于哪一种模式,一般我们会定义结构体数组,把系统所有的模式都放到数组中,因此要定义结构体数组,要求结构体中的属性能区分模式 。通常根据行,场频率,行的点数和场 和行数,隔行或逐行来区分不同的信号模式,另外我们在模式表中定义模式属性的类别,用来判定是电脑信号,标清信号,高清信号等类别。其中模式表的查询流程如图4如示:

4

40SD 处理

   OSD是连接用户操作和电视机内部功能的一个人机界面,通常符合外观时尚、用格调,操作方便,人性化等求。同大多数界面发展一样,由静态的发展到动态的,由单字符的发展到多字符的,由不透明的到可调节透明程度背景,调节项目和操作也更加丰富,昜加人性化。

      OSDR 的主要实现方法和类型:

   目前主要有两种OSD实现方法,外部OSD发生器与视频处理器间的叠加合成;视频处理器内部支持0SD,直接在视频缓存内部叠加生成OSD.

   外部OSD生成器与视频处理器的叠加合成的实现原理:由一个MCUM内建的字符发生器及显示缓存,得用快速消隐(FAST-BLANK)信号切换电视的画面和OSD显示内容,使OSD的字符等内容加在最终用户的画图上。在OSD和显示画面叠加的处理过程中,通过调整两者的比例可以实现OSD的半透明效果。同时,对OSD信号中的红、绿、蓝信号进行重新编码,可以得到不同的OSD颜色效果。

   另一种方法是处理器内部支持osd,直接在视频缓存内部叠加生成osd,这一类视频处理通常具有内部和外部缓存,同时具有osd发生器,osd 的合成和控制直接在内存内完成。

   Osd 具有字符型(font-based)和位图型。但为了节约资源,早期的osd采用字符型,字型osd的优点是可以使用osd内少量的资源,并且MCU只需指定显示内容即可显示对应的OSD 信息。

 位图型OSD的显示效果理论上可到非常完美的程度,可以提供类似Windows中的具有立体感的各种物体,如具有阴影的按钮,颜色丰富的图形 和文字。当然其缺点就是须具有足够多的OSD显示缓存,以及像按钮等像素处理带来的对CPU速度的要求。

  对于OSD的软件制作,目前也有两种方法,一种直接通过对源代码的更改进行OSD的制作,另一种方法就是使用OSD的工具生成可视的OSD,然后通过工具软件自动转化 为代码加入到程序中。后者将逐渐的取代前者。

  OSD的事件处理方法:

   在主函数中,一般在主循环中会提供函数接口来处理OSD发出的消息。其中OSD的事件可以分为以下三种:

  A:模式事件处理:一般发生在切换信源端口的时候,引起新的模式的判断以及新的模式的建立。新的模式建立,确定模式后, 会给出识别信息的模式LOGO,包括的信源名称,台号。丽音标志。

  B:定时事件处理:主要处理OSD的定时中断,该中断用于OSD的超时(timeout)处理。表现在如果没有按键输入的情况,OSD在到达设定的时间后结束或切换功能。

  C:按键事件处理:这是OSD处理的最重要部分,而且用户大部分操作都是通过遥控控制或面板按键来实现的。当按下数字键的时候,MCU会通过处部中断处理接收红外线码。‘

.

5、定时处理

  定时处理是将实时时钟作为基准,通过实时时间与所需时间与所处理时间相比较,从而得到相应的处理。这里涉及三个IC之间的协调;主芯片GC32,实时芯片(PT7c4372)、电源芯片MCU.

1)、定时处理的流程:

在机器第一次开机时间,默认给实时时钟一个初始当前时间,用户也可以通过菜单对时间进行调整重新设置。在正常工作状态下,主芯片会通过IIC 总线从实时时钟芯片处获得到实时时间,用户可以通过菜单看到具体时间,因为实时时钟有一个处挂电池,所以在待机或断电的情况下仍可以正常运行。

控制流程图只列出了主循环与实时时钟的交互相关部分。

通过控制流程可以知道,主芯片是从实时时钟芯片取得实时时间,然后将它作为菜单时间的;并随实时时钟的更新而更新。再次,将它作为睡眠,定时开关机的判断依据,从 可以看到,每次主循环中都可以得到实时时间。GC32的主循环轮一次的大约时间为3ms,而用户最小的可见时间的是钞,所以并不需要每次都为其进行更新。

2)、更新菜单上的时间显示:

主循环很快,循环80次的时间大约是0.3秒,所以在更新时间时显示加了一个计数判断,即是每80次才刷新一次,只要保证及时更新菜单中秒的显示即可。


  
3)、睡眠、定时开关机处理流程:

 

 

  首先,主芯片会从实时时钟那里得到实时时间,通过与用户所定的睡眠、开关机时间相比,判断当前时间是否是需要进行相当的处理。主芯片通过发送消息的方式通知电源管理芯片进行相应的开关机处理。

 

6、电源管理

  该系统的电源管理模块中使用是一块MCU来管理电源什么时候是提供低电压,什么时候提供高电压,控制开机过程是直接开机还是待机再开机的。当然了其主要目的是降低待机的功耗。能待机的原因是只有电源管理电源和实时时钟在工作。电源管理程序中包含了名个中断,还有对MCU和液晶屏之间的I/O口时序控制,电源管理系统如图所示:

 

具体工作流程如下:

A:电源控制MCU通过键盘中断来接收主芯片发来的开机状态信息。

B:电源控件MCU通过外部中断0来接收实时时钟发过来的开机关信息。

C:电源控制MCU通过外部中断1 来接收遥控开关机信息。

D:+5v‑SEB是当待机的时候,只有电源控制MCU和实时时钟的时候供电的,以求最大限度减少功耗。

关于程序中的中断及作用定义如下:

A:外部中断1和定时中断1:接收遥控红外编码中断,来判断是否有遥控操作,在产生外部中断1时,定时中断1开始计时,通过获取两个脉冲下降沿相隔的时间长度来计算来识别红外编码传输的数据信息。

B:外部中断0 因为电视机具有定时开关机的功能,该功能的实现主要是通过主芯片外挂的实时时钟来实现的。待机过程中,用户设定的时间到达后,时钟芯片会给电源管理芯片发送一个外部为断 0,从而电源管理芯片响应,进行由待机开机的操作,从而实现上电操作。

C:键盘操作:

用于对交流电源通电后, 是直接上电还是进入待机状态的判断。

 

对于该主机,本次开机状态时由上次的关机决定的,如上次是直接关闭交流电而关机,则本次开机就直接给系统上电。如果上次是先经待机再断开电源,则本次开机则是开机后处于待机状态。

 

那么系统是怎么记录这些信息呢?下图的流程反应了上电和断电的软件流程。

 

 注:本文是结合TCL基于GNSS写的书和MST公司资料整理而成。

 

原创粉丝点击