了解原理先从了解协议标准开始。
PS/2接口标准的发展过程
随着计算器工业的发展,作为计算机最常用输入设备的键盘也日新月异。1981年IBM推出了IBM PC/XT键盘及其接口标准。该标准定义了83键,采用5脚DIN连接器和简单的串行协议。实际上,第一套键盘扫描码集并没有主机到键盘的命令。为此,1984年IBM推出了IBM AT键盘接口标准。该标准定义了84~101键,采用5脚DIN连接器和双向串行通讯协议,此协议依照第二套键盘扫描码集设有8个主机到键盘的命令。到了1987年,IBM又推出了PS/2键盘接口标准。该标准仍旧定义了84~101键,但是采用6脚mini-DIN连接器,该连接器在封装上更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持17个主机到键盘的命令。
PS/2接口硬件
物理连接器
一般,具有五脚连接器的键盘称之为AT键盘,而具有六脚mini-DIN连接器的键盘则称之为PS/2键盘。其实这两种连接器都只有四个脚有意义。它们分别是Clock(时钟脚)、Data数据脚、+5V(电源脚)和Ground(电源地)。在PS/2键盘与PC机的物理连接上只要保证这四根线一一对应就可以了。PS/2键盘靠PC的PS/2埠提供+5V电源,另外两个脚Clock(时钟脚)和Data资料脚都是集电极开路的,所以必须接大阻值的上拉电阻。它们平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平。
电气特性
PS/2通讯协议是一种双向同步串行通讯协议。通讯的两端通过Clock(时钟脚)同步,并通过Data(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把Clock(时钟脚)拉到低电平。如果是PC机和PS/2键盘间的通讯,则PC机必须做主机,也就是说,PC机可以抑制PS/2键盘发送数据,而PS/2键盘则不会抑制PC机发送数据。一般两设备间传输数据的最大时钟频率是33kHz,大多数PS/2设备工作在10~20kHz。推荐值在15kHz左右,也就是说,Clock(时钟脚)高、低电平的持续时间都为40μs。
由此可以看出,传输数据的反应灵敏度是由PS/2键盘电路中的RLC振荡电路所决定。我们可以通过一些特殊设计改变PS/2和PC间同步反应灵敏度,从而达到改变键盘速度的目的。目前市场上的键盘,还是完全一成不便的按照81年的设计,此设计已远远不能满足使用者对于键盘的需求。为了满足消费者此需求,双飞燕投入大量的人力物力,终于研制出了世界上第一只可以变速的X7-G500键盘。此设计的键盘最大限度的满足广大消费者对于键盘速度的需求。
为什么通过软件调整重复率不稳定,为什么CS,劲乐、劲舞、俄罗斯方块、极品飞车、拳皇等游戏高手不喜欢用早期的软件加速或者只修改重复速率的键盘。
传输中,每一数据帧包含11~12个位,具体含义如表1所列。
表1 数据帧格式说明
1个起始位 总是逻辑0
8个数据位 (LSB)低位在前
1个奇偶校验位 奇校验
1个停止位 总是逻辑1
1个应答位 仅用在主机对设备的通讯中
表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。
PS/2设备和PC机的通讯
由于各键盘的发送速率不同以及按键的速度不一致,并为了提高兼容性,又在异步通信的基础上增加了同步时钟,在时钟的下降沿对数据进行采样。
PC机与键盘的通信只有经过握手后才能进行,KBDCLK可能作为清除发送线,当PC机将KBDCLK接为低电平时,键盘将不能发送数据给PC机,而是将要发送的数据放入发送数缓冲区中,直到KBDCLK为高电平时才开始发送数据。当KBDDATA和KBDCLK同时为高电平时(没有数据传送时KBDDATA和KBDCLK保持为高电平)
键盘可以发送字节给PC机,键盘将KBDDATA拉为低电平(即PC机接收键盘数据的起始位),通知PC机应接收来自键盘的数据。如果PC机将KBDDATA拉为低电平时(即键盘接收PC机数据的起始位),表明PC机将发送字节给键盘。这就说明PC机具有较高的优先权,可以控制PC机和键盘的通信方向。
图2(2-A)为键盘发送数据时序图。当KBDDATA和KBDCLK同时为高电平时,键盘先将KBDATA拉为低电平,通知PC机接收数据,PC机在KDBCLK的下降沿采样有效数据。KDBCLK由键盘产生。
图2(2-B)为键盘接收数据时序图。为了保证PC机发送数据时键盘不发送数据,PC机在发送数据前将KBDCLK拉为低电平(一般低电平的保持时间大于60μs),禁止键盘发送数据,然后PC机半KBDDATA也拉为低电平,通知键盘接收数据,并释放KBDCLK,将KBDCLK的控制权交给键盘,由键盘产生同步时钟信号,并在
下降沿采样PC机发来的有效数据。键盘在接收到数据校验位后,如果在下一时钟周期检测到KBDDATA为高电平,便会接收新的数据并进行数据处理。在此其间,键盘将KBDCLK拉为低电平,直到接收数据完成。如果收到校验位后,键盘检测到KBDDATA不是高电平,它将继续发送时钟信号直到KBDDATA为高电平。
PS/2设备的Clock(时钟脚)和Data数据脚都是集电极开路的,平时都是高电平。当PS/2设备等待发送数据时,它首先检查Clock(时钟脚)以确认其是否为高电平。如果是低电平,则认为是PC机抑制了通讯,此时它必须缓冲需要发送的数据直到重新获得总线的控制权(一般PS/2键盘有16个字节的缓冲区,而PS/2鼠标只有一个缓冲区仅存储最后一个要发送的数据)。如果Clock(时钟脚)为高电平,PS/2设备便开始将数据发送到PC机。一般都是由PS/2设备产生时钟信号。发送时一般都是按照数据帧格式顺序发送。其中数据位在Clock(时钟脚)为高电平时准备好,在Clock(时钟脚)的下降沿被PC机读入。PS/2设备到PC机的通讯时序如图2所示。
当时钟频率为15kHz时,从Clock(时钟脚)的上升沿到数据位转变时间至少要5μs。数据变化到Clock(时钟脚)下降沿的时间至少也有5 μs,但不能大于25 μs,这是由PS/2通讯协议的时序规定的。如果时钟频率是其它值,参数的内容应稍作调整。
举个例子, 从PS/2向PC机发送一个字节可按照下面的步骤进行:
(1)检测时钟线电平,如果时钟线为低,则延时50μs;
(2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1);
(3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据);
(4)延时20μs(如果此时正在发送起始位,则应延时40μs);
(5)输出起始位(0)到数据在线。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送;
(6)输出8个数据位到数据在线;
(7)输出校验位;
(8)输出停止位(1);
(9)延时30μs(如果在发送停止位时释放时钟信号则应延时50μs);
通过以下步骤可发送单个位:
(1)准备数据位(将需要发送的数据位放到数据在线);
(2)延时20μs;
(3)把时钟线拉低;
(4)延时40μs;
(5)释放时钟线;
(6)延时20μs。
3.2 PS/2设备从PC机接收一个字节
由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。PC机通过下拉时钟线大于100μs来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存资料。而PS/2设备则要配合PC机才能读到准确的资料。具体连接步骤如下:
(1)等待时钟线为高电平。
(2)判断数据线是否为低,为高则错误退出,否则继续执行。
(3)读地址在线的数据内容,共8个bit,每读完一个位,都应检测时钟线是否被PC机拉低,如果被拉低则要中止接收。
(4)读地址在线的校验位内容,1个bit。
(5)读停止位。
(6)如果数据在线为0(即还是低电平),PS/2设备继续产生时钟,直到接收到1且产生出错信号为止(因为停止位是1,如果PS/2设备没有读到停止位,则表明此次传输出错)。
(7)输出应答位。
(8) 检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。
(9)延时45 μs,以便PC机进行下一次传输。
读数据线的步骤如下:
(1)延时20μs;
(2)把时钟线拉低
(3)延时40μs
(4)释放时钟线
(5)延时20μs
(6)读数据线。
下面的步骤可用于发出应答位;
(1)延时15μs;
(2)把数据线拉低;
(3)延时5μs;
(4)把时钟线拉低;
(5)延时40μs;
(6)释放时钟线;
(7)延时5μs;
(8)释放资料线。
只是修改重复率的普通键盘和X7-G500键盘之间的差别分析结论如下:
一个击键动作,计算机需要通过非常繁杂的步骤来实现。显然,这些步骤每次运行完成的时间是不相同的,甚至差别很大。我们一般把这些步骤完成这一短暂的时间称为键盘硬延迟,时间差别称为硬延迟误差,这个硬延迟是一般软件检测不到的。用软件或Windows所能调试的只有重复延迟,叫做软延迟,软延迟是相当稳定的。而实际人能感觉到延迟时间是硬延迟+软延迟。普通键盘的反应灵敏度小,硬延迟时间相对长,硬延迟误差相对大。体现在软件修改键盘重复率打游戏时,表现为“顿”和“飘”;体现在CS中,表现为下蹲慢,收腿慢;体现在VOS和劲乐团一类的游戏中,表现为击打不精确。说通俗一点就是普通键盘不论是短按(点击)还是长按(拉),反应都要慢一拍。而X7-G500键盘,其反应灵敏度成倍增加,硬延迟时间和硬延迟误差成倍降低,这也造就了X7-G500的变速键盘比标准键盘速度差异的根本原因。下面的图中数据就完全可以看出X7-G500的优势所在。