ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:248KB ,
资源ID:3099669      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3099669.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于verilog的PS2键盘设计进阶.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

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

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个工作日内予以改正。