1 引言
现代社会计算机的普及和应用越来越广泛,随之而来的管理和维护的工作量也越来越大。尤其是对于安全性和方便性有特殊要求的场合,如服务器机房,如果每台电脑都配备一组专用的鼠标、键盘和显示器将导致布线复杂,且容易带来管理上的混乱,同时也浪费空间和资金,于是在大型机房中KVM设备被广泛应用。
KVM,即键盘(Keyboard)、显示器(Video)和鼠标(Mouse)的缩写。KVM技术的核心思想是:通过配置适当的键盘、鼠标和显示器,实现系统和网络的集中管理和提高可管理性,提高系统管理员的工作效率,节约机房面积,降低网络工程和服务器系统的总体拥有成本,还可避免多显示器产生的辐射,营建健康环保机房。图l为通过一套KVM在多个不同操作系统的主机或服务器之间进行切换示意图。
传统的KVM监控系统对各个主机或服务器之间的切换是通过硬件电路来实现的,如果控制的端口数目较多,则硬件切换电路将增多,从而使得硬件部分占用空间增大,增加生产成本。为此,引进一种OSD芯片,通过设计OSD选单实现对KVM系统的各个端口软件控制办法,从而避开用硬件电路的诸多不利因素。
2 OSD与KVM架构
基于OSD的KVM系统控制器一般由被控I/O接口、控制转换器部分和控制台接口3部分组成。下面以图2所示8选1 KVM结构系统为例,分别介绍各部分的工作原理。
被控I/O接口部分,主要是各种接口端,如8个VGA端,USB接口端。很多工程实际处理时,一般把经过FP-GA处理过的键盘和鼠标信号的合成信号(USB信号),通过VGA信号电缆的4个引脚Pl,P9,P10,P11,接到各个服务器客服端的USB口,实现信号的输入输出,可节约输入输出口线。
控制转换器部分,主要是由MCU单片机和FPGA系统对相关信号完成控制和转换。FPGA系统主要有两方面的作用:一是协议转换,即把控制台输入的键盘鼠标PS/2信号转化成LJSB信号供选定的通道用,中间用到了CPRESS公司的CY63813芯片;另一个作用是把控制端键盘输入的各种控制命令截获并解析出来,再传给805l单片机以供其控制OSD芯片用。8051单片机和OSD芯片组成的控制器部分主要作用有:一是接收键盘上传过来的各种控制命令;二是通过模拟I2C接口控制OSD芯片的驱动和显示功能;三是根据接收到的命令控制各种逻辑芯片,完成相应通道的选择和切换工作。不过,要注意的是,在OSD选单设计中需要存储大量代码和系统运行时设置的各种参数,需要大量的存储器。本系统基于电路简单和可靠性,选择了片内具有32 Kbyte FLASH和16 Kbyte E2pROM的STC89C58单片机。
控制台接口部分,主要是一套VGA显示器、PS/2键盘和PS/2鼠标接口。通过这些设备的输入输出,可切换到不同的通道,从而实施对各个通道的监控和控制。
3 OSD芯片
3.1 OSD的主要实现方法和类型
目前有两种主要的OSD实现方法:外部OSD产生器与视讯处理器间的叠加合成;视讯处理器内部支持OSD,直接在视讯缓冲存储器内部叠加OSD信息。
外部0SD产生器与视讯处理器间的叠加合成原理是:由一个MCU内建的字符产生器及显示缓冲存储器,利用快速消隐(Fast一Blank)信号切换电视的画面和OSD显示内容,使OSD的字符等内容叠加在最终的显示画面上,在OSD和显示画面叠加处理过程中,通过调整两者之间的比例,可实现OSD的半透明(Blending)效果;对OSD信号中的红绿蓝信号,另外一种实现方法是:视讯处理器内部支持OSD,直接在视讯缓冲存储器内部叠加OSD信息,因这一类视讯处理通常具有外部内存或内部少量的行缓冲存储器,同时具有OSD产生器,故OSD的合成和控制可直接在视讯缓冲存储器内完成,同样具有上述的半透明和颜色控制功能。
3.2 MTV018原理
本实验中采用的OSD芯片是世纪民生公司的MTV018,其实现原理是上文的第一种方法。
MTV018是一款用于(内置字符显示控制)监视器的OSD显示芯片。字符显示可通过12C和SPI总线与。MCU的连接控制,通过串行总线可控制MTV018实现字符边缘、阴影、闪烁、双倍字符(字符的高度和宽度)、字符颜色控制、显示位置控制、字符水平显示分辨率和窗口控制等特殊效果。除此之外,MTV018能输出8位分辨率的8个通道的PWM D/A脉冲信号,可用来控制图像的对比度、颜色、音量、色调等。图3和图4分别是其方框图和引脚图。
4 OSD选单的设计
本系统设计的核心之一就是OSD芯片的驱动问题,其工作主要包含两部分,即硬件设计部分和软件驱动部分。其中:硬件电路是OSD系统稳定工作的前提和基础;软件部分的设计是OSD系统稳定运行、无视觉延迟效果和流畅工作的核心。
4.1硬件电路的设计
图5是本系统中OSD芯片MTV018的相关配置电路。其中:引脚P1~P4主要用来设置内部PLL模块,以使系统正常工作;P7和P8是与8051单片机构成I2C通信接口;P5和P18作为行、场信号的输入端口以同步P23,P22,P21,即RGB 3种颜色信号的输出;P9一P16是PWM输出引脚,可用来调整亮度、对比度等;最关键的是P20脚,即快速消隐输出脚,也就是利用这个引脚输出频率极高的方波信号控制逻辑切换芯片(如4053),从而对OSD输出的RGB信号与VGA显示器输出的RGB信号进行切换。
4.2 OSD选单功能
一般的OSD选单主要包括6个子选单项目:F1:GO-TO;F2:SCAN;F3:UST;F4:QVIEW;F5:EDIT;F6:SET。下面分别介绍各个子选单功能。
F1:GOTO的功能是实现快速的切换,其切换方式一般可按通道名字或通道号。
F2:SCAN的功能是实现本系统8个通道的轮流自动切换,每个通道的轮流显示时间是可控的,同时可按Backspace键退出循环扫描状态。
F3:LIST的功能是按照一定的显示方式,把相应通道的状态显示在控制台端的显示器上,以供监控员查看。其显示方式一般有:NAME,QVIEW,POWER 0N以及它们的一些组合方式,可便于监控员查看各个端口的状态。 F4:QVIEW(quick view)的功能是为某些特殊的通道设置一种人为的标志,便于快捷查看和切换到这些特殊的通道上。
F5:EDIT的功能是创建或更改某个通道的名字,便于监控员记忆和操控。
F6:SET的功能是设置OSD选单的显示参数和操作键参数。如OSD选单激活方式的快捷键的选择、OSD选单的显示位置、密码设置、Flash擦除等操作。
4.3 OSD选单设计的关键点
OSD选单的设计是很多OSD硬件工程师都头痛的事情,因为OSD选单的代码量较大,一般都有好几千行,如果不构造好OSD的数据结构,以后的移植工作或维护将相当困难。
为此,常用两种策略:
策略之一是定义好一个结构体,定义如下
以上即为每一页的结构体数据,然后给各个选单页预先编好号码,形成这样一个结构体数组,从而根据选单页的编号来实现各个页面的切换。但是这种办法不利于扩展和移植,例 如,某程序需要增加子选单页数,就必须重新编号,从而增加了设计中不必要的工作量。策略之二是使OSD的数据独立与代码分开。定义OSD的数据结构时,要把OSD显示的所有要素考虑进去,这样,仅仅依据数据就能把OSD画面重现。另外,在各状态下要按什么键,下一步该怎么操作,都在数据结构中描述出来。这样才能支持OSD数据和代码的独立。同时辅以相关函数指针,以实现在各个选单中的跳变。本系统采用的就是这种方式,其结构体定义如下
再定义一个结构体数组struct MenuIternType idata MenuItem[8],以及一个全局的函数指针void(*PtrFun)( ),以实现对各个选单页的跳变。
5 小结
笔者按以上的分析,设计了一个8选1的KVM系统,经过调试发现:OSD选单能实现对KVM系统的准确控制,同时使OSD画面更为清晰,并且OSD选单页在各个页面的切换更为流畅,毫无视觉迟滞的感觉。通过这样的OSD选单设计,完成了原先的设想,达到了准确、美观和节约成本的目的。