0 引言
PC机的开放体系结构使得有更多的厂商能够参与计算机部件的生产,参加标准的制定。在PC机图形显示领域的早期,IBM推出的VGA标准成为默认的行业标准,但随后一段时期,其他厂商生产的VGA显示卡虽兼容了IBM VGA的BIOS和寄存器,却加入了扩展功能,当时,出现了众多具有更高分辨率、更多色彩甚至附加图形处理功能的显示卡-Super VGA显示卡。
当时,对于Super VGA显示卡的软件开发者而言,他们却要面对非常严重的问题:由于没有硬件设计标准,软件开发者面对着各种完全不同的Super VGA硬件结构,而且,由于没有统一的软件开发界面,在程序开发中必须解决软件兼容不同显示卡的问题,随之而来的是,对于某一具体的Super VGA显示卡,除了一些特定的软件可以得到制造厂家提供的显示驱动程序支持,几乎再没有什么软件包可以利用Super VGA带来的能力和优点。
VBE标准的制定就是要改变这种困境,作为各种Super VGA显示卡的统一软件接口,它可以使应用软件和系统软件在较大的范围内利用扩展VGA可用的优势。
本文先简单介绍VBE标准,然后结合一个具体设计,给出如何利用VBE标准实现遥感图像实时滚动显示。
1 VBE标准
VBEl.0提供了基本信息查询、显示方式信息查询、设置显示方式、返回当前显示方式、保存/恢复视频状态等几项基本功能,定义了有限的几种扩展显示模式。
VBEl.1增加了设置/获取逻辑扫描线长度等功能,并增加5种显示模式和新的显示方式参数。
VBEl.2增加了对调色板设置的接口及更多的显示模式和显示方式参数。
VBE2.0增加了对线性帧缓存和保护模式的支持等。
VBE3.0扩充了过去版本中的许多功能,实现了刷新率、点时钟、硬件帧切换等。由于篇幅所限,这里只对被硬件厂商广泛支持的VBE-2.0标准定义的软件接口做简单介绍。
标准VGA的BIOS是通过中断lO来调用的,而VBE是通过中断4F,通过设置不同的功能号调用该标准的不同功能:
(1)功能调用00H--基本信息查询
可返回VBE版本号、OEM名字,显示视频环境能力、支持的显示方式、显示存储器数目等信息。
(2)功能调用01H--显示方式信息查询
可返回特定显示方式的具体信息,包括显示方式属性、主机视频窗口属性、功能调用入口地址、分辨率、像素位数、显示存储器分块数、分块长度等。
(3)功能调用02H--设置显示方式
设置显示方式。
(4)功能调用03H--返回显示方式
返回当前显示方式。
(5)功能调用04H--保存/恢复视频状态
保存/恢复视频状态。
(6)功能调用05H--主机视频窗口控制
设置主机视频窗口在显示存储器中的位置。
(7)功能调用06H--设置/获取逻辑扫描线长度
通过对子功能的控制实现设置或获取逻辑扫描线长度。
(8)功能调用07H--设置/获取显示起始地址
通过对子功能的控制实现设置或获取显示的起始地址。
(9)功能调用08H--设置/获取调色板格式
通过对子功能的控制实现设置或获取调色板格式。
(10)功能调用09H--设置/获取调色板数据
通过对子功能的控制实现设置或获取调色板数据。
(11)功能调用0AH--返回保护模式接口
返回保护模式程序接口。
2 遥感图像实时滚动显示系统的设计要求
遥感图像实时滚动显示系统具有以下特点:
(1)图像尺寸大,行像素点数多;
(2)图像滚动显示,速度快,每秒刷新行数较多;
(3)显示信息丰富,除显示动态图像外,还要能够在图像上叠加显示文字信息和网格信息;
(4)有良好的视觉效果,图像滚动显示不能有跳跃的感觉;
(5)基于可满足特殊环境要求的嵌入式平台运行。
基于上述设计限制,对动态图像实时显示系统显示速度的要求是比较高的。具体的技术指标如下:
输入数据率: ≤2.5Mb/s
输入每行像素数: 8192点/线
输入数据格式: 遥感图像+辅助数据
显示字长: 8bit
显示图像灰度级: 256
屏幕显示方式: 滚动显示
网状标尺叠加显示: 热键选择
辅助信息字符显示: 热键选择
图像显示模式:
A.高分辨率局部显示,行显示起始可选
B.抽样全局显示,行向8抽1,列向8抽1
要求实时显示系统在1024×768的显示模式下滚动显示图像的同时,在固定位置叠加显示的辅助数据字符和网格标尺。由于需要在全屏范围内叠加滚动的和静止的两种图像,在嵌入式平台的实现难度较大。
3 几种软件实现方案的对比
根据嵌入式计算机的显示卡性能和可利用的编程软件库,可以采用以下3种方式实现实时图像显示软件:
(1)基于帧切换
基于帧切换的滚动图像与静止图像叠加显示是通过类似电影放映的方式实现的,即由全屏图像构成一帧,许多这样的帧一起构成帧序列,通过在屏幕上顺序显示这些帧序列,就形成在图像滚动显示的同时叠加静止网格和文字。
按照实时显示的要求,基于帧切换的方法构成一帧时,首先要在后台显存中重建整个一帧的图像数据,然后将网格和文字写到显存的相应地址。这种方法的数据搬移量非常大,所需的显示内存容量很大,对显存的存取速度要求高。
(2)基于帧切换,并利用硬件二维加速功能
利用硬件二维加速功能实现帧切换,这种方法与上述方法类似,不同的是它利用了硬件的优势,即滚动显示的图像与静止的网格和文字分别存储于显示存储器的不同区域,在显示时由显示卡的硬件进行叠加,这样,对每帧图像的操作基本只集中在图像数据的存储区内。
此时,构成一帧的主要工作是重建整个一帧的图像数据,由于网格和文字存储于显存中的另一地址空间,一般情况下,仅需对个别文字进行操作。然而,这种方法的数据搬移量还是非常大,对系统内存寻址能力要求高,所需的显示内存容量更大。
(3)基于更改显示窗口在显存中的起始地址
在显示存储器中,屏幕上显示的仅是显存的一小部分。当设定显示模式后,可以把整个显示存储器看作是一幅纵向很长的画面,显示器作为一个窗口只显示了其中的一部分。我们可以通过更改显示窗口在内存中的起始地址的方法来改变屏幕上的内容,如果这种改变是顺序、连续的,在屏幕上就会形成滚动的图像。
每次输入的图像数据依次存储于显存中,再进行所需的处理(如添加纵向的网格线),当需要屏幕滚动时,首先更改显示窗口在内存中的起始地址,然后处理横向的网格线和文字,使它们在屏幕上处于正确的位置。这种方法的数据搬移量比较小,所需的系统内存和显示内存容量也很小,但这种方法的数据处理较复杂,在编程过程中需要考虑多种边界的影响。同时,当用户不需要显示网格线和文字时,恢复已被显示网格线和文字破坏的原图像数据的处理量是非常大的,是否能够实现取决于目标系统的系统内存和显示内存的存取速度以及编程语言的效率。
结合图像实时显示分机的技术指标,可以通过表1具体说明上述三种方法各自的优势及问题:
考虑特殊的环境适应性要求,动态图像实时显示系统的嵌入式计算机必须具有插针式的机械结构,同时还要具有很小的体积,并具各PCI接口。因此,考虑成本和体积限制,选择PC104plus结构的嵌入式计算机。这种结构的计算机的显示内存很少配置在2M以上,因此,利用硬件二维加速功能实现帧切换方法暂时不能应用。尽管可以得到2M显存的PC104plus计算机,但由于系统主频低,系统内存和显示内存速度慢,经过测试,基于帧切换方法只能达到25frame/s的显示速度,考虑图像数据输入所占用的时间,最多也只能保证15frame/s,这样的更新速度会造成图像闪烁,是不能接受的。
基于更改显示窗口在内存中的起始地址的方法可以通过VBE编程接口实现,具体如下:
4.1 目标系统
在目标系统中,与图像显示输出相关的部分是嵌入式计算机和集成在其上的显示卡,嵌入式计算机为PC104plus结构,具有PCI和ISA两种总线接口,其CPU为Pentium MMXl66,系统内存32M,显示控制芯片为M69000,显示内存2M。
4.2 图像实时显示软件
图像实时显示软件由数据读入、显示输出和显示控制三个模块构成,下面只对本文相关的显示输出模块进行介绍。
显示输出模块要实现在1024×768的高分辨率显示模式下滚动显示图像数据,同时叠加显示固定的辅助数据字符和网格,并可由操作员通过显示控制模块控制是否显示辅助数据字符和网格。在每次图像滚动时,显示输出模块需要完成以下操作:
(1)更改当前读写窗口;
(2)将读入数据写入显存的相应地址;
(3)写入纵向网格线;
(4)恢复原横向网格线上的图像数据(此期间需更改当前读写窗口);
(5)写入新的横向网格线:
(6)恢复原辅助数据字符上的图像数据;
(7)写入新的辅助数据字符;
(8)更改显示窗口在显存中的起始地址使屏幕滚动;
(9)重复(1)
4.3 性能
通过测试表明,每次滚动2条线,每秒可滚动120线,若每次滚动4条线,可以达到240线每秒,在这两种情况下,图像滚动时无明显跳动感。
5 小结
随着计算机技术的发展,VBE标准不断升级,最高版本是3.0版。同时,也派生出一些子标准,如VBE/AF、VBE/AI、VBE/PM等。然而,计算机显示系统的发展主流是向三维加速、立体显示等方向发展,这些主流发展方向的功能很多都得不到VBE的支持。但在一些特殊应用领域,VBE标准仍不失为一种适应高环境要求的动态图像实时显示系统的较好解决方案。