PS/2接口最常见的键盘/鼠标接口,最初是IBM公司的专利。这是一种鼠标和键盘的专用接口,是一种6针的圆型接口。

一.ps2接口协议

        PS/2端口有两类:一种6脚的mini-DIN或5脚的DIN。
        这两种连接器在电气特性上很类似,两者仅有管脚排列的不同。
        6 脚mini-DIN 通常被叫做PS/2 键盘,而5 脚DIN 叫做 AT 设备。
        常见ps2键盘接口如下所示:
基于verilog语言编写的ps2键盘驱动来获取键盘码
        除了电源(+5v)和地(Ground)都是主机(电脑或开发板)提供给键盘或鼠标的,其他用于驱动设计的管脚只有两个:Data和Clock, 该Clock时钟是键盘产生的,最大的时钟频率是33kHz 而且大多数设备工作在10-20kHz。
        键盘/ 鼠标可以发送数据到主机,而主机也可以发送数据到设备。PS/2 鼠标和键盘履行一种双向同步串行协议, 换句话说每次数据线上只发送一位数据并且相应的此时时钟线上会发一个脉冲(上升沿或下降沿)作为指示去控制该位数据的读取。
        该同步串行协议的帧结构如下:(从键盘到主机的帧长度为11bit)
基于verilog语言编写的ps2键盘驱动来获取键盘码
        注意校验位是对数据位的校验,且是奇校验,当数据位为偶数个1时该位置为1,为奇数个1时该位为0.总是保证1的个数为奇数个。
        每一位都是在时钟的下降沿被读取:
基于verilog语言编写的ps2键盘驱动来获取键盘码

二.扫描码

        键盘里面有处理器,它的工作是花费很多的时间来监视键盘的按键,如果它发现有键被按下释放或按住,键盘将发送扫描码的信息包到主机(电脑或开发板)。
        扫描码由两种类型组成:通码和断码
        当一个键被按下或按住就发送通码,当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键。 每个键一整套的通断码组成了 扫描码集, 有三套标准的扫描码集分别是第一套、 第二套和第三套, 所有现代的键盘默认使用第二套扫描码。
        只要一个键被按下这个键的通码就被发送到计算机,记住通码只表示键盘上的一个按键,它不表示印刷在按键上的那个字符。这就意味着在通码和ASCII 码之间没有已定义的关联,直到主机把扫描码翻译成一个字符或命令。在verilog 语句中需要将通码用case语句转换层所需要的ascii码。
        多数通码长度为一个字节,少数扩展码为2或4个字节,这种码都含有E0H。
        同理,只要键一释放,断码就会被发送,每个键都有它自己唯一的断码。
        它们也都有唯一的断码,不用总是通过查表来找出按键的断码。在通码和断码之间有着必然的联系,多数第二套断码有两字节长。它们的第一个字节是F0h ,第二个字节是这个键的通码。
        扩展按键的断码通常有三个字节。它们前两个字节是E0h,F0h 。最后一个字节是这个按键通码的最后一个字节。
下图是一张键盘字符表,每个按键(KEY)都有对应按下的通码(MAKE),和松开的断码(BREAK):
基于verilog语言编写的ps2键盘驱动来获取键盘码

分类:

技术点:

相关文章: