首页> 中国专利> 基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验方法

基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验方法

摘要

本发明提供了一种基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验方法。该方法包括:实验者操作与终端相连的键盘或鼠标,FPGA在线实验平台的用户前端捕捉到键盘事件或鼠标事件后对其进行编码转换,转换成相应的PS/2数据,并根据预设通信协议对PS/2数据进行打包,得到PS/2数据包;然后将PS/2数据包发送给服务器,服务器转发给上位机;上位机根据预设通信协议对PS/2数据包进行解析得到PS/2数据,通过串口发送给主控FPGA;主控FPGA将PS/2数据分别发送至实验FPGA上模拟PS/2键盘或鼠标接口的特定引脚。本方法实现了基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验,扩展了FPGA在线实验平台的功能,丰富了FPGA在线实验项目的种类,提高了实验教学的趣味性。

著录项

  • 公开/公告号CN107562221A

    专利类型发明专利

  • 公开/公告日2018-01-09

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201710720445.0

  • 发明设计人 艾明晶;杨群芳;刘康旭;

    申请日2017-08-21

  • 分类号

  • 代理机构北京路浩知识产权代理有限公司;

  • 代理人王莹

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-06-19 04:17:49

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-15

    授权

    授权

  • 2018-02-02

    实质审查的生效 IPC(主分类):G06F3/023 申请日:20170821

    实质审查的生效

  • 2018-01-09

    公开

    公开

说明书

技术领域

本发明实施例涉及计算机领域和通信技术领域,更具体地,涉及一种基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验实现方法。

背景技术

FPGA(Field Programmable Gate Array,现场可编程门阵列)是一种可编程逻辑器件(Programmable Logic Device,PLD),用户可以根据自己的需要对其编程,自行定义其逻辑功能,从而实现预想的数字电路或数字系统逻辑功能。国外许多先进大学和国内部分高校在计算机或电子硬件类课程中,相继开展了与FPGA相关的理论教学和实验教学。在实验课程中,以FPGA实验平台为载体,通过各种不同内容、不同类型的实验,引导学生深化对理论知识的理解,学习掌握各种常用电路或系统的工作原理和设计方法。然而,与其它硬件类实验课程一样,FPGA实验教学通常只能在本地实验室里开展,受实验时间、实验场地、设备数量和实验形式等的限制,实验教学的灵活性不足,且存在昂贵的硬件设备利用率不高的问题。

远程控制实验系统是一种基于真实实验设备之上的,通过Internet和C/S(client/server,客户端/服务器)或者B/S(browser/server,浏览器/服务器)软件系统结构将数据采集、远程操作、远程监控等技术与实验平台有机地结合在一起,从而达到共享实验资源、远程进行实验操作等目的的软硬件结合实验系统。

随着远程实验系统的进一步发展,一些高校逐渐开始探索如何开发FPGA在线实验平台,实现FPGA在线实验,从而有效克服实验课受场地和时间约束的缺陷,激励学生自主学习、自发研究。

2008年,埃及的法尤姆大学和巴林的巴林大学建立了嵌入式硬件实验课程FPGA远程实验室(参考文献:Wael M EI-Medany.FPGARemote Laboratory for Hardware E-Learning Course.ComputationalTechnologies in Electrical and ElectronicsEngineering.2008,106-109)。实验者通过Web页面访问远程实验室,远程使用USB端口来配置FPGA芯片,并通过网络摄像头实时监视FPGA开发板。实验者可以通过Web页面给设计的输入端施加激励,并读出相应的输出数据,从而远程测试程序设计是否正确。但此种方式每块FPGA开发板需要配备一个摄像头,无疑会增加硬件成本,且设备占用空间大,尤其在面向大规模的实验者时。

2012年,黄帅等人提出一种基于C/S(Client/Server,客户端/服务器)技术的FPGA/CLPD实验系统(参考文献:黄帅,刘瑞通,李茜铭,李锶.一种C/S网络的FPGA/CPLD实验系统设计.电子技术,2011,(02):12-14.),能够较好解决贵重实验设备的共享。实验者在客户端PC机上完成实验程序的编辑、调试以及编程用目标文件的生成,然后通过C/S网络与服务器的通信实现目标文件的传输和下载;实验平台通过数字IC测试系统将FPGA/CPLD芯片端口的电平状态经服务器反馈给客户端;最后在客户端软件上根据端口电平的变化显示实验结果。但是,C/S架构模式的不足是要求每个客户端必须安装专用的客户端软件,不利于软件的维护和升级,因此,该系统只适于同一个学校内开展远程实验,并不适于城域网甚至世界范围内开展远程实验;而且该系统没有提供PS/2键盘鼠标接口,无法进行PS/2键盘鼠标控制类在线实验。

2016年,长沙理工大学电器与信息工程学院自主研发了FPGA实验虚拟仿真平台(参考文献:文卉,常晟,蔡志强.FPGA实验虚拟仿真平台建设的研究与实践.电子技术与软件工程,2016,(02):86-87.),该平台将FPGA开发板与计算机相连接,对计算机进行虚拟化处理;然后将相关测试仪器、其它实验设备与FPGA开发板连接好;最后实现仪器设备、FPGA开发板、计算机以及其它终端的网络连接,从而构建了一个基于虚拟仪器和远程控制的FPGA实验平台。学习者可以在宿舍或校外通过桌面云访问实验室内的计算机,利用计算机中的FPGA开发软件进行FPGA编程、下载和调试;并远程操作实验室内的各种仪器设备。但该系统并没有考虑对PS/2键盘鼠标接口在线实验的支持。

综上所述,目前投入使用的FPGA在线实验平台或者采用在FPGA板上安装摄像头设备来使实验者观察实验现象,或者采用C/S技术实现多用户共享实验设备,或者利用计算机虚拟化技术使实验者访问FPGA开发板,进行远程实验,但都存在着一定的局限性。而且,这些平台一般只提供了按键和拨码开关等常规的输入设备以及LED和数码管等常规的输出设备,并没有提供PS/2接口,不能支持PS/2键盘、鼠标这些特殊输入设备的在线实验。这在很大程度上限制了FPGA在线实验平台上进行在线实验项目的种类,降低了实验教学的趣味性。

此外,目前对PS/2键盘/鼠标接口的研究大多是在FPGA内实现PS/2键盘接口控制器或PS/2鼠标接口控制器,而且仅仅局限于本地硬件之间的数据传输,如何基于FPGA在线实验平台实现PS/2键盘鼠标接口在线实验的远程控制却鲜有研究。

发明内容

本发明实施例提供了一种克服上述问题的基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验方法。

一方面本发明实施例提供了一种基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验方法,所述方法包括:

S1,实验者通过终端登录FPGA在线实验平台,并在实验者使用与终端相连的键盘或鼠标进行实验操作时,FPGA在线实验平台的用户前端实时获取键盘事件或鼠标事件,进行编码转换,得到PS/2数据;

S2,用户前端根据预设通信协议对PS/2数据打包得到PS/2数据包,并将PS/2数据包经服务器发送至上位机;

S3,上位机根据预设通信协议对PS/2数据包进行解析得到PS/2数据,并将PS/2数据通过串口发送给主控FPGA;

S4,主控FPGA中的键盘接口控制模块和鼠标接口控制模块对PS/2数据进行识别,区分为PS/2键盘数据或PS/2鼠标数据,然后将PS/2键盘数据通过模拟PS/2键盘接口发送至实验FPGA,将PS/2鼠标数据通过模拟PS/2鼠标接口发送至实验FPGA;

其中,模拟PS/2键盘接口由主控FPGA分别模拟PS/2键盘数据线和PS/2键盘数据时钟线的2个特定引脚构成,模拟PS/2鼠标接口由主控FPGA的另外2个分别模拟PS/2鼠标数据线和PS/2鼠标时钟线的特定引脚构成,且PS/2键盘数据线、PS/2键盘时钟线、PS/2鼠标数据线和PS/2鼠标时钟线所对应的主控FPGA的4个特定引脚与实验FPGA的4个特定引脚相连。

其中,根据预设通信协议得到的PS/2数据包的格式为:

<PS2Send><MouseLength>A</MouseLength><MouseData>B</MouseData><KeyboardLength>C</KeyboardLength><KeyboardData>D</KeyboardData></PS2Send>;其中,

<PS2Send>、</PS2Send>为PS/2数据的发送标签,<MouseLength>、</MouseLength>为PS/2鼠标数据的长度标签,A为PS/2鼠标数据的长度,<MouseData>、</MouseData>为PS/2鼠标数据的内容标签,B为PS/2鼠标数据的内容;<KeyboardLength>、</KeyboardLength>为PS/2键盘数据的长度标签,C为PS/2键盘数据的长度,<KeyboardData>、</KeyboardData>为PS/2键盘数据的内容标签,D为PS/2键盘数据的内容。

其中,PS/2鼠标数据至少包括3字节;其中,

当鼠标不带滚轮时,PS/2鼠标数据大小为3字节,其中,第一字节中的第一位和第二位分别表示鼠标左键和右键的状态,第二字节和第三字节分别表示鼠标X轴的移动计量值和Y轴的移动计量值;

当鼠标带滚轮时,PS/2鼠标数据大小为4字节,其中,第一字节中的第一位、第二位和第三位分别表示鼠标左键、右键和中键的状态,第二字节、第三字节和第四字节分别表示鼠标X轴的移动计量值、Y轴的移动计量值和滚轮的计量值。

其中,PS/2键盘数据分为通码和断码,当一个键被按下或者按住不放时为通码,当一个键被释放时为断码,通码和断码的集合称为扫描码集,共有3种标准的扫描码集,所有现代的键盘都支持并默认使用第二套扫描码集。在第二套扫描码集中,普通的按键其通码为一个字节宽,断码为2个字节宽,且第一个字节是F0H,第二个字节是对应键的通码;但扩展键的通码是2个或4个字节宽,且第一个字节总是E0H。

其中,步骤S3中上位机根据预设通信协议对PS/2数据包进行解析得到PS/2数据具体包括:

上位机根据PS/2数据的发送标签获取PS/2数据包;

上位机根据PS/2鼠标数据的长度标签和PS/2鼠标数据的内容标签获取PS/2数据包中的PS/2鼠标数据,根据PS/2键盘数据的长度标签和PS/2键盘数据的内容标签获取PS/2数据包中的PS/2键盘数据。

其中,在步骤S1之前还包括:

S11,实验FPGA通过模拟PS/2鼠标接口向主控FPGA发送PS/2鼠标使能命令,主控FPGA通过串口将PS/2鼠标使能命令转发给上位机;

S12,上位机根据预设通信协议对PS/2鼠标使能命令打包得到PS/2鼠标使能命令数据包,并将PS/2鼠标使能命令数据包经服务器发送至用户前端;

S13,用户前端根据预设通信协议对PS/2鼠标使能命令数据包进行解析得到PS/2鼠标使能命令;

S14,按步骤S1-S4,从用户前端返回确认命令至实验FPGA。

本发明实施例提供了一种基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验方法,实验者使用与终端相连的键盘或鼠标进行实验操作,用户前端实时捕获键盘事件或鼠标事件,并将获取的数据转换为PS/2键盘和鼠标数据;再将PS/2数据按预设通信协议打包成PS/2数据包发送至上位机;上位机再按预设通信协议对PS/2数据包进行解析得到PS/2数据,并将PS/2数据通过串口发送给主控FPGA;主控FPGA通过模拟PS/2键盘和鼠标接口的4个特定引脚分别再将PS/2数据分别发送至实验FPGA,实现了终端键盘和鼠标与FPGA板的远程通信,进而实现了FPGA在线实验平台上PS/2键盘鼠标接口在线实验,扩展了FPGA在线实验平台的功能,在很大程度上丰富了FPGA在线实验项目的种类,提高了实验教学的趣味性。

附图说明

图1为本发明实施例提供的一种典型的FPGA在线实验平台整体架构示意图;

图2为本发明实施例提供的一种基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验方法的流程图;

图3为本发明实施例中用户前端到实验FPGA的数据传输示意图;

图4为本发明实施例中实验FPGA到用户前端的数据传输示意图;

图5为本发明实施例提供的一种PS/2鼠标初始化流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,典型的FPGA在线实验平台由硬件系统和软件系统两部分组成。硬件系统主要包括上位机和FPGA板,软件系统包括在线实验管理系统和上位机控制软件。

FPGA板是实验的硬件载体,它包括实验FPGA和主控FPGA,还有输入设备(例如:8个通用按键开关,64个拨码开关)和输出设备(例如:32个LED,8位7段数码管),以及一些外设接口(例如:2通道UART串口,1个VGA接口,2个PS/2接口,1个蜂鸣器等)。每个实验所生成的编程目标文件都下载到实验FPGA中运行。主控FPGA又称为在线接入控制器,它是上位机与实验FPGA之间的桥梁。一方面,主控FPGA模拟输入设备产生实际激励信号发送至实验FPGA;另一方面,主控FPGA将FPGA板上所有输出设备和外设接口输出的信号传送至上位机。

FPGA板上的所有输入设备、输出设备、外设接口的引脚分别与实验FPGA的特定引脚相连,这样,使得实验者可以通过引脚锁定,指定所设计电路中的输入信号与哪些输入设备相连,输出信号与哪些输出设备或外设接口相连,从而操作输入设备产生激励信号,完成实验,并将结果通过输出设备显示出来。

FPGA板上的所有输入设备、输出设备的引脚同时还分别与主控FPGA的特定引脚相连。当实验者在实验界面上操作虚拟的输入设备时,会产生相应的指令(激励包),激励包通过Internet传送给上位机。可以通过对主控FPGA编程,使其对从上位机传送来的激励包进行解析,产生与实际输入设备对应的激励信号,去驱动实验FPGA上的相应引脚。同时,通过编程,使上位机按一定的周期不断轮询主控FPGA所接的所有输出设备的引脚的电平状态;并对其进行解析,确定某引脚所对应的输出设备(如数码管或LED);将解析结果通过Internet反馈给客户端,在实验界面的虚拟输出设备上显示出相应的实验结果。

特别地,为了实现PS/2键盘鼠标接口在线实验,主控FPGA专门指定了4个引脚,作为PS/2键盘的数据线和时钟线、PS/2鼠标的数据线和时钟线;同时这4个引脚分别与实验FPGA的4个特定引脚硬线连接。当实验者进行PS/2键盘鼠标在线实验,产生了PS/2数据时,主控FPGA中的键盘接口控制模块和鼠标接口控制模块对上位机传来的PS/2数据进行处理,区分其到底是键盘数据还是鼠标数据,并将PS/2键盘数据和鼠标数据分别发送至主控FPGA上模拟PS/2键盘接口和鼠标接口的4个指定引脚,同时也送至实验FPGA相应的4个特定引脚。

软件系统即远程实验服务与设备控制管理软件,包括在线实验管理系统和上位机控制软件,在线实验管理系统部署在MOOC(MassiveOpen Online Courses,大规模开放在线课程)服务器上,上位机控制软件部署于上位机中,它们协同完成每位实验者在MOOC平台对实验设备的远端操控。软件系统提供在线实验服务和设备控制管理功能,使实验者在互联网环境下通过MOOC平台远程登录,申请并获取一台FPGA实验设备;实验者进入实验界面并上传实验的目标文件,然后操作实验界面模拟的部件,即可进行实验验证,在实验界面实时观察实验结果。

实验者所使用的终端我们称为用户前端。用户前端采用SaaS(Software-as-a-service,软件即服务)的软件应用模式,将在线实验管理系统部署在MOOC服务器上,用户(实验者)无需安装客户端软件,即可通过Web界面使用该系统。该系统在前端的表现形式为一个嵌入MOOC平台中的实验界面。用户可通过该界面上的Web部件远程操作实际硬件设备,同时该实验界面将根据硬件设备返回的实验数据为用户模拟实验现象。

典型的FPGA在线实验平台的FPGA板上虽然设置有PS/2接口,可以实现PS/2键盘或鼠标接口本地实验,但是实验者在进行在线实验时,无法对远在异地的键盘或鼠标进行操作,故无法实现PS/2键盘鼠标接口在线实验。为了在现有的FPGA在线实验平台上实现PS/2键盘鼠标接口在线实验,需要通过硬件控制和软件通信,利用与终端相连的键盘和鼠标对PS/2键盘鼠标接口实验进行远程控制。

图2为本发明实施例提供的一种基于FPGA在线实验平台的PS/2键盘鼠标接口在线实验方法的流程图。如图2所示,所述方法包括:S1,实验者通过终端登录FPGA在线实验平台,并在实验者使用与终端相连的键盘或鼠标进行实验操作时,FPGA在线实验平台的用户前端实时获取键盘事件或鼠标事件,进行编码转换,得到PS/2数据;S2,用户前端根据预设通信协议对PS/2数据打包得到PS/2数据包,并将PS/2数据包经服务器发送至上位机;S3,上位机根据预设通信协议对PS/2数据包进行解析得到PS/2数据,并将PS/2数据通过串口发送给主控FPGA;S4,主控FPGA中的键盘接口控制模块和鼠标接口控制模块对PS/2数据进行识别,区分为PS/2键盘数据或PS/2鼠标数据,然后将PS/2键盘数据通过模拟PS/2键盘接口发送至实验FPGA,将PS/2鼠标数据通过模拟PS/2鼠标接口发送至实验FPGA;其中,模拟PS/2键盘接口由主控FPGA分别模拟PS/2键盘数据线和PS/2键盘数据时钟线的2个特定引脚构成,模拟PS/2鼠标接口由主控FPGA的另外2个分别模拟PS/2鼠标数据线和PS/2鼠标时钟线的特定引脚构成,且PS/2键盘数据线、PS/2键盘时钟线、PS/2鼠标数据线和PS/2鼠标时钟线所对应的主控FPGA的4个特定引脚与实验FPGA的4个特定引脚相连。

其中,PS/2通信协议是一种双向同步串行通信协议,常见的PS/2设备有PS/2键盘和PS/2鼠标。PS/2设备可以发送数据到主机,而主机也可以发送数据到PS/2设备。通信双方通过Clock(时钟脚)进行同步,并通过Data(数据脚)交换数据。Clock和Data都是双向信号,平时都是高电平。在本发明实施例中,可以理解的是,实验FPGA即相当于主机,也即实验者将电路的目标文件下载到实验FPGA中,从而产生实验的控制逻辑。

实验者通过浏览器访问FPGA在线实验平台,终端上连接有通用键盘和鼠标(不局限于PS/2键盘或PS/2鼠标),终端可以为PC或笔记本电脑;实验者通过显示于终端上的实验界面进行实验的远程操作。终端与上位机之间设置有服务器,终端通过Internet与服务器连接,服务器再通过以太网与上位机连接。

具体地,为了实现PS/2数据在用户前端与上位机之间的传输,用户前端需根据预设通信协议对PS/2数据进行打包得到特定格式的PS/2数据包。通信协议规定了在用户前端和上位机之间传输的数据的格式,根据通信协议,上位机可以对接收到的PS/2数据包进行解析进而得到PS/2数据。上位机解析得到的PS/2数据通过串口发送给主控FPGA;主控FPGA中的键盘接口控制模块和鼠标接口控制模块对PS/2数据进行识别,区分其到底是键盘数据或鼠标数据,然后将相应的数据通过模拟PS/2键盘接口和PS/2鼠标接口的4个特定引脚分别发送至实验FPGA的相应4个特定引脚。实验FPGA根据所接收的PS/2数据内容,执行相应的实验操作,从而实现了PS/2键盘鼠标接口在线实验。

本发明扩展了FPGA在线实验平台的功能,在很大程度上丰富了FPGA在线实验项目的种类,提高了实验教学的趣味性。

下面通过实例来对本发明实施例进行进一步说明。假设实验者进行对抗性弹球游戏实验,有两个玩家参与游戏,游戏画面由小球、左挡板、右挡板和围墙组成。小球可以随机移动,小球在碰撞挡板和上下围墙时发生反弹,小球碰撞到左围墙时右边玩家得分,小球碰撞到右围墙时左边玩家得分。左边玩家通过键盘的【A】键和【S】键分别控制游戏画面中左挡板的上移与下移;右边玩家通过鼠标的左键和右键分别控制右挡板的上移与下移。FPGA板上的实验FPGA中烧录了对抗性弹球游戏实验的目标文件。实验开始后,在终端的实验界面上会显示模拟的按键开关和拨码开关等输入设备,LED和数码管等输出设备,还有一个键盘鼠标实验区,以及游戏初始界面。当实验者希望通过键盘的【A】键和【S】键控制左挡板上下移动时,则将鼠标焦点移至实验界面中的键盘鼠标实验区内,此时实验者的键盘被用于操作实验。实验者点击键盘的【A】键或【S】键,则用户前端实时捕获键盘事件,识别到底是【A】键还是【S】键被按下,并进行编码转换,得到PS/2数据。具体过程为:实验者按下键盘上的按键【A】或【S】,获得对应的PS/2数据,用户前端根据预设通信协议将这个数据打包成特定格式的数据包,再将这个特定格式的数据包经服务器发送至上位机;上位机根据预设通信协议解析出这个特定格式数据包中的数据,再将这个数据经主控FPGA发送至实验FPGA;实验FPGA根据这个数据控制左挡板上移或下移。对鼠标的操作原理与键盘类似。这样,实验者在远程就可以通过连接于终端上的键盘和鼠标实现对抗性弹球游戏实验。

在上述实施例中,PS/2数据包括PS/2键盘数据和PS/2鼠标数据,步骤S1具体包括:

用户前端分别捕获键盘产生的键盘事件和鼠标产生的鼠标事件,并对键盘事件进行编码得到PS/2键盘数据,对鼠标事件进行编码得到PS/2鼠标数据。

具体地,实验者通过浏览器访问FPGA在线实验平台,申请FPGA实验设备,若有可用的FPGA实验设备,则进入实验界面,否则排队等待;然后上传目标文件并烧录到实验FPGA中。接着就可以通过实验界面进行实验。

当鼠标焦点位于实验界面中的键盘鼠标实验区内时,实验者点击鼠标或按下键盘相关按键,用户前端可捕获键盘或鼠标事件,并对键盘事件进行编码得到PS/2键盘数据,对鼠标事件进行编码得到PS/2鼠标数据。

基于上述实施例,根据预设通信协议得到的PS/2数据包的格式为:

<PS2Send><MouseLength>A</MouseLength><MouseData>B</MouseData><KeyboardLength>C</KeyboardLength><KeyboardData>D</KeyboardData></PS2Send>;其中,

<PS2Send>、</PS2Send>为PS/2数据的发送标签;<MouseLength>、</MouseLength>为PS/2鼠标数据的长度标签,用于指引PS/2鼠标数据长度,为3~4字节;A为PS/2鼠标数据的长度;<MouseData>、</MouseData>为;PS/2鼠标数据的内容标签,用于指引PS/2鼠标内容;B为PS/2鼠标数据的内容;<KeyboardLength>、</KeyboardLength>为PS/2键盘数据的长度标签,用于指引PS/2键盘数据长度,为1~3字节;C为PS/2键盘数据的长度;<KeyboardData>、</KeyboardData>为PS/2键盘数据的内容标签,用于指引PS/2键盘内容;D为PS/2键盘数据的内容。

当只发送PS/2鼠标数据时,PS/2键盘数据长度为0,PS/2键盘数据内容为空;当只发送PS/2键盘数据时,PS/2鼠标数据长度为0,PS/2鼠标数据内容为空。

在上述实施例中,PS/2鼠标数据至少包括3字节;其中,

当鼠标不带滚轮时,PS/2鼠标数据大小为3字节,其中,第一字节中的第一位和第二位分别表示鼠标左键和右键的状态,第二字节和第三字节分别表示鼠标X轴的移动计量值和Y轴的移动计量值;

当鼠标带滚轮时,PS/2鼠标数据大小为4字节,其中,第一字节中的第一位、第二位和第三位分别表示鼠标左键、右键和中键的状态,第二字节、第三字节和第四字节分别表示鼠标X轴的移动计量值、Y轴的移动计量值和滚轮的计量值。

由于用户前端捕获的键盘事件或鼠标事件无法直接被FPGA板识别,所以需要对键盘事件或鼠标事件进行编码,得到FPGA板能够直接识别的PS/2数据。

标准的PS/2鼠标支持下面的输入:X(左右)位移,Y(上下)位移,左键,中键,右键。鼠标以固定的频率读取这些输入,并更新不同的计数器,然后标记出鼠标的移动和按键状态。

PS/2鼠标接口的定义与PS/2键盘接口相同。两者的不同之处在于对数据位的定义不同。PS/2键盘传输一个数据包为1~3个字节,而PS/2鼠标发送的数据包包含3~4个字节(不带滚轮的鼠标为3个字节,带滚轮的鼠标为4个字节)。PS/2鼠标发送给主机的数据包格式如表1所示。

在表1中,Byte1中的Bit0、Bit1、Bit2分别表示左键、右键和中键的状态,状态值0表示键被释放,1表示键被按下。例如当鼠标左键被按下时,Byte1为09H,鼠标左键被释放时,Byte1为08H;鼠标右键被按下时,Byte1为0AH。Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值。Byte4的低4位表示滚轮的移动计量值,也是二进制补码值,高4位作为扩展符号位。Byte4由带滚轮的三维鼠标产生;若是不带滚轮的鼠标,则产生的数据包没有Byte4,其余的相同。

表1PS/2鼠标数据格式

在上述实施例中,PS/2键盘数据分为通码和断码。当一个键被按下或者按住不放时为通码,当一个键被释放时为断码。每个按键被分配了唯一的通码和断码。这样,主机通过查找唯一的扫描码就可以确定是哪个按键被按下或释放。通码和断码的集合称为扫描码集。共有3种标准的扫描码集。所有现代的键盘都支持并默认使用第二套扫描码集。部分常用键的扫描码(十六进制)如表2所示。

表2PS/2键盘第二套扫描码集中部分按键的扫描码

第二套扫描码集的通码大多为一个字节宽;断码大多为2个字节宽,且第一个字节是F0H,第二个字节是对应键的通码。但扩展键(如↑、→、←、↓)的通码是2个或4个字节宽,且第一个字节总是E0H。例如,按键“1/!”的通码为16H,断码为F0_16H;按键“2/@”的通码为1EH,断码为F0_1EH。扩展键“↑”键的通码为E0_75H,断码为E0_F0_75H。

在上述实施例中,步骤S3中所述上位机根据所述预设通信协议对所述PS/2数据包进行解析得到所述PS/2数据具体包括:

上位机根据PS/2数据的发送标签获取PS/2数据包;

上位机根据PS/2鼠标数据的长度标签和PS/2鼠标数据的内容标签获取PS/2数据包中的PS/2鼠标数据,根据PS/2键盘数据的长度标签和PS/2键盘数据的内容标签获取PS/2数据包中的PS/2键盘数据。

在上述实施例中,由于鼠标上电时需要进行初始化,所以本发明还实现了PS/2鼠标的初始化模拟。故如图5所示,在步骤S1之前还包括:

S11,实验FPGA通过模拟PS/2鼠标接口向主控FPGA发送PS/2鼠标使能命令,主控FPGA通过串口将PS/2鼠标使能命令转发给上位机;

S12,上位机根据预设通信协议对PS/2鼠标使能命令打包得到PS/2鼠标使能命令数据包,并将PS/2鼠标使能命令数据包经服务器发送至用户前端;

S13,用户前端根据预设通信协议对PS/2鼠标使能命令数据包进行解析得到PS/2鼠标使能命令;

S14,按步骤S1-S4,从用户前端返回确认命令至实验FPGA。

具体地,如图3和图4所示,PS/2鼠标上电或复位并进入Stream模式,但此时并不会向实验FPGA发送数据包,而是需要实验FPGA先发送一个使能命令(F4H),若PS/2鼠标收到此命令,将回送FAH响应实验FPGA,即完成PS/2鼠标初始化,之后PS/2鼠标才会发送数据包。具体过程如下:

(1)实验FPGA接收到复位信号后,通过模拟的PS/2鼠标接口将使能命令(F4H,用参数CMD_F4=11’b1_0_11110100_0表示使能命令F4H)发送给主控FPGA;

(2)主控FPGA接收到实验FPGA发出的使能命令后,将其转发给上位机;

(3)上位机将该命令按照通信协议规定格式经服务器发送给用户前端,格式如下:

<PS2Send><MouseLength>3</MouseLength><MouseData>F4F4F4</MouseData><KeyboardLength>0</KeyboardLength><KeyboardData></KeyboardData></PS2Send>;

(4)用户前端接收到使能命令后向上位机回复确认命令(FAH),用户前端将确认命令按照通信协议规定格式经服务器发送给上位机,格式如下:

<PS2Send><MouseLength>3</MouseLength><MouseData>FAFAFA</MouseData><KeyboardLength>0</KeyboardLength><KeyboardData></KeyboardData></PS2Send>;

(5)上位机收到确认命令后将其发送给主控FPGA,主控FPGA将确认命令传回实验FPGA的模拟PS/2鼠标接口,初始化过程完成。

而上电后实验FPGA不需要向PS/2键盘发送命令,只需直接等待PS/2键盘发送数据即可。故本实施例不考虑PS/2键盘的初始化。

最后需要说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号