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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

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

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

3、ta2N.CNo connected3GNDGND4VCC+5V5CLKClock6N.CNo connected数据格式数据帧格式说明:1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中表中,如果数据位中的个数为偶数,校验位就为;如果数据位中的个数为奇数,校验位就为;总之,数据位中的个数加上校验位中的个数总为奇数,因此总进行奇校验。(是不是发现它的数据传输协议和串口很像呢!呵呵)PS/2 发送数据到PC的时序键盘接口时序: (a) 键盘发送时序 (b) 键盘接收时序注:在时钟的下降沿读取数据。以下可做具体写代码设计参考:

4、从PS/2向PC机发送一个字节可按照下面的步骤进行:(1) 检测时钟线电平,如果时钟线为低,则延时50us;(2) 检测判断时钟信号是否为高,为高,则向下执行,为低,则转到();(3) 检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据);(4) 延时20us(如果此时正在发送起始位,则应延时40us);(5) 输出起始位(0)到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送;(6) 输出8个数据位到数据线上;(7) 输出校验位;(8) 输出停止

5、位(1);(9) 延时30us(如果在发送停止位时释放时钟信号则应延时50us);通过以下步骤可发送单个位:(1) 准备数据位(将需要发送的数据位放到数据线上);(2) 延时20us;(3) 把时钟线拉低;(4) 延时40us;(5) 释放时钟线;(6) 延时20us。PS/2设备从PC机接收一个字节由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。PC机通过下拉时钟线大于100us来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位

6、。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而PS/2设备则要配合PC机才能读到准确的数据。具体连接步骤如下:(1) 等待时钟线为高电平。(2) 判断数据线是否为低,为高则错误退出,否则继续执行。(3) 读地址线上的数据内容,共8个bit,每读完一个位,都应检测时钟线是否被PC机拉低,如果被拉低则要中止接收。(4) 读地址线上的校验位内容,1个bit。(5) 读停止位。(6) 如果数据线上为0(即还是低电平),PS/2设备继续产生时钟,直到接收到且产生出错信号为止(因为停止位是1,如果PS/2设备没有读到停止位,则表明此次传输出错)。(7) 输出应答位。(8) 检测奇偶

7、校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。(9) 延时45us,以便PC机进行下一次传输。读数据线的步骤如下:(1) 延时20us;(2) 把时钟线拉低 (3) 延时 (4) 释放时钟线 (5) 延时 (6) 读数据线。下面的步骤可用于发出应答位;(1) 延时;(2) 把数据线拉低;(3) 延时;(4) 把时钟线拉低;(5) 延时;(6) 释放时钟线;(7) 延时;(8) 释放数据线。键盘编码返回值介绍:注意:键盘的返回值并不是和一般ASCII码相对应!键盘的处理器如果发现有键被按下、释放或按住键盘,将发送扫描码的信息包到计算机。扫描码有两种不同类型的通码和断码,当一个键被按

8、下或按住,就发送通码;当一个键被释放,就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了扫描码集,有三套标准的扫描码集,分别是第一套、第二套和第三套。所有现代的键盘默认使用第二套扫描码。虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是两字节或四字节宽,这类的通码第一个字节总是为E0H。正如有键按下,通码就被发往计算机一样,只要键一释放,断码就会被发送。每个键都有它自己唯一的通码,它们也都有唯一的断码。幸运的是你不用总是通过查表来找出按键的断码,在通码和断码之间存在着必然的联系。多数第二套断码有两字节长,它们的

9、第一个字节是F0H;第二个字节是这个键的通码扩展按键的断码,通常有三个字节,它们前两个字节是E0H,F0H,最后一个字节是这个按键通码的最后一个字节。作为例子讲解,下面列出了几个按键的第二套通码和断码。No.KEY通码(第二套)断码(第二套)1A1CF0 1C252EF0 2E3F1009F0 094Right ArrowE074E0 F0 745Right CtrlE0 14E0 F0 14一个键盘发送值的例子: 通码和断码是以什么样的序列发送到你的计算机,从而使得字符G 出现在你的字处理软件里的呢?因为这是一个大写字母,需要发生这样的事件次序:按下Shift 键,按下G键,释放G 键,释放

10、Shift 键,与这些时间相关的扫描码如下:Shift 键的通码12H,G 键的通码34H, G 键的断码F0H 34H, Shift 键的断码F0H 12H,因此发送到你的计算机的数据应该是:12H 34H F0H 34H F0H 12H。第二套扫描码:101 102 和104 键的键盘:KEY通码断码KEY通码断码KEY通码断码A1CF0 1C 946F0 46 54F0 54B32F0 320EF0 0EINSERTE0 70E0F0 70C21F0 21-4EF0 4EHOMEE0 6CE0F06CD23F0 23=55F0 55PG UPE0 7DE0F07DE24F0 245DF0

11、 5DDELETEE0 71E0F071F2BF0 2BBKSP66F066ENDE0 69E0F069G34F034SPACE29F029PG DNE0 7AE0F07AH33F033TAB0DF00DU ARROWE0 75E0F075I43F043CAPS58F058L ARROWE0 6BE0F06BJ3BF03BL SHFT12F012D ARROWE0 72E0F072K42F042L CTRL14F014R ARROWE0 74E0F074L4BF04BL GUIE0 1FE0 F0 1FNUM77F077M3AF03AL ALT11F011KP /E0 4AE0F04AN31F

12、031R SHFT59F059KP *7CF07CO44F044R CTRLE0 14E0F0 14KP -7BF07BP4DF0 4DR GUIE0 27E0 F027KP +79F079Q15F015R ALTE0 11E0 F011KP ENE0 5AE0F05AR2DF02DAPPSE0 2FE0 F0 2FKP71F071S1BF01BENTER5AF05AKP 070F070T2CF02CESC76F076KP169F069U3CF03CF105F005KP272F072V2AF02AF206F006KP37AF07AW1DF01DF304F004KP46BF06BX22F022F

13、40CF00CKP573F073Y35F035F503F003KP674F074Z1AF01AF60BF00BKP76CF06C045F045F783F083KP875F075116F016F80AF00AKP97DF07D21EF01EF901F00158F058326F026F1009F009;4CF04C425F025F1178F07852F05252EF02EF1207F007,41F041636F036PRNTSCRNE0 12E0 7CE0 F07C E0F0 12.49F04973DF03DSCROLL7EF0,7E/4AF04A83EF03EPAUSEE1 14 77E1 F0

14、 14F0 77-NONE-ACPI 扫描码:KEY通码断码PowerE0, 37E0, F0, 37SleepE0, 3FE0, F0, 3FWakeE0, 5EE0, F0, 5EWindows 多媒体扫描码:KEY通码断码Next TrackE0, 4DE0, F0, 4DPrevious TrackE0, 15E0, F0, 15StopE0, 3BE0, F0, 3BPlay/PauseE0, 34E0, F0,34MuteE0, 23E0, F0,23Volume UpE0, 32E0, F0,32Volume DownE0, 21E0, F0,21Media SelectE0,

15、50E0, F0,50E-MailE0, 48E0, F0,48CalculatorE0, 2BE0, F0,2bMy ComputerE0, 40E0, F0,40WWW SearchE0, 10E0, F0,10WWW HomeE0, 3AE0, F0,3aWWW BackE0, 38E0, F0,38WWW ForwardE0, 30E0, F0,20WWW StopE0, 28E0, F0,28WWW RefreshE0, 20E0, F0,20WWW FavoritesE0, 18E0, F0,18三、实验说明 上面说了这么一大通,如果是第一次接触PS/2协议的朋友一定是头大了,如果

16、你用别的MPU做过PS/2的通信,那么上面的协议对于你只是小case,权当复习一下好了。 下面要开始动手实践了,协议一大堆内容,我们要做的是一个相对比较容易的实验,达到入门的目的即可,当然更深入的探讨有兴趣的朋友可以在这个基础上继续。实验内容通过FPGA把大写字母A-Z转换成相应的ASCII码,只要字母按键被按下,就能在串口调试助手里显示相应大写字母。四、verilog代码以及详细注释 除了顶层模块(ps2_key),三个底层模块分别为PS/2传输处理模块(ps2scan)、串口传输模块(my_uart_tx)以及串口波特率选择模块(speed_select)(下面只给出顶层模块和PS/2传输处理模块的verilog代码,串口部分的设计可以参考串口通信设计)。 详细的project代码参考在同目录文件夹ps2verilog下,该代码下载配置后,接上PS/2键盘(注意PS/2一般不支持热拔插,最好CPLD下载后在掉电状态下插入PS/2键盘,然后上电),随后打开串口调试助手,如果按下键盘上A-Z任意个键,串口调试助手即可显示相应字母。(串口调试助手在附赠光盘软件目录下,注意设置好波特率,默认波特率为9600bps,代码中可以随意调整;8位数据,不需要校验位)。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1