发明内容
本发明要解决的技术问题是解决在屏显示过程中占用内存过大的问题。
为解决上述技术问题,本发明提供的在屏显示装置包括:包括SPI控制器、图标库内存模块、字符库内存模块、字符索引内存模块、MCU、OSD控制器以及DMA控制器,所述SPI控制器与在屏显示装置外部的存储器连接,通过DMA方式将外部存储器的OSD数据传输至图标库内存模块、字符库内存模块或者字符索引内存模块,OSD控制器可以分别直接访问图标库内存模块、字符库内存模块、字符索引内存模块和MCU,MCU可以直接访问字符索引内存模块。
根据本发明提供的在屏显示装置,其中,所述图标库内存模、字符库内存模块和字符索引内存模块三个之间相互独立。所述外部的存储器外部存储器为Flash存储模块,用于存储字符库、图标和字符索引静态数据。所述Flash存储模块和SPI控制器之间通过串行传输。
本发明同时提供该在屏显示装置的在屏显示方法,其包括如下步骤:
(1)由字符库、图标库、字符索引组成的OSD数据存储于外部Flash存储器模块;
(2)外部控制器发送OSD命令;
(3)判断状态是否变化,如果当前OSD命令所指定的状态不同于之前的状态,则进入步骤(4),如果当前OSD命令所指定的状态与之前的状态相同,则进入步骤(5);
(4)通过DMA方式将状态命令所指定的OSD数据传输至各自内存模块。
(5)静态显示判断,如果OSD是是静态显示,则进入步骤(7),如果OSD是动态显示,则进入步骤(6);
(6)MCU访问字符索引内存模块,修改字符索引数据;
(7)OSD控制器从内存模块中调用OSD数据;
(8)组织输出至显示器。
根据本发明所提供的在屏显示方法,其中,所述字符索引中存入的是对应字符库的属性;字符库里面存入的是字符点阵的数据。所述OSD数据为当前状态所对应的OSD数据。在步骤(3)中,每个状态对应一个预先设置的在屏显示参数。在步骤(4)中,所述DMA方式传输是通过SPI控制器、DMA控制器以及内存模块中的RAM控制器三者协调控制;字符库OSD数据传输至字符库内存模块,图标库OSD数据传输至图标库内存模块,字符索引OSD数据传输至字符索引内存模块。
根据本发明所提供的在屏显示方法,其中,所述图标库中存入的是位图数据。所述第(7)步骤中通过OSD控制器中的一个以上颜色查找表与位图OSD数据结合方式,实现图标显示。
本发明的技术效果是,在屏显示装置包括三个用于当前状态的OSD数据存储的图标库内存模、字符库内存模块、字符索引内存模块,而大量的其他状态的OSD数据存储于外部的存储模块中,因此可以大大节约OSD装置在屏显示时的内存。通过DMA方式将外部存储器的数据传输至内存模块,不依赖于MCU,能够大大节省OSD装置资源。进一步,由于三个内存模块是相互独立的,能够缩短在屏显示的周期,速度更快;颜色查找表与位图OSD数据结合方式实现图标显示,也更能减少OSD时内存使用。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
图1所示为本发明提供的在屏显示装置的一个实施例。如图1所示,该实施例在屏显示装置10是应用在数字电视中,其能够与数字电视芯片集成在一起。在屏显示装置10包括SPI(Serial Peripheral Interface)控制器120、图标库内存模块130、字符库内存模块140、字符索引内存模块150、MCU160、OSD控制器170以及DMA(Direct Memory Access)控制器(图中未示出)。
其中,SPI控制器120与在屏显示装置外部的存储器连接;在本实施例中外部存储器为外部Flash存储模块110,外部Flash存储模块为SPI接口存储器,用来存储OSD数据,例如所有的字符库、图标等;通过SPI控制器控制外部Flash存储模块,外部Flash存储模的数据可以通过串行输出至内存模块;外部Flash存储模块110所存储的OSD数据可以通过在屏显示装的上位的软件从数字电视系统中下载。SPI控制器120同时与三块相互独立的图标库内存模块130、字符库内存模块140、字符索引内存模块150数据连接,通过SPI控制器、DMA控制器以及内存模块中的RAM控制器三者协调控制,可以实现外部Flash存储模块110的数据以DMA存取方式传输至图标库内存模块130、字符库内存模块140或者字符索引内存模块150。图标库内存模块130用来存储从外部Flash存储模下载过来的图标库OSD数据,字符库内存模块140用来存储从外部Flash存储模下载过来的字符库OSD数据,字符索引内存模块150用来存储从外部Flash存储模下载过来的字符索引OSD数据,其中某一字符库和对应的字符索引同时下载。通过DMA方式存取或者下载,不依赖于MCU,能够大大节省OSD装置资源。MCU160和字符索引内存模块150通过控制线连接,可以发送控制命令控制字符索引内存模块中的字符ID的改变。OSD控制模块同时与图标库内存模块130、字符库内存模块140、字符索引内存模块150、MCU160连接并可以向其发送或者接收控制命令,三个内存模块的OSD数据都可以通过OSD控制器调用。在本实施例中,OSD控制器包括有若干寄存器,其根据需要可以分为字符类、图标类、内存访问类等。同时,OSD控制器还与在屏显示装置10外部的混合模块180、视频模块190连接,混合模块180能接收OSD数据和数字电视视频数据输出至显示器200,实现最终显示。
图2所示为本发明提供的在屏显示方法的实施例。在该实施例中,同样结合数字电视中的在屏显示进行说明,结合图1,如图2所示,包括具体步骤:
S210,由字符库、图标库、字符索库引组成的OSD数据存储于外部Flash存储器模块。
在该步骤中,字符库、图标库、字符索引组成的OSD数据均为静态数据,通过在屏显示装置的上位软件可以将OSD数据下载存储至Flash存储器模块,Flash存储器模块容量较大,可以存储在屏显示可能用到的各种字符库、图标、字符索引等OSD数据。在本实施例中,支持24×32、16×24、12×18三种点阵,英文的只有16×24、12×18两种点阵;字符库里包含一些特殊符号,如左箭头、右箭头等,可以支持2色、4色、8色、16色的图标。字符索引中存入的是每个字符库的属性,每个字符库具有3字节的属性,所以一个字符对应的字符索引格式为如图3所示,它占用三个字节,具体地址位代表的属性如下:
Bit 23-16 8位字符库地址;
Bit 15 反色显示;
Bit 14 高亮显示;
Bit 13 阴影使能;
Bit 12 边界使能;
Bit 11 凸选择,0代表凹,1代表凸;
Bit 10 凹凸连续选择,0代表不连续,1代表两个连续字符组合凹凸;
Bit 9 凹凸使能;
Bit 8 闪烁使能;
Bit 7-4 背景色选择;
Bit 3-0 前景色选择。
菜单的主窗中,前4个页(PAGE)占用1个字符库,设置菜单和快捷菜单占用1个字符库,英文菜单占用1个字符库。为方便操作,每个字库大小相同,约为32k BYTE,其中频道号可以采用4个字符库拼凑一个数值。图标库含有开机LOGO和主菜单用到的5个图标,这5个图标是由6×4个小图标拼凑成的,每个小图标为16×24。LOGO与5个图标之和的大小相同,都为32kBYTE。同样字符索引也是分成相同的大小,由于目标屏的分辨率为1440×900,所以为了显示字符不至于过小,我们采用2个24×32拼成1个中文字符,这样中文字符占用了2个字符索引,每个字符索引为10.75kBYTE。
S220,外部控制器发送OSD命令。
在该步骤中,外部控制器为遥控器,通过遥控器发送在屏显示命令,例如,为实现图像调整发送图像调整命令。通过系统软件的遥控解码可以识别出是哪个按键被按下,主控(主控也即系统软件,是负责程序调度、遥控解码、命令处理等功能的程序)根据这个按键的功能,经过命令处理程序把这个按键转换成命令发给相关的模块,而对OSD来说,就是一个提供识别的状态编码。主控调用完相关模块后,这些模块根据当前值以及收到的命令参数去设置模块的寄存器,然后返回一个目标值,也就是调整后的值,放到公共数据交换区,OSD通过MCU就把这个值显示在屏幕上。
S230,判断状态是否变化。
在该步骤中,每个状态对应一个预先设置的在屏显示参数,也即,在屏显示中的每个需要调整的参数等都通过状态对应,例如图像调整(也即参数调整)对应一个状态。在本实施例中,根据主菜单以及子菜单的数目,采用4个字节分别表示1个状态,所有的OSD菜单,包括快捷菜单和主菜单,划分为若干页(PAGE),这些PAGE中也包括要显示的下级菜单,或称为二级菜单。每个PAGE唯一对应一个状态(STATE)。如主菜单中的图像页(图像调整)对应状态为4_1_0_0。其中,“4”为第一个字节,表示主菜单;“1”为第二个字节,表示图像;两个“0”分别为第三个、第四个字节,表示图像下的其他下级菜单和菜单中的具体选项。
根据外部控制器发送OSD命令,例如图像调整,对应找出相应的状态(4_1_0_0),如果状态与之前的状态发生变化则进入步骤S240,如果状态与之前的状态没有发生变化,可以重复调用字符库内存模块、图标库内存模块以及字符索引内存模块的数据,内存模块中的数据不需要更新,则进入步骤S250。在状态发生改变的过程中,主控(主控也即系统软件,是负责程序调度、遥控解码、命令处理等功能的程序)接受到外部控制器发送OSD命令,会把该命令经过翻译之后存入事先开辟的内存bank中的相应地址空间中,同时要修改的参数(例如图像调整)由主控调度相应的模块(在屏显示装置之外的图像模块)写入到相应的地址单元中。这样,用户就可以通过遥控器调整到所需的值。
S240,通过DMA方式将状态命令所指定的OSD数据传输至各自内存模块。
在该步骤中,每个状态能对应相应的OSD数据,由于状态与之前的状态发生变化,当前状态命令所指定的OSD数据在在屏显示过程中需要使用,因此将状态命令所指定的OSD数据传输至各自内存模块,其中字库数据传输至字库内存模块,图标数据传输至图标库内存模块,字符索引数据传输至字符索引内存模块。在该过程中,通过在屏显示装置的SPI控制器120、DMA控制器以及内存模块中的RAM控制器三者协调控制,以DMA方式输出至内存模块。例如,在屏显示页的图像页状态所对应的字符库和字符索引分别从外部Flash存储模块110下载至字符库内存模块140、字符索引内存模块150。这样不需要将外部Flash存储模块的全部数据全部下载,因此能大大节约内存空间。同时,由于三个内存模块是相互独立的,并不是在一个内存模块中分割成几个块。这样执行周期会更短,速度更快。
S250,静态显示判断。
在OSD中,分为静态显示和动态显示,静态显示是指不需要改变的字符或者是图标等,比如“亮度”这2个字符就是不需要改变的;动态显示是指“亮度”的值就是需要动态改变的,其所动态改变的值是通过MCU对字符索引内存模块中的索引表改变实现的。如果是静态显示,直接进入步骤S270;如果是动态显示,进入步骤S260。需要说明的是,在一个OSD显示过程通常也既包括动态显示和静态显示,其中静态显示进入S270步骤,动态显示进入S260步骤在进入S270步骤,最后同时实现显示输出。
S260,MCU访问字符索引内存模块,修改数据。
在该步骤中,通过MCU160访问字符索引内存模块,例如图像参数需要调整,字符索引内存模块中的“图像”所对应的字符库的字符索引的索引页的可以修改,通过修改图3所示的Bit0-23中某一位或者某几位数据,可以实现参数修改。修改成何值(Bit 15~Bit23)就是由各个模块软件写入到公共区内存单元的值决定的。
S270,OSD控制器从内存模块中调用OSD数据。
在该步骤中,不论是动态显示还是静态显示,都需要通过OSD控制器170,从各内存模块中调用在屏显示所需要的数据,OSD控制器170中具有寄存器,在本实施例中,依次归纳出341个OSD控制器的寄存器为7类,分别为颜色查找表类、窗口类、图标类、矩形类、字符类、MEM访问类、控制和状态类。其中字符类的部分属性在字符索引中。通过寄存器设置,可以实现按字符单独处理模式、图标单独处理模式、开窗独立处理模式、矩形独立处理模式等调用OSD数据。这些所调用的用于动态显示或者静态显示的OSD数据,经过OSD控制器处理。其中对于图标显示,在本实施例中,采用8色图标和5个颜色查找表结合的方式显示,颜色查找表存储于OSD控制的寄存器中,一个颜色查找表对应主菜单中的一个图标,这样图标最多可以显示5×8=40种颜色,存储时每一像素只用3bit表示。而如果5个图标合用一个颜色查找表,那么所有图标一共才有8种颜色。一个查找表,若要达到40种颜色的效果,存储时必须每一像素用5bit才行,这样才有2的5次方=32色,需要很多的内存存储位图图标数据。因此通过多个颜色查找表与图标结合的方式,可以节约内存使用。
S280,组织输出至显示器。
在该步骤中,OSD控制器组织输出至显示器,在该实施例中,还在屏显示信息一般和数字电视图像信息混合输出,因此OSD控制器会输出至混合模块180再输出至显示器。
至此,一个在屏显示方法过程结束,对于同一数字电视系统的多个在屏显示过程,可以重复步骤S220至S280实现。
在不偏离本发明的精神和范围的情况下还可以构成许多有很大差别的实施例。应当理解,除了如所附的权利要求所限定的,本发明不限于在说明书中所述的具体实施例。