显示控制方法、系统及显示设备
技术领域
本发明属于多媒体控制领域,尤其涉及一种显示控制方法、系统及显示设备。
背景技术
目前,一般多媒体设备的显示部分可分为主控制芯片和显示模组两部分。主控制芯片包括处理器、图形引擎模块、视频编解码模块和显示控制模块,用于根据用户需求,将得出的图像数据按特定的接口协议发送给显示模组;显示模组包括显示屏和显示驱动芯片,主要用于根据特定的接口协议,接收主控制芯片发送的图像数据,并转化为屏幕的扫描信号。
随着微电子技术的发展,多媒体设备的主控制芯片已从ASIC(ApplicationSpecific Integrated Circuit:专用集成电路)发展到了基于AXI(Advanced eXtensibleInterface:高级扩展接口)总线的SOC(System On Chip)芯片,在SOC化的芯片中有一般都会带一个显示控制模块,用于把经过处理过的图像(例如解码模块解码出来的或图形处理单元画出来的图像等)从DDR(Double Data Rate:双倍速率同步动态随机存储器)读出送给显示模组。
主控制芯片SOC化,有效的减小了产品体积,降低产品开发周期,但同时也存在其局限性。由于显示控制模块中增加了AXI总线,显示控制模块从DDR中每读取一笔(burst)数据的延时(Latency)增加。会根据系统负载和总线频率状态的不同,出现不同程度的延时,从而使显示控制模块这样的实时(real time)业务模块的实时性得不到保证。
为解决该实时性问题,现有的SOC技术中,一般通过提高显示控制模块在AXI总线中的优先级、增加缓存(Cache)、以及提高AXI总线频率和总线数据位宽来解决时延的问题。以下为两种常用方式。
方式一:通过增加缓存来降低时处,如图1所示的主控制芯片架构图,主控制芯片109内包括显示控制模块107、高级扩展接口总线101、102和DDR控制器103、104,显示控制模块107与显示模块108相连。在主控制芯片的高级扩展接口AXI总线101、102上连接有两个DDRC103、104(DDR Controller:DDR控制器)分别与DDR105、106连接,设置其中一个专门用于显示缓存和某些多媒体应用,并在总线架构和显示架构作相应的优化来保证显示的实时性要求。
这种结构的不足之处在于:
1、使用双DDR以及相应的设计,显示缓存的增加会增加芯片的面积,提高了设计成本的同时,也增加了系统功耗,对于多媒体播放领域,特别是移动多媒体领域,如手机等,功耗问题不能为其所接受。
2、因为对显示架构与总线架构做了相应的调整优化,需要重新开发底层驱动以使其支持开放的操作系统,产品成本开销大。
方式二:在SOC主控制芯片的AXI总线中对显示控制模块设置高优先级来优先保证带宽,同时提高总线频率和数据位宽来提供绝对的带宽供应,以及提高显示缓存来保证显示带宽,从而保证显示不闪屏、不花屏。
这种方式存在如下不足:
1、显示控制器模块在AXI总线中的高优先级配置之后,显示控制模块占用了AXI总线的大部分高优先级请求的带宽,降低了DDR带宽的利用效率,为提高DDR带宽利用效率,需要让系统工作在较高的频率,这样必然会提升系统运行功耗。
2、由于显示控制器模块在AXI总线中的高优先级配置,在运行过程中肯定会影响其它实时业务模块的实时性,增加他们的延时,从而影响系统的整体效率。
发明内容
本发明实施例的目的在于提供一种显示控制方法、系统、装置及设备,在保证系统成本、实时性、系统运行效率的基础上,实现系统低功耗运行。
本发明实施例是这样实现的,一种显示控制方法,所述方法包括:
获取显示缓存状态值;
将显示缓存状态值与预先设定的显示缓存预警值进行比较;
根据比较结果调整未处理总线命令深度值。
本发明实施例的另一目的在于提供一种显示控制系统,所述系统包括:
获取单元:用于获取显示缓存状态值;
比较单元:用于将显示缓存状态值与预先设定的显示缓存预警值进行比较;
调整单元:用于根据比较结果调整未处理总线命令深度值。
本发明实施例的另一目的在于提供显示设备,包括上述显示控制系统。
在本发明实施例中,首先对显示缓存状态值进行数据采集,获得具体数值的显示缓存状态值,由显示缓存状态值所反应的当前负载的变化,将显示缓存状态值与预先设定的显示缓存预警值进行比较,根据比较结果可以判定当前负载所对应的显示缓存状态值是否正常,并相应的调整未处理总线命令深度outstanding值,使总线仍然可以将读取数据的命令发出,以保证显示带宽,有效的解决数据的实时性问题。而且该调整不会影响到总线其它命令的优先级,保证整个系统有效运行,和方式一相比,可避免增加其它器件所带来的成本和功耗的增加,另外,通过调整未处理总线命令深度值,和现有的增加总线频率相比,其功耗更小。
附图说明
图1是本发明现有技术提供的采用双DDR架构的主控制芯片框图;
图2是本发明第一实施例提供的显示控制实现流程图;
图3是本发明第二实施例提供的显示控制实现流程图;
图4是本发明第三实施例提供的显示控制系统框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术方案的不足,在本发明实施例中,提供了一种根据系统负载自动调整未处理总线命令深度Outstanding,从而保证高级扩展总线AXI总线工作在一个合理的频率,并且在有效保证显示带宽的实时性的同时,保证低的系统功耗。
本发明实施例所述的显示控制方法,包括获取显示缓存状态值,将显示缓存状态值与预先设定的显示缓存预警值进行比较,根据比较结果调整未处理总线命令深度值。采集显示缓存状态值,由显示缓存状态值所反应的当前负载的变化。所获得显示缓存预警值为具体数值,以便能与预先设定的显示缓存状态值预警值进行比较,将显示缓存状态值与预先设定的显示缓存预警值进行比较后,判断当前负载所对应的显示缓存状态值是否正常,如果负载过大,则增大未处理总线命令深度outstanding值,使总线仍然可以将读取数据的命令发出,只要控制发出的命令个数不大于所设定的未处理总线命令outstanding值,以保证显示带宽,有效的解决数据的实时性问题。而且该调整不会影响到总线其它命令的优先级,保证整个系统有效运行,和背景技术中所提的方式一相比,可避免增加其它器件所带来的成本和功耗的增加,另外,通过调整未处理总线命令深度值,和现有的增加总线频率相比,其功耗更小。
此处,关于未处理总线命令深度Outstanding,解释如下:
我们知道,在一般的控制读写过程中,在发出一个读数据控制命令后,即等待该命令所返回的数据结果。此处的未处理总线命令深度Outstanding,为总线向发送命令时,在未收到命令所返回的数据时,可以同时发送的命令的个数。通过提高未处理总线命令深度outstanding值,可以有效的减少其它命令的时延,从而在保证显示带宽的同时,让系统工作在一个合理的工作频率。
下面分别从显示控制方法、系统、装置分别对本发明的技术方案进行说明。
实施例一:
图2示出了本发明第一实施例中的显示控制方法流程图,详述如下:
在步骤S201中,获取显示缓存状态值。
具体的,对于同步FIFO(First In First Out,先进先出)缓存器,读取同步的写指针信号Wr_ptr[n:0]和读指针信号Rd_ptr[n:0],并送到比较单元中,在比较单元中,根据读写指针所指向的地址,得到显示缓存状态值Fifo_full_level[n:0]。
具体的,根据读写指针取得缓存状态为:当每一帧图像传输启动时,在消隐时间内预先把显示数据下载到显示缓存,当显示有效时间开始输出显示数据之后,显示数据按匀速带宽输出。读指针与写指针在对FIFO缓存读写时,其地址差取绝对值并判断读写指针先后,即可得到当前的显示缓存状态值,可用于表示显示缓存写入数据位数。当然,也可以用显示缓存空闲数据位数来表示,算法上用缓存容量与显示缓存写入数据位数即可得到,在之后实施例中所描述的比较时,也需要做相应的逻辑调整。
由现有技术中描述,对于异步FIFO同样可根据指针地址得出显示缓存状态值,在此不作重复赘述。
在步骤S202中,将显示缓存状态值与预先设定的显示缓存预警值进行比较。
具体的,预先设定的显示缓存预警值可由系统典型场景的系统级仿真中分析得出,当然还包括在产品调试时所作的测试记录对其进行微调,以得到最好的实施效果。
由步骤S201中得出的显示缓存状态值,即在写指针在读指针之前时,读写指针地址差的绝对值(当前显示缓存写入数据位数),将其与显示缓存预警值进行比较。
在步骤S203中,根据比较结果调整未处理总线命令深度值。
具体的,在系统上电时,未处理总线命令深度自动设置为典型值。
如步骤S202所述,当写指针在读指针之前时,取读写指针地址差的绝对值;当读指针在写指针之前时,取读写指针差值的绝对值再与显示缓存容量求差后取绝对值,显示缓存状态值与预先设定的显示缓存预警值比较,当显示缓存状态值小于预先定设定的显示缓存预警值时,控制未处理总线命令深度值为最大未处理总线命令深度值,若显示缓存状态值不小于预先定设定的显示缓存预警值,则控制未处理总线命令深度值为典型值。
此处所作调整的两个参数,典型未处理总线命令深度和最大未处理总线命令深度,可由系统典型场景的系统级仿真中分析得出,并且根据系统本身的设定来决定最佳值。另外也可以根据实际情况,设置多个未处理总线命令深度值,进行更加细致的调节,提高系统的运行精度。
如在本实施例中设置的典型未处理总线命令深度值为4,最大未处理总线命令深度值为16,根据系统的负载,对未处理总线命令深度在这两个状态间进行调整,保证系统显示带宽的同时,使显示正常。
在本实施例中,将系统负载的变化通过显示缓存状态值进行表示,并根据显示缓存状态值来调整未处理总线命令深度值,使得系统带宽得以保证,减少系统时延。整个过程不需要增加另外的设备成本,且基本上不会增加系统功耗。
实施例二:
图3为本发明第二实施例所示的显示控制方法流程图,详述如下:
在步骤S301中,配置显示缓存预警值、最大未处理总线命令深度和典型未处理总线命令深度。
在此实施例中,根据系统负载所反应的显示缓存状态值变化,通过调节最大未处理总线命令深度和典型未处理总线命令深度来保证显示带宽。
显示缓存预警值、最大未处理总线命令深度和典型未处理总线命令深度的设置,在实施例一中已有介绍,在此不作重复描述。
在步骤S302中,获取显示缓存空闲数据位数状态。
在实施例一中步骤S201所述方法,当写指针在读指针之前时,取读写指针地址差的绝对值后再与缓存容量取绝对值;当读指针在写指针之前时,取读写指针差值的绝对值,获取为具体数值的显示缓存空闲数据位数状态。
在步骤S303中,将显示缓存状态值与预先设定的显示缓存预警值进行比较。
在步骤S304中,根据比较结果调整未处理总线命令深度值。
由于得到的显示缓存空闲数据位数状态,在与预先设定的显示缓存预警值比较时作相应的逻辑调整:
当显示缓存空闲数据位数状态大于预先定设定的显示缓存预警值时,控制未处理总线命令深度值为最大未处理总线命令深度值,若显示缓存空闲数据位数状态不大于预先定设定的显示缓存预警值,则控制未处理总线命令深度值为典型值。
在步骤S305中,控制未处理总线命令深度值为最大未处理总线命令深度值时,若再次检测到显示缓存空闲数据位数状态大于预先定设定的显示缓存预警值,则调整总线频率。
此步骤的目的在于,对于负载增加的情况,采用调整控制最大未处理总线命令深度时,仍不能满足负载对显示带宽的要求时,通过总线适配器检测当前系统负载增加且不能满足当前的需求时,采用提高总线频率、牺牲功耗暂时来满足当前负载对系统的需求,如果负载减少,总线适配器检测到负载减少,则优先减小总线频率,优先减少系统功耗。在减少总线频率后仍然检测到负载减少,则进一步调整未处理总线命令深度值。
本实施例与实施例一的区别之处在于,比较的数据作了逻辑上的修改,采用显示缓存空间数据位宽状态。另外,对于负载增加,对于调整未处理总线命令深度值不能满足当前要求时,通过增加总线频率,来满足当前系统的要求。在负载减少时,通过检测的显示缓存空闲数据位数状态与显示缓存预警值比较,发出减少总线频率的控制命令,减少系统功耗。从而使本发明实施的适应性更强。
实施例三:
图4为本发明第三实施例给出的显示控制系统框图。
本发明实施例所述的显示控制系统,包括:
配置单元401:用于根据系统典型场景的系统级仿真得到较佳的显示缓存预警值、最大未处理总线命令深度和典型未处理总线命令深度,并可通过试验进行细微的调整。
获取单元402:用于获取显示缓存状态值。
所述获取单元402包括:
读取模块4021,用于读取显示缓存的读指针信号与写指针信号;
第一比较模块4022,用于比较读写指针指向的地址得到显示缓存状态值。
具体的,对于同步FIFO(First In First Out,先进先出)缓存器,读取同步的写指针信号Wr_ptr[n:0]和读指针信号Rd_ptr[n:0],并送到比较单元中,在比较单元中,根据读写指针所指向的地址,得到显示缓存状态值Fifo_full_level[n:0]。
具体的,根据读写指针取得缓存状态为:当每一帧图像传输启动时,在消隐时间内预先把显示数据下载到显示缓存,当显示有效时间开始输出显示数据之后,显示数据按匀速带宽输出。读指针与写指针在对FIFO缓存读写时,其地址差取绝对值并判断读写指针先后,即可得到当前的显示缓存状态值,可用于表示显示缓存写入数据位数。当然,也可以用显示缓存空闲数据位数来表示,算法上用缓存容量与显示缓存写入数据位数即可得到,在之后实施例中所描述的比较时,也需要做相应的逻辑调整。
比较单元403:用于将显示缓存状态值与预先设定的显示缓存预警值进行比较。
调整单元404:用于根据比较结果调整未处理总线命令深度值。
具体的,所述显示缓存状态值为:当写指针在读指针之前时,取读写指针地址差的绝对值;当读指针在写指针之前时,取读写指针差值的绝对值再与显示缓存容量求差后取绝对值,将显示缓存状态值与预先设定的显示缓存预警值比较;
所述调整单元用于当显示缓存状态值小于预先定设定的显示缓存预警值时,控制未处理总线命令深度值为最大未处理总线命令深度值,若显示缓存状态值不小于预先定设定的显示缓存预警值,则控制未处理总线命令深度值为典型值。
本实施例为本发明实施例一所对应的软系统,通过显示缓存状态值所表示的系统负载情况,对未处理总线命令深度进行调整,在保证显示带宽的同时,减少访问时延。
实施例四:
本实施例用于描述所述显示控制装置,包括:
显示缓存监控模块:用于监控显示缓存状态值,在获取了显示缓存状态值后,将其与预先设定的显示缓存预警值进行比较,并将比较结果发送至总线未处理命令深度控制模块;
总线未处理命令深度控制模块:接收由显示缓存模块发送的比较结果,根据比较结果,调整总线未处理命令深度的状态。
显示缓存监控模块根据显示缓存状态值反映目前总线上的系统负载状态,具体的实现方式如下描述:
1.把已经同步的Wr_ptr[n:0](写指针信号)和Rd_ptr[n:0](读指针信号)送到比较模块Compare中。
2.在比较器单元根据读写指针的比较而得出当前显示缓存的Fifo_full_level[n:0](水线位置的状态)信号输出给总线未处理命令深度控制模块。
3.另外需要帧同步信号(Vsync)等来控制每一帧状态的设置和清除。
总线未处理命令深度控制模块根据显示缓存控制模块输出的显示缓存状态值信号和配置的显示缓存预警值来调整直接内存访问DMA(Direct Memory Access)的最大未处理总线命令深度值的具体方式如下:
1.根据软件配置的显示缓存预警值Fifo_level_lim[n:0]和显示缓存监控模块输出的显示缓存状态值Fifo_full_level[n:0]的对比产生当前最大未处理总线命令深度Outstanding值Max_OSD[m :0]的选择信号。
Fifo_level_lim[n:0]>Fifo_full_level[n:0]时选择Max_OSD[m:0],此未处理总线命令深度Outstanding最大值需要根据自己的系统设计来决定最佳的值,本设计中采用的值为16。
Fifo_level_lim[n:0]<Fifo_full_level[n:0]时选择典型未处理总线命令深度Cfg_OSD[m :0],此未处理总线命令深度Outstanding最大值需要为软件配置的典型Outstanding值,本设计中采用了4。
2.根据比较模块(Compare)产生的选择信号Sel来选择Max_OSD[m :0]和Cfg_OSD[m :0]。
3.在直接内存访问控制器(DMA Controller)中根据得到的最大未处理总线命令深度Outstanding值和当前的数据请求状态把高级扩展总线AXI总线读取数据的命令发出,但发出的命令最大个数会控制在最大Outstanding值的范围内。
上述显示缓存状态值为读写指针地址差的绝对值,所述显示缓存监控模块用于将显示缓存状态值与预先设定的显示缓存预警值比较,判断当显示缓存状态值与预先定设定的显示缓存预警值的大小,所述总线未处理命令深度控制模块调节未处理总线命令深度值为最大未处理总线命令深度值或为典型未处理总线命令深度值。
另外,本实施例所述装置还包括变频总线适配模块,用于在控制未处理总线命令深度值为最大未处理总线命令深度值时,若再次检测到显示缓存状态值小于预先定设定的显示缓存预警值,则调整总线频率。如果负载减少,检测到显示缓存空闲数据位数状态大于预先定设定的显示缓存预警值,则优先减小总线频率,优先减少系统功耗,在减少总线频率后仍然检测到负载减少,则进一步调整未处理总线命令深度值。
本发明还提供了包括实施例3所述的显示控制系统的显示设备。
当显示设备上电之后根据应用程序的需求把处理好的需要显示的图像数据存放到与SOC相连的DDR(Double Data Rate:双倍速率同步动态随机存储器)中,CPU通知显示控制器把此图像数据读取并输出到显示模组,整个应用过程就是不断的重复此流程来实现,并在此显示流程中此发明会根据系统负载自动调整未处理总线命令深度Outstanding来保证显示带宽,同时保证高级扩展接口AXI总线工作在一个合理的频率达到合理的能耗比。此方案可用于在移动多媒体设备中播放视频,视频通话,玩2D和3D游戏,网页浏览等多种应用,但被发明不限于这些应用,在移动多媒体设备显示中的任何根据系统负载自动调整未处理总线命令深度Outstanding来保证显示带宽的流程都属于此发明。此发明应用移动应用处理器以外,标清和高清电视控制芯片,标清和高清机顶盒芯片,安全监控芯片等,任何多媒体设备中可应用此发明。
在本发明实施例中,根据显示缓存状态值所反应的系统负载状况,来调整未处理总线命令深度Outstanding来保证显示带宽的系统,在保证显示带宽的同时让系统工作在一个合理的工作频率上,保证显示不闪屏或花屏,用较低的成本实现了移动多媒体设备的高能耗比的显示方案。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。