基于verilog的PS2键盘设计进阶.doc

上传人:hw****26 文档编号:3099669 上传时间:2019-05-21 格式:DOC 页数:10 大小:248KB
下载 相关 举报
基于verilog的PS2键盘设计进阶.doc_第1页
第1页 / 共10页
基于verilog的PS2键盘设计进阶.doc_第2页
第2页 / 共10页
基于verilog的PS2键盘设计进阶.doc_第3页
第3页 / 共10页
基于verilog的PS2键盘设计进阶.doc_第4页
第4页 / 共10页
基于verilog的PS2键盘设计进阶.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、实验九、基于 verilog 的 PS/2 键盘设计进阶一、 前言及背景:说到 PS/2 相信大家都不会陌生,不错的,我们日常的鼠标键盘大多是基于PS/2 接口设计的。虽然 USB 鼠标大有取而代之之势,但是依然阻止不了我们这群 IT 菜鸟掌握它的强烈欲望,而使用 verilog 来做 PS/2 的解码更是需要我们把 PS/2 的传输协议理解的更透彻一些。所以,下面就让特权同学带领大家一步一步掌握 PS/2。PS/2 接口标准的发展过程随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异。1981 年 IBM 推出了 IBM pc/XT 键盘及其接口标准。该标准定义了 83 键,采用

2、 5脚 DIN 连接器和简单的串行协议。实际上,第一套键盘扫描码集并没有主机到键盘的命令。为此,1984 年 IBM 推出了 IBM AT 键盘接口标准。该标准定义了 84101 键,采用 5 脚 DIN 连接器和双向串行通讯协议,此协议依照第二套键盘扫描码集设有 8 个主机到键盘的命令。到了 1987 年,IBM 又推出了 PS/2 键盘接口标准。该标准仍旧定义了 84101 键,但是采用 6 脚 mini-DIN 连接器,该连接器在封装上更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持 17 个主机到键盘的命令。现在,市面上的键盘都和 PS/2 及 AT 键盘兼

3、容,只是功能不同而已。 二、 基础知识:电气特性管脚说明:1 DATA Key data2 N.C No connected3 GND GND4 VCC +5V5 CLK Clock6 N.C No connected数据格式数据帧格式说明:1 个起始位 总是逻辑 08 个数据位 (LSB)低位在前1 个奇偶校验位 奇校验1 个停止位 总是逻辑 11 个应答位 仅用在主机对设备的通讯中表中,如果数据位中的个数为偶数,校验位就为;如果数据位中的个数为奇数,校验位就为;总之,数据位中的个数加上校验位中的个数总为奇数,因此总进行奇校验。(是不是发现它的数据传输协议和串口很像呢!呵呵)PS/2 发送数

4、据到 PC 的时序键盘接口时序: (a) 键盘发送时序 (b) 键盘接收时序注:在时钟的下降沿读取数据。以下可做具体写代码设计参考:从 PS/2 向 PC 机发送一个字节可按照下面的步骤进行:(1) 检测时钟线电平,如果时钟线为低,则延时 50us;(2) 检测判断时钟信号是否为高,为高,则向下执行,为低,则转到();(3) 检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时 PC 机在向 PS/2 设备发送数据,所以 PS/2 设备要转移到接收程序处接收数据);(4) 延时 20us(如果此时正在发送起始位,则应延时 40us);(5) 输出起始位(0)到数据线上。这里要注意

5、的是:在送出每一位后都要检测时钟线,以确保 PC 机没有抑制 PS/2 设备,如果有则中止发送;(6) 输出 8 个数据位到数据线上;(7) 输出校验位;(8) 输出停止位(1);(9) 延时 30us(如果在发送停止位时释放时钟信号则应延时 50us);通过以下步骤可发送单个位:(1) 准备数据位(将需要发送的数据位放到数据线上);(2) 延时 20us;(3) 把时钟线拉低;(4) 延时 40us;(5) 释放时钟线;(6) 延时 20us。PS/2 设备从 PC 机接收一个字节由于 PS/2 设备能提供串行同步时钟,因此,如果 PC 机发送数据,则 PC 机要先把时钟线和数据线置为请求发

6、送的状态。PC 机通过下拉时钟线大于 100us 来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当 PS/2 设备检测到需要接收的数据时,它会产生时钟信号并记录下面 8 个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而 PS/2 设备则要配合 PC 机才能读到准确的数据。具体连接步骤如下:(1) 等待时钟线为高电平。(2) 判断数据线是否为低,为高则错误退出,否则继续执行。(3) 读地址线上的数据内容,共 8 个 bit,每读完一个位,都应检测时钟线是否被 PC 机拉低,如果被拉低则要中止接收。(4) 读地址线上的校验位内容,1

7、个 bit。(5) 读停止位。(6) 如果数据线上为 0(即还是低电平),PS/2 设备继续产生时钟,直到接收到且产生出错信号为止(因为停止位是 1,如果 PS/2 设备没有读到停止位,则表明此次传输出错)。(7) 输出应答位。(8) 检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。(9) 延时 45us,以便 PC 机进行下一次传输。读数据线的步骤如下:(1) 延时 20us;(2) 把时钟线拉低(3) 延时(4) 释放时钟线(5) 延时(6) 读数据线。下面的步骤可用于发出应答位;(1) 延时;(2) 把数据线拉低; (3) 延时;(4) 把时钟线拉低;(5) 延时;(

8、6) 释放时钟线;(7) 延时;(8) 释放数据线。键盘编码返回值介绍:注意:键盘的返回值并不是和一般 ASCII 码相对应!键盘的处理器如果发现有键被按下、释放或按住键盘,将发送扫描码的信息包到计算机。扫描码有两种不同类型的通码和断码,当一个键被按下或按住,就发送通码;当一个键被释放,就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了扫描码集,有三套标准的扫描码集,分别是第一套、第二套和第三套。所有现代的键盘默认使用第二套扫描码。虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是两字节或四字节宽,这类的通码第

9、一个字节总是为 E0H。正如有键按下,通码就被发往计算机一样,只要键一释放,断码就会被发送。每个键都有它自己唯一的通码,它们也都有唯一的断码。幸运的是你不用总是通过查表来找出按键的断码,在通码和断码之间存在着必然的联系。多数第二套断码有两字节长,它们的第一个字节是 F0H;第二个字节是这个键的通码扩展按键的断码,通常有三个字节,它们前两个字节是 E0H,F0H,最后一个字节是这个按键通码的最后一个字节。作为例子讲解,下面列出了几个按键的第二套通码和断码。No. KEY 通码(第二套) 断码(第二套)1 “A“ 1C F0 1C2 “5“ 2E F0 2E3 “F10“ 09 F0 094 Ri

10、ght Arrow E0 74 E0 F0 745 Right “Ctrl“ E0 14 E0 F0 14一个键盘发送值的例子:通码和断码是以什么样的序列发送到你的计算机,从而使得字符 G 出现在你的字处理软件里的呢?因为这是一个大写字母,需要发生这样的事件次序:按下 Shift 键,按下 G 键,释放 G 键,释放 Shift 键,与这些时间相关的扫描码如下:Shift 键的通码 12H,G 键的通码 34H, G 键的断码 F0H 34H, Shift 键的断码 F0H 12H,因此发送到你的计算机的数据应该是:12H 34H F0H 34H F0H 12H。第二套扫描码:101 102

11、和 104 键的键盘:KEY 通码 断码 KEY 通码 断码 KEY 通码 断码 A 1C F0 1C 9 46 F0 46 54 F0 54 B 32 F0 32 0E F0 0E INSERT E0 70 E0 F0 70C 21 F0 21 - 4E F0 4E HOME E0 6C E0 F0 6CD 23 F0 23 = 55 F0 55 PG UP E0 7D E0 F0 7DE 24 F0 24 5D F0 5D DELETE E0 71 E0 F0 71F 2B F0 2B BKSP 66 F0 66 END E0 69 E0 F0 69G 34 F0 34 SPACE 29

12、F0 29 PG DN E0 7A E0 F0 7AH 33 F0 33 TAB 0D F0 0D U ARROWE0 75 E0 F0 75I 43 F0 43 CAPS 58 F0 58 L ARROWE0 6B E0 F0 6BJ 3B F0 3B L SHFT12 F0 12 D ARROW E0 72E0 F0 72K 42 F0 42 L CTRL 14 F0 14 R ARROW E0 74E0 F0 74L 4B F0 4B L GUI E0 1F E0 F0 1F NUM 77 F0 77M 3A F0 3A L ALT 11 F0 11 KP / E0 4A E0 F0 4

13、AN 31 F0 31 R SHFT 59 F0 59 KP * 7C F0 7CO 44 F0 44 R CTRLE0 14 E0 F0 14KP - 7B F0 7B P 4D F0 4D R GUI E0 27 E0 F0 27KP + 79 F0 79 Q 15 F0 15 R ALT E0 11 E0 F0 11KP EN E0 5AE0 F0 5AR 2D F0 2D APPS E0 2F E0 F0 2FKP 71 F0 71 S 1B F0 1B ENTER 5A F0 5A KP 0 70 F0 70 T 2C F0 2C ESC 76 F0 76 KP 1 69 F0 69

14、 U 3C F0 3C F1 05 F0 05 KP 2 72 F0 72 V 2A F0 2A F2 06 F0 06 KP 3 7A F0 7A W 1D F0 1D F3 04 F0 04 KP 4 6B F0 6B X 22 F0 22 F4 0C F0 0C KP 5 73 F0 73 Y 35 F0 35 F5 03 F0 03 KP 6 74 F0 74 Z 1A F0 1A F6 0B F0 0B KP 7 6C F0 6C 0 45 F0 45 F7 83 F0 83 KP 8 75 F0 75 1 16 F0 16 F8 0A F0 0A KP 9 7D F0 7D 2 1

15、E F0 1E F9 01 F0 01 58 F0 58 3 26 F0 26 F10 09 F0 09 ; 4C F0 4C 4 25 F0 25 F11 78 F0 78 52 F0 52 5 2E F0 2E F12 07 F0 07 , 41 F0 41 6 36 F0 36 PRNTSCRNE0 12E0 7CE0 F07C E0F0 12 . 49 F0 49 7 3D F0 3D SCROLL 7E F0,7E / 4A F0 4A 8 3E F0 3E PAUSEE1 14 77E1 F0 14F0 77-NONE- ACPI 扫描码:KEY 通码 断码Power E0, 37

16、 E0, F0, 37Sleep E0, 3F E0, F0, 3FWake E0, 5E E0, F0, 5EWindows 多媒体扫描码:KEY 通码 断码Next Track E0, 4D E0, F0, 4DPrevious Track E0, 15 E0, F0, 15Stop E0, 3B E0, F0, 3BPlay/Pause E0, 34 E0, F0, 34 Mute E0, 23 E0, F0, 23 Volume Up E0, 32 E0, F0, 32 Volume Down E0, 21 E0, F0, 21 Media Select E0, 50 E0, F0,

17、50 E-Mail E0, 48 E0, F0, 48 Calculator E0, 2B E0, F0, 2b My Computer E0, 40 E0, F0, 40 WWW Search E0, 10 E0, F0, 10 WWW Home E0, 3A E0, F0, 3a WWW Back E0, 38 E0, F0, 38 WWW Forward E0, 30 E0, F0, 20 WWW Stop E0, 28 E0, F0, 28 WWW Refresh E0, 20 E0, F0, 20 WWW Favorites E0, 18 E0, F0, 18 三、实验说明上面说了这

18、么一大通,如果是第一次接触 PS/2 协议的朋友一定是头大了,如果你用别的 MPU 做过 PS/2 的通信,那么上面的协议对于你只是小 case,权当复习一下好了。下面要开始动手实践了,协议一大堆内容,我们要做的是一个相对比较容易的实验,达到入门的目的即可,当然更深入的探讨有兴趣的朋友可以在这个基础上继续。实验内容通过 FPGA 把大写字母 A-Z 转换成相应的 ASCII 码,只要字母按键被按下,就能在串口调试助手里显示相应大写字母。四、verilog 代码以及详细注释除了顶层模块(ps2_key),三个底层模块分别为 PS/2 传输处理模块(ps2scan)、串口传输模块(my_uart_

19、tx)以及串口波特率选择模块(speed_select)(下面只给出顶层模块和 PS/2 传输处理模块的 verilog 代码,串口部分的设计可以参考串口通信设计)。详细的 project 代码参考在同目录文件夹 ps2verilog 下,该代码下载配置后,接上 PS/2 键盘(注意 PS/2 一般不支持热拔插,最好 CPLD 下载后在掉电状态下插入 PS/2 键盘,然后上电),随后打开串口调试助手,如果按下键盘上 A-Z 任意个键,串口调试助手即可显示相应字母。(串口调试助手在附赠光盘软件目录下,注意设置好波特率,默认波特率为 9600bps,代码中可以随意调整;8 位数据,不需要校验位)。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。