舰用PS/2键鼠切换模块设计与实现中FPGA和ARM的应用

2021-11-03 06:41海军装备部驻连云港地区军事代表室张志华
电子世界 2021年19期
关键词:键鼠主键枚举

海军装备部驻连云港地区军事代表室 张志华

江苏自动化研究所 蔡欣荣 刘青春

基于FPGA和ARM的舰用PS/2接口协议键盘、鼠标切换模块,采用FPGA作为PS/2接口协议编解码及PS主机和PS/2设备数据传输芯片。ARM作为主控芯片,接收按键或者远程软件切换操作命令,控制FPGA切换相应的主机和设备连接。模块实现1至2路PS/2键鼠,1至4路主机的任意切换。通过测试和应用,模块能够实现2路PS/2键盘、4路PS/2主机的任意切换。

舰用显控台环境下,很多键盘、轨迹球(鼠标的一种)模块仍使用PS/2接口协议,为了满足一套键盘、轨迹球能够操控显控台的所有计算机,一般在台体上安装键盘、鼠标及显示器切换模块,俗称基于PS/2协议的KVM切换器。传统的PS/2协议KVM切换器有多种实现方案,有采用机械开关或电子开关实现物理通道切换或连接,有采用FPGA或专用切换芯片。采用电子开关芯片或机械开关,设备加电后,通过开关连接实现计算机和键盘、鼠标通信。如果要切换到另外一路主机,只需要控制电子切换开关或者拨动机械开关,显控台上电时,首先要确定加电的计算机和PS/2设备逻辑或物理通道要连接上,如果某路计算机上电时,没有识别到PS/2键盘鼠标设备时,那么系统在运行过程中,即使再接入PS/2键盘鼠标也不能被识别。同时机械开关或电子开关切换过程存在抖动,造成信号干扰或误触发。另外一个问题是传统的PS/2切换模块只能接入1路PS/2键盘鼠标,如果用户需要扩展一路备用商用调试键鼠,传统的PS/2协议切换器也不支持。

舰用环境下,须要设计一种舰用PS/2协议键鼠切换矩阵,支持两套键鼠设备的接入,即支持主键鼠、备用键鼠,备用键鼠主要是调试或诊断时接入使用;同时支持最少4路计算机,主键鼠、备用键鼠通过按键或者软件协议可以任意切换至某路计算机,当周围存在电磁干扰时,电路能够滤除干扰信号,提取有效信号。设备加电后,模块能够自动实现下行PS/2键盘鼠标的识别、上行PS/2主机控制器命令解释,PS/2键鼠设备和主机之间的通路连接。

1 PS/2协议键鼠切换模块整体结构

舰用显控台一般有时安装多至4路计算机主板,显控台面安装一套PS/2键盘、轨迹球模块。轨迹球是一种特殊的鼠标设备,依靠球体转动实现操作系统桌面定位的装置,接口通讯协议同鼠标。其使用灵活性没有鼠标高,但是适用于舰船、战车等颠簸环境下。为提高系统的可靠性和灵活性,支持主键鼠、备用键鼠两套PS/2接口,主、备键鼠均为PS2接口,初始时主键鼠、备用键鼠都呈“断开”状态,待切换后与设备连接,任一设备同一时间可以使用一套键鼠或者两套同时使用(主键鼠或者备用键鼠),由外部按键或者软件通信进行切换。主键鼠通常就是台面安装的PS/2键盘、轨迹球。台面留有备用键鼠PS/2接口,便于接入通用PS/2接口键盘或者鼠标。图1是本文实现的PS/2接口协议键盘、鼠标切换模块组成框图。

图1 基FPGA和ARM的PS/2接口协议键盘、鼠标切换模块结构框图

2 硬件实现

硬件部分主要由四大部分组成:(1)PS/2接口信号转换电路;(2)FPGA逻辑电路;(3)ARM主控、按键控制电路;(4)外围辅助电路,包含电源电路、信号指示电路、JTAG下载电路等。下面叙述了前三部分电路。

2.1 PS/2接口信号转换电路设计

PS/2键鼠切换电路包含4路主机和2路设备接口。每路主机或设备各包含1路PS/2协议键盘、PS/2协议鼠标接口。PS/2键盘鼠标接口是开漏(集)输出,需要上拉1kΩ~10kΩ电阻,输入输出接口首先要经过ESD防护芯片,保护板卡后端电路不被静电损坏。IDTQS3861QG是双向电压转换芯片,该芯片的VCC是通过5V串接一个二极管供电的,二极管1N4148正常压降在0.7V左右,VCC在4.3V左右,当两边数据管脚的电压小于VCC-1.0V(3.3Vdc)时,左右电压一致,当任何一边的电压高于VCC-1.0V时,对应输出边的电压维持在VCC-1.0V,当然每边的管脚最高输入电压都不能超过7.0V。2路主机PS/2接口电路见图2,另主键鼠、备用键鼠设备端PS/2接口电路相似。经过电压转换芯片的PS/2接口信号直接进入FPGA芯片,PS/2接口信号是双向信号,主机具有高优先级,可以任意时刻发送数据给设备,一般显控台上电后主机发送数据给设备,完成设备的初始化。初始化完成后,大部分情况下都是设备上传键鼠数据给主机,少部分情况主机发送点灯数据给键盘。

图2 2路主机PS/2接口电路

2.2 FPGA逻辑电路

如图3所示,FPGA芯片选用Altera公司的EP4CE15E22I7芯片,该芯片是144个管脚EQFP表贴芯片,最大有81个IO管脚供用户使用。该芯片含有15408个LE逻辑单元,每个LE逻辑单元包含一个四口输入LUT查找表和一个可编程的寄存器。选用这个芯片的依据是逻辑资源的用量,考虑到四路主机,每路主机包含2个PS/2接口,每路接口要识别相应的上行主机接口命令并响应。两套键鼠,每套键鼠包含2个PS/2接口,共4个PS/2接口,每路PS/2接口需要和对应的下行设备通讯,完成相应接口键鼠的识别和数据收发。FPGA芯片内部还有相应的FIFO电路,实行对应数据的存储转发,还有键盘Lock灯的存储和转发逻辑。实际使用中,经过编译只用了70%左右资源,为后期功能扩展提供了很大的便利性。FPGA外接一路Uart接口,可以根据ARM的指令,实时监控PS/2主机端某路或设备端某路的收发数据。

图3 FPGA逻辑电路框图

2.3 ARM主控、按键控制电路

如图4所示,ARM主控芯片选用ST公司的STM32F103VCT6芯片,这是Cortex-M3架构芯片,是目前最通用的ARM处理器之一,片内集成大量的通用外设,不需要用户再扩展外部芯片,国内多个厂家提供了大量的参考程序,主要有库函数版本、寄存器版本等。

图4 ARM主控、按键及指示电路

按键部分一端接信号地,另一端接入ARM芯片,ARM芯片内部上拉信号使能,并打开相应的中断线,当按键接触后,ARM输入端采集到低电平信号中断响应,并根据FPGA和ARM之间的逻辑判断,点亮相应的指示灯。ARM外接一个Uart端口,与外部设备扩展通信使用。

四路主键鼠按键,按下某路按键后,如果该路主机、该路设备均可满足切换要求,原先主键鼠和主机的连接关系切断,熄灭该路指示灯。切换至新的主键鼠和主机连接,同时点亮按键指示灯。满足切换要求指的是要切换到的主机上电且已完成初始化,同时主键鼠或备用键鼠也完成初始化。如1、2、4路主机已上电并系统启动完成,主键鼠接入,备用键鼠未接入。此时按第3路主键鼠按键,第3路主键鼠按键指示灯点亮,同时主键鼠可以操控第3路主机,如果此时按下第4路的备用键鼠按键,没有任何相应,因为备用键鼠未接入,一般要求主键鼠或备用键鼠接入时键盘、轨迹球都要接入。

3 软件设计

3.1 PS/2接口协议分析

PS/2鼠标和键盘是一种双向同步串行协议,键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备。但主机总是在总线上有优先权,它可以在任何时候抑制来自于键盘/鼠标的通讯,主机只要把时钟拉低即可。由于PS/2接口协议并不是一个十分标准的协议,这里我们按照一般的设备设置,将时钟频率设置为12.5MHz。这里需要主机,不管通信方向是从主机到设备还是从设备到主机,时钟都是由设备产生。

(1)PS/2设备到主机通讯协议分析

从键盘/鼠标发送到主机的数据在时钟信号的下降沿,即当时钟从高变到低的时候被主机读取。PS/2设备到主机通讯过程如图5所示。

图5 PS/2设备到主机通讯过程

PS/2设备要向主机发送数据时,首先检测时钟、数据线是否都是高电平,以此来判断主机是否需要对设备进行通信。如果时钟数据线都为高,PS/2设备先将数据线拉低,之后产生时钟下降沿以产生一个Start信号,通知主机数据发送开始。主机在每个时钟的下降沿读入数据,并在读取8 bit的data后校验设备发来的奇偶校验位,最后产生一个Stop停止信号完成本次设备到主机的通信。PS/2接口协议键盘输入y按键,y按键第二套键盘扫描码按下通码是0x35,断码前面加一个0xf0。主鼠标在上电后,FPGA首先要初始化鼠标,之后鼠标才能正常发送数据给FPGA。

(2)PS/2主机到设备通讯协议分析

从主机发送到设备的数据在时钟信号的上升沿,即当时钟从低变到高的时候被设备读取。PS /2主机到设备通讯过程如图6所示。图6是PS/2主机到设备通讯过程主机要向PS/2设备发送数据时,首先将时钟信号拉低100us以上,然后拉低数据线产生一个Start起始信号。当设备检测到这个状态后,将开始产生时钟信号,并且时钟脉冲标记下输入八个数据位、一个奇偶校验位和一个停止位。之后拉低数据线产生一个Ack回应位,以应答主机,表明数据已收到。最后拉高数据线完成本次主机到设备的通信。PS/2主机到设备通讯各时间参数可以参考PS/2接口协议。

图6 PS/2主机到设备通讯过程

3.2 PS/2设备侧初始化流程

PS/2设备键盘、鼠标必须初始化才能正确工作,PS/2键盘有默认工作状态:默认的机打延时、默认的机打速率、默认的Lock指示灯点亮状态。一般默认的机打延时和机打速率都需要重新设置。如果不设置,PS/2键盘可以按照默认参数上传按键数据并和主机交互点亮Lock指示灯。PS/2鼠标必须初始化相关的参数,才能正确工作,不然不会发送数据给主机。

(1)PS/2键盘设备初始化流程

这是常用的PS/2键盘上电后初始化时间序列,主要初始化键盘的机打速率、机打延时、Lock灯的点灭设置。可以设置点亮也可以设置点灭Num Lock灯,设置完成后,键盘即可按照第二套键盘扫描码发送和接收数据。特别注意引导键盘进入reset模式后,需要至少等待500ms,才能发送下一条设置语句,不然很容易收到键盘的错误反馈码。

(2)PS/2鼠标设备初始化流程

PS/2鼠标和PS/2键盘在初始化方面有区别,PS/2键盘不初始化也能发送按键值给上位机,但是PS/2鼠标不行,必须经过初始化才能将鼠标位移数据、左中右按键状态发送给主机。PS/2鼠标的初始化时间序列,按照此时间序列进行,才能正确识别带有滚轮的鼠标。

3.3 PS/2主机侧初始化流程

PS/2主机初始化流程包含PS/2键盘接口、PS/2鼠标接口的初始化。FPGA被动分别接收主机发送过来的指令并响应,将响应数据发送给主机。

(1)PS/2键盘主机接口初始化流程

舰用计算机主板上电后,FPGA逻辑芯片状态机按照上位机发送的不同指令分别响应。

(2)PS/2鼠标主机接口初始化流程

舰用计算机主板上电后PS/2鼠标接口的发送序列,FPGA逻辑芯片状态机按照上位机发送的不同指令分别响应。一般情况下,上电POST自检密码或者BIOS密码敲入之前没有任何命令交互。

3.4 模块工作流程

基于FPGA的舰用PS/2键盘鼠标切换模块上电后,ARM程序为切换指令主动发起者,实施相应的切换操作并点亮指示灯。只有完成上电并且枚举识别的主机、完成枚举识别的设备才可以切换。如果某路主机没有上电或者枚举失败,发送切换指令,不能成功切换至该路主机。如果键鼠设备某路不能识别,该设备也不能切换,不能切换成功的指令仍维持上次的状态结果,若成功切换后点亮该路指示灯。设备上电前,要求键盘鼠标都要连接上。ARM切换功能子函数见下述流程图7(a)。

FPGA程序功能:(1)识别主机接口键盘、鼠标的指令,完成主机的枚举识别;(2)识别设备接口键盘、鼠标的指令,完成两路键盘、鼠标的枚举识别;(3)响应ARM切换操作指令,完成切换数据流的连接;(4)响应ARM切换状态查询,能够实施监控切换过程中的各状态量。FPGA主机键盘、鼠标各子程序见下述流程图7(b)、(c)。FPGA程序持续检测主机是否上电,如果主机上电,FPGA初始化模块开始工作,分别模拟设备与主机侧进行初始化、模拟主机与设备侧进行初始化。FPGA主机键盘、鼠标功能函数有区别,键盘数据有上行、下行,枚举完成后下行通讯主要是主机发送点灯码数据给设备。而主机鼠标接口完成枚举后,一般不再发送数据给设备,只有设备发送位移和按键码数据给主机,如果有特殊指令如初始化指令,由FPGA的IP核应答主机。PS/2设备端键盘接口功能主要完成键盘设备的枚举,响应键盘的点灯指令,发送键盘数据至连接的主机键盘接收FIFO队列中。PS/2设备端鼠标接口功能主要完成鼠标设备的枚举,完成枚举后,使能鼠标设备,即时将鼠标位移数据、左中右按键数据发送至连接的主机鼠标接收FIFO队列中。因功能不复杂,这里不再给出流程图。

图7 基于FPGA和ARM的舰用PS/2键鼠切换模块工作流程图

4 模块测试及应用

基于FPGA和ARM的舰用PS/2键鼠切换模块电路,实际使用时主键鼠、备用键鼠至少连接1路,4路主机至少连接1路。测试时,2路设备端(各包含键盘、鼠标)全部连接,4路主机端(各包含键盘、鼠标接口)全部连接。设备端键盘、鼠标要求都必须连接。4路主机分别为服务器1、服务器2、外接设备1、外界设备2。

模块的测试项包括:(1)主机开机后能否切换;(2)主机不加电能否切换;(3)设备未连接能否切换;(4)键盘切换后指示灯状态是否随即更新;(5)鼠标、键盘按键动作过程时切换是否出现故障等现象。

计算机通过串口和模块控制板连接,点击应用软件的按钮,可以将主键鼠或备用键鼠切换至任意某一主机,需要注意的是某路主机没有开机或枚举失败,主键鼠或备用键鼠不能切换至该路主机。某路设备没有接入时,设备也不能参与切换。切换不成功时,维持上一个状态。系统应用时,需要注意的是切换过程中尽量避免按键、鼠标有动作,容易丢失数据。

总结:本文实现了基于FPGA和ARM的舰用PS/2键鼠切换模块,通过按键或者远程软件操作,实现2路PS/2键鼠,4路主机的任意切换。模块支持2路或1路键鼠,1路至4路主机的任意裁剪使用。经过一段时间的舰用环境下运行和操作,该模块运行可靠稳定。基于PS/2接口协议的键鼠切换模块设计与实现推进了舰用装备PS/2接口协议操控部件的改造、加装及共享。

猜你喜欢
键鼠主键枚举
基于Go 实现的分布式主键系统研究
基于理解性教学的信息技术教学案例研究
一种高效的概率图上Top-K极大团枚举算法
基于外键的E-R图绘制方法研究
基于USBD12和加速度计的空中键鼠
基于太阳影子定位枚举法模型的研究
数据库主键设置探讨
USB开发中易混淆的概念剖析
99元的2.4GHz无线享受
罗技G1 PK 双飞燕全速-冲锋王