PS2键盘接口电路设计论文

上传人:少*** 文档编号:59473060 上传时间:2022-03-03 格式:DOC 页数:22 大小:1.29MB
收藏 版权申诉 举报 下载
PS2键盘接口电路设计论文_第1页
第1页 / 共22页
PS2键盘接口电路设计论文_第2页
第2页 / 共22页
PS2键盘接口电路设计论文_第3页
第3页 / 共22页
资源描述:

《PS2键盘接口电路设计论文》由会员分享,可在线阅读,更多相关《PS2键盘接口电路设计论文(22页珍藏版)》请在装配图网上搜索。

1、课程设计(报告)任务书(理 工 科 类)、课程设计(报告)题目: PS/2接口键盘的输入识别电路设计 、课程设计(论文)工作内容一、课程设计目标 硬件描述语言是一门技术性、应用性很强的学科,实验课教学是它的一个极为重要的环节。不论理论学习还是实际应用,都离不开实验课教学。如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节、学习与应用脱节的局面。HDL项目设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及时序逻辑、组合逻辑、声光输出的,具有实用性、趣味性的小系统设计,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实

2、际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、使用Verilog HDL语言编写程序;3、使用Modesim6.0和 Quartus II软件进行仿真。三、课程设计预期效果(1) 以通用的PS/2键盘为输入,设计一个能够识别PS/2键盘输入编码的电路,并把键值通过数码管显示;(2) 至少能够识别09的数字键。学生姓名: 专业年级: 摘 要键盘是嵌入式系统的最重要的输入设备之一,是实现人机交互的重要途径。除了可以自行设计扫描式矩阵键盘之外,还可以选择标准 P

3、S/2键盘实现人机交互。扫描式矩阵键盘虽然电路简单,但不具有通用性,当需要使用较多的按键输入时,则会占用较多的I/O 端口,在软件上则要进行上电复位、按键扫描及通信的处理,而且还要加上按键的去抖动处理,增大了系统软、硬件的开销,开发周期较长。标准PS/2 键盘由于接口通信协议简单,在系统中占用软硬件资源少,高可靠性,表达信息量大而得到了越来越广泛的应用本设计根据PS/2键盘的通信时序,利用Verilog HDL硬件描述语言来设计PS/2接口键盘的输入识别电路,并在CPLD/FPGA上实现,避免了硬件电路的焊接与测试。Verilog HDL语言满足数字系统设计和综合的所有要求,设计中充分运用Ve

4、rilog HDL层次化与模块化的思想,使整个设计过程简单、灵活。同时运用EDA工具Modesim6.0验证设计,并在Quartus II软件平台的基础上,给出了PS/2接口键盘输入识别的各个功能模块及对应模块具体电路图。经过对系统进行编译、仿真、测试,完成把键盘按键扫描码转换成字符ASCII码过程,成功实现PS/2接口键盘的输入识别及显示的功能。本设计具有较好的通用性和可移植性,可取代自行设计扫描式矩阵键盘而用于许多嵌入式系统设计中。【关键词】PS/2接口键盘 FPGA Verilog HDL Quartus II ABSTRACTThe keyboard is embedded syste

5、m is one of the most important input devices is an important way to achieve human-computer interaction. In addition to design their own keyboard scanning matrix, but also can select the standard PS / 2 keyboard to achieve human-computer interaction. While scanning the keyboard matrix circuit is simp

6、le, but do not have the universal, the keys when you need to use more input, will take up more of the I / O port, the software will have to be on-reset, scan and communicate key treatment, but also with the keys to the dithering and increase the system software and hardware overhead, a longer develo

7、pment cycle. Standard PS / 2 keyboard interface communication protocol as simple hardware and software resources in the system occupied less, high reliability, large amount of information and expression have been more widely used PS/2 keyboard according to the design of the communication sequence, u

8、sing Verilog HDL hardware Interface description language to design the PS/2 keyboard input recognition circuit, and the CPLD / FPGA to achieve, to avoid the welding and testing of hardware circuits. Verilog HDL language for digital system design and integration of all requirements, make full use of

9、Verilog HDL design hierarchy and modularity of thought, so the whole design process is simple and flexible. At the same time validate the design using EDA tools Modesim6.0 and Quartus II software platform, based on the PS/2 interface, keyboard input is given recognition and the corresponding modules

10、 of each module the specific circuit. After compiling the system, simulation, testing, completion of the keyboard scan codes into ASCII code characters in the process of successfully identifying PS/2 interface, keyboard input and display functions. This design has good versatility and portability, d

11、esigned to replace the keyboard scan matrix used in many embedded system design.【Key words】PS/2 keyboard interface FPGA Verilog HDL Quartus II 第一章 系统设计第一节 课题目标及总体方案一、课题目标本课程设计要求以通用的PS/2键盘为输入,设计一个能够识别PS/2键盘输入编码的电路,并把键值通过数码管显示,同时至少能够识别09的数字键。通过查阅资料,运用EDA工具Modesim6.0验证设计,并运用Quartus II编译,给出PS/2接口键盘输入识别的

12、各个功能模块及对应模块具体电路图。经过对系统进行编译、仿真、测试,从而完成把键盘按键扫描码转换成字符ASCII码过程,实现PS/2接口键盘的输入识别及显示的功能。二、总体方案本课程设计中采用模块化,用键盘扫描输出端作为数据总线来对整个程序控制,各模块共一个系统时钟,数字信号源模块的时钟选择为1MHZPS/2键盘采用是键盘内部的时钟。其总体设计如下图1.1.1所示。图1.1.1 系统总体设计第二节 设计原理一、PS/2模块1、SP/2键盘接口PS/2通信协议是一种双向同步串行通迅协议。通迅的两端通过CLOCK(时钟信号端)同步,并通过DATA(数据端口)交换数据。任何一方如果想要抑制另外一方的通

13、迅时,只需要把CLOCK拉到低电平。PS/2控制接口仅使用到两条传输端口,一为频率端口,另一则为数据端口如图2.1所示,且此传输埠必为三态并具有双向特性。PS/2 传输产品上,常见为鼠标与键盘,两者的驱动原理均相同,仅扫描码不同。以PS/2键盘为例进行说明Male (Plug)Female (Socket)6-pin Mini-DIN (PS/2): 1 - Data 2 - Not Implemented 3 - Ground 4 - Vcc (+5V) 5 - Clock 6 - Not Implemented图1.2.1 PS/2 端口脚位定义2、 数据格式表1.2.1 数据帧格式1个起

14、始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。PS/2设备的clock和data都是集电极开路的,平时都是高电平。当PS/2设备等待发送数据时,它首先检查clock是否为高。如果为低,则认为PC抑制了通讯,此时它缓冲数据直到获得总线的控制权。如果clock为高电平,PS/2则开始向PC发送数据。一般都是由PS/2设备产生时钟信号。发送按帧格式。数据位在clock为高电

15、平时准备好,在clock下降沿被PC读入。数据从键盘/鼠标发送到主机或从主机发送到键盘/鼠标,时钟都是PS/2设备产生.主机对时钟控制有优先权,即主机想发送控制指令给PS/2设备时,可以拉低时钟线至少100S,然后再下拉数据线,最后释放时钟线为高。PS/2设备的时钟线和数据线都是集电极开路的,容易实现拉低电平。3、数据发送时序从ps/2向PC机发送一个字节是可按照下面的步骤进行的:(1)检测时钟线电平,如果时钟线为低,则延时50;(2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1);(3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向 ps/2设备

16、发送数据,所以ps/2设备要转移到接收程序处接收数据);(4)延时20(如果此时正在发送起始位,则应延时40);(5)输出起始位(0)到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制ps/2设备,如果有则中止发送;(6)输出8个数据位到数据线上;(7)输出校验位;(8)输出停止位(1);(9)延时30(如果在发送停止位时释放时钟信号则应延时50);通过以下步骤可发送单个位:(1)准备数据位(将需要发送的数据位放到数据线上);(2)延时20;(3)把时钟线拉低;(4)延时40;(5)释放时钟线;(6)延时20。当然在做设计时是不用严格按照这个时间的,只要满足它的时序

17、就能实现功能。图1.2.2 键盘接口时序 (a)键盘发送时序;(b)键盘接收时序4、键盘的返回值现在PC机使用的PS/2键盘都默认采用第二套扫描码集,扫描码有两种不同的类型:通码(make code)和断码(break code)。当一个键被按下或持续按住时,键盘会将该键的通码发送给主机;而当一个键被释放时,键盘会将该键的断码发送给主机。第二套通码都只有一个字节宽,但也有少数“扩展按键”的通码是两字节或四字节宽,这类码的第一个字节总是0xE0。与通码一样,每个按键在释放的时候,键盘就会发送一个断码。每个键也都有它自己的唯一的断码,断码与断码之间存在着必然的联系。多数第二套断码有两个字长,它们的

18、第一个字节是0xF0,第二个字节就是对应按键的通码。扩展按键的断码通常有三个字节,前两个字节0xE0和0xF0,最后一个字节是这个按键通码的最后一个字节。附录列出了本次课程设计中所用键盘的扫描码。二、八位七段数码管显示模块八位七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相么。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、d

19、p都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。其单个静态数码管如下图1.2.3所示,数码管显示模块的电路原理如图1.2.4所示。图1.2.3 静态七段数码管图1.2.4 数码管显示电路第三节 模块设计一、 总体设计图1.3.1 总模块电路及管脚分配图模块化处理使得结构清晰,编程更加方便。总体分为两个部分,即PS/2接收模块和数码管显示模块。具体电路如图3.1所示。电路模块连接的端线说明:输入端:时钟clk为50MHz,rst为复位键低电平有效,clock和data_PS/2分别为键盘的时钟端和数据端;模块间连线:data3:0为四位数据输出(已转化为十

20、六进制),change为按键放开信号;输出端:dataout7:0为数码管数据端,ledcom3:0为数码管位选。二、PS/2接收模块接收模块的主要作用是根据时钟信号接收来自PS/2键盘的数据,接收完毕所存并转化为十六进制BCD码,并在按键放开时发出信号change。识别按键Backspace,并发出信号back。三、数码管显示模块数码管显示模块实现的功能就是依次在4位数码管上显示输入的键值,并在Backspace键入后全部清零。第四节 软件设计一、PS/2模块1、接收数据模块主要根据时钟依次接收8个字节的数据。2、数据判断与锁存模块判断接收到的是什么数据。如果是Backspace则发送信号,

21、否则锁存,等待按键放开后发送信号。3、键值转化模块把所存的数据转化为16进制BCD码,并发送至端口。二、数码管显示模块1、数据接收模块用一个16位的寄存器接收来自PS/2模块发送的数据,change信号到来左移四位并给低四位赋值。2、分频模块:主要提供数码管动态扫描的频率,频率应适中,否则数码管不能正常工作。3、位选信号模块通过一个两位寄存器进行计数,使产生信号对应四个数码管的选通与赋值。4、位选模块和数据模块对数码管进行位选并赋值。5、译码模块对赋给数码管的数据进行译码,使共阳数码管显示正确的字样。三、程序流程图 图1.4.1 程序流程图第二章 结果与讨论第一节 调试步骤调试步骤如下:双击M

22、odesim6.0软件快捷图标进入Modesim6.0集成开发软件,进行对所写的基于Verilog HDL语言的程序编译、修改及仿真。双击 Quartus II软件快捷图标进入Quartus II集成开发环境,新建工程项目文件,并在该项目下新建Verilog源程序文件,输入程序代码,建立模块层次结构图,然后为该工程项目选择一个目标器件并对相应的管脚进行锁定,保存后编译。如果编译成功则将程序下载到实验箱进行操作。最后观察操作结果,反复调试直到达到设计要求。图2.1.1 管脚分配图2.1.2 开始编译图2.1.3 编译成功后下载到实验箱第二节 出现的问题与分析课程设计中碰到一些问题,比如:硬件问题

23、、软件问题、编程问题、操作问题。硬件问题主要是试验箱的损坏,包括缺少某些元件模块、按键失控、数码管显示失常、数据线损坏等;软件问题主要反映在计算机上软件未注册、部分文件丢失造成无法运行、数字信号模块的时钟没有选对;操作问题主要有未按软件使用说明书上的顺序执行、实验箱的电源没有插好、电脑没有找到硬件、把实验箱与电脑连接的时候,发现实验箱与电脑无法正常的进行数据交换等。试验前检查计算机软硬件、实验箱、数据线等有无问题,按照软件操作顺序操作软件,认真完成,能有效解决上述问题。碰到问题最多的是编程问题,通过查阅相关资料,如PS/2键盘接口使用、应用单片机完成本课设内容的例子程序等,我了解到编程时可不需

24、要在程序中编写模块调用,只要将编写的模块生成对应的器件并用端线连接起来,从而形成层次模块化电路,使课程设计简单明了。第三章 心得体会一、 评估结果本次课程设计成功实现了较为简单的PS/2键盘按键输入功能,并且显示在数码管上。此项技术在生活中已得到广泛应用,我对它的学习使得我对通信协议有了进一步的理解。在课程设计中还有很多功能未能实现,比如组合按键、键盘接收数据等。这些功能或多或少有一些硬件或时间方面的限制未能实现,随着今后的学习希望能逐步对其进行改善,使其丰富起来。二、 扩展设想可以通过按下外接键盘的按键,使实验箱上除了显示键盘的扫描码外播放音乐的基准音符,也可以通过12位LED灯的点亮数目来

25、记录你按下了多少次按键。三、自我体会HDL项目设计的目的就是让我们在理论学习的基础上,通过完成一个涉及时序逻辑、组合逻辑、声光输出的,具有实用性、趣味性的小系统设计,使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。课程设计完成了,在这个过程中我学到了很多东西。首先在遇到困难时学会自己想办法解决,培养了自己的毅力和实践动手能力。并且在项目中更深层次地了解Verilog HDL这门课程,更加熟悉了它的编程方式以及编程语言。然后在查阅资料时,还了解了很多关于同步、异步通信的知

26、识。通过编程,我发现VHDL语言跟C语言、汇编语言在某些方面是相通的,所以无形之中我也对计算机语言有了更深的认识。收获最大的是不管以后干什么,都要从大处着眼,小处着手,先将任务分成几个部分,再一部分一部分的去完成,最终再完成总体的设计,不然直接设计一个整体的模型,不方便调试,出了错也不知道是哪部分出了问题。在课设中我付出了很多,也收获很多。我觉得本次课程设计无论对于学习还是自身的成长方面都有较大帮助。参考文献1 夏宇闻Verilog数字系统设计教程(第二版)M北京:北京航空航天大学出版社,20082 张延伟,杨金岩等Verilog HDL程序设计实例详解M北京:人民邮电出版社,20083 刘韬

27、,楼兴华FPGA数字电子系统设计与开发实例导航M北京:人民邮电出版社,20054 潘松,黄继业EDA技术实用教程(第二版)M北京:科学出版社,20055 杨秀增,黎运宇基于FPGA的标准PS/2键盘接口电路设计J南宁师范高等专科学校学报(自然科学版),2009,263:129131附 录一、 器件清单Modesim6.0软件、Quartus II软件、EDA试验箱、计算机键盘二、试验效果图当在键盘上按下数字9时,数码管上显示数字9。 当在键盘上按下字母e时,数码管上显示字母e。当按下试验箱上的复位键时,数码管上显示数字0。三、所用键值表KEY通 码断 码045F0 45116F0 1621EF

28、0 1E326F0 26425F0 2552EF0 2E636F0 3673DF0 3D83EF0 3E946F0 46A1CF0 1CB32F0 32C21F0 21D23F0 23E24F0 24F2BF0 2B三、源程序/*键盘主模块*/module ps2(rst,clk,data_ps2,data,change); input rst;input clk;input data_ps2; /键盘输入数据(bit)output 3:0 data;output change;reg 3:0 data; /数据传输wire change; /读数信号reg 3:0 num; /计数寄存器re

29、g 7:0 temp_data; /当前接收数据寄存器reg 7:0 temp; /锁存always (negedge clk or negedge rst) begin if(!rst) begin num = 4d0; temp_data = 8d0; end else if(!clk) /检测到clk的下降沿 begin case (num) /第num位4d0:begin if(data_ps2=0) num = num+1b1; else num=0; /起始位检测 end4d1:begin num = num+1b1; temp_data0 = data_ps2;/bit0end4

30、d2:begin num = num+1b1; temp_data1 = data_ps2;/bit1end4d3:begin num = num+1b1; temp_data2 = data_ps2;/bit2end4d4:begin num = num+1b1; temp_data3 = data_ps2;/bit3end4d5:begin num = num+1b1; temp_data4 = data_ps2;/bit4end4d6:begin num = num+1b1; temp_data5 = data_ps2;/bit5end4d7:begin num = num+1b1; t

31、emp_data6 = data_ps2;/bit6end4d8:begin num = num+1b1; temp_data7 = data_ps2;/bit7end4d9:begin num = num+1b1;/奇偶校验位,不做处理end4d10: begin num = 4d0;/ num清零enddefault: ;endcase endendreg key_f0;/松键标志位,置1表示接收到数据8hf0,接收到下一个数据后清零always (posedge clk or negedge rst)/接收数据的锁存,这里只对1byte的键值进行处理begin if(!rst) begi

32、nkey_f0 = 1b0;temp = 8d0; end else if(num=4d10) begin/刚传送完一个字节数据 if(temp_data = 8hf0) /有键放开,断码出现,准备发送 begin key_f0 = 1b1; end else begin key_f0 = 1b0; temp = temp_data;/锁存当前键值 end endendalways (posedge key_f0 or negedge rst) /key_f0置1表示松动,可以发送数据;否则激将数据锁存begin if(!rst) begin data = 4d0; end else begi

33、ncase (temp)/键值转换为BCD码8d69: data = 4h0; /键值0的ASCII码为Ox458d22: data = 4h1;8d30: data = 4h2;8d38: data = 4h3;8d37: data = 4h4;8d46: data = 4h5;8d54: data = 4h6;8d61: data = 4h7;8d62: data = 4h8;8d70: data = 4h9;8d28: data = 4ha;8d50: data = 4hb;8d33: data = 4hc;8d35: data = 4hd;8d36: data = 4he;8d43:

34、data = 4hf;default: ;endcase endendassign change = key_f0;/取反确保正确赋值时钟endmodule/*/*显示模块*/module xianshi(clk,rst,datain,dataout,ledcom,change);input clk;input rst;input change;input 3:0 datain;output 7:0 dataout; /数码管显示output 3:0 ledcom;reg 3:0 ledcom;reg 1:0 comclk; /位选信号reg 3:0 bcd_led;reg 7:0 datao

35、ut;reg 15:0 datareg;reg 8:0 c;reg clkin;always (posedge change or negedge rst) /数据变换begin if(!rst) datareg=16d0; else datareg=datareg11:0,datain; /数据移位寄存器,新的数据移入,旧的数据的高4位移出endalways (posedge clk)begin if(c11d2000) /控制频率 c=c+11d1; else begin c=11d0; clkin=clkin; endendalways (posedge clkin or negedge

36、 rst)/位选信号comclkbegin if (!rst) comclk = 0; else begin if (comclk = 2b11) /一帧数据接收完 begin comclk = 0; end else begin comclk = comclk + 1; end endendalways (comclk) /位选,选择数码管的位置,从右到左为03begin if (comclk = 2b00) ledcom = 4b1110; /共阳 else if (comclk = 2b01) ledcom = 4b1101; else if (comclk = 2b10) ledcom

37、 = 4b1011; else ledcom = 4b0111;endalways (comclk) /数据选择beginif (comclk = 2b00) bcd_led = datareg3:0;else if (comclk = 2b01) bcd_led = datareg7:4;else if (comclk = 2b10) bcd_led = datareg11:8;else bcd_led = datareg15:12;endalways (bcd_led) /译码begincase (bcd_led) /共阳,ha4b0000 : dataout = 8b11000000;/

38、 /0 4b0001 : dataout = 8b11111001; /14b0010 : dataout = 8b10100100;/24b0011 : dataout = 8b10110000;/34b0100 : dataout = 8b10011001;/44b0101 : dataout = 8b10010010;/54b0110 : dataout = 8b10000010; /64b0111 : dataout = 8b11111000;/74b1000 : dataout = 8b10000000;/84b1001 : dataout = 8b10010000; /94b1010 : dataout = 8b10001000; /A4b1011 : dataout = 8b10000011;/b4b1100 : dataout = 8b10100111;/c4b1101 : dataout = 8b10100001;/d4b1110 : dataout = 8b10000100;/e4b1111 : dataout = 8b10001110;/Fdefault : dataout = 8b00000000; endcaseendendmodule/*/

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!