PS接口键盘的输入识别电路设计报告文档格式.docx
《PS接口键盘的输入识别电路设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《PS接口键盘的输入识别电路设计报告文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
3.将VerilogHDL语言运用的更加熟练。
二、研究方法及手段应用
1.将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;
2.学习PS2键盘协议;
3.分模块实验箱调试。
三、课程设计预期效果
1.完成实验环境搭建;
2.以通用的PS2键盘为输入,设计一个能够识别PS2键盘输入编码的电路,并把键值通过数码管显示;
3.至少能够识别0~9的数字键。
学生姓名:
吴韬专业年级:
09级自动化
摘要
PS/2键盘是一种常用的计算机输入设备,只需稍加改动,便可很方便的应用在各种嵌入式系统中。
本文提出了一种利用FPGA来设计PS/2接口的方法,结果表明此方法有容易实现模块化和移植性强的特点。
【关键词】PS/2接口嵌入式系统FPGA
ABSTRACT
PS/2keyboardisageneralinputofcomputesystem.Itcanbeeasilyequippedwithvariousembeddedsystems.ThispaperdescribesanewmethodtodesignPS/2interfacewithFPGA.Theresultindicatesthatthedesignhasthefeaturesofeasymodularizationandpowerfultransplantablecapability.
【Keywords】PS/2interface。
embeddedsystem。
FPGA
第一章系统设计
第一节课题目标及总体方案
键盘作为嵌入式系统的一种最常用人机接口设备,在嵌入式系统中有着相当广泛的应用。
但开发者一般均采用自行设计的简易矩阵键盘,这类键盘仅仅是按行、列排列起来的矩阵开关,往往需要单独设计并制作,通用性不强。
当需要较多的按键时,则会占用较多的I/O端口,在软件上则要进行上电复位按键扫描及通信处理,而且还要加上按键的去抖动处理,增大了系统的软硬件开销。
而PS/2键盘,内嵌自动去除按键抖动的设计,自动地识别键的按下与释放,软硬件可发简便,价格便宜,稳定可靠,将PS/2键盘作为嵌入式系统的输入设备已经成为可行的方案。
而目前关于PS/2键盘控制的应用大部分采用单片机控制,与单片机相比,FPGA具有比单片机更加灵活,集成度更高,容易移植等特点。
本文在分析PS/2协议和PS/2键盘工作原理与特点的基础上,给出了在ALTERACyclone系列EPIC6Q240C8上对PS/2键盘接口的实现方法。
第二节PS/2接口协议简介
一、PS/2物理特性
PS/2设备接口用于许多现代的鼠标和键盘,它最初由IBM开发,最常见的为6脚mini-DIN,其引脚结构和外形如图1所示。
图1PS/2硬件接口外形图PS/2设备有主从之分,现在广泛使用的PS/2键盘鼠标均工作在从设备方式下。
PS/2接口的时钟与数据线都是集电极开路结构,必须外接上拉电阻,一般上拉电阻设置在主设备中,主从设备之间的数据通信采用双向同步方式传输,时钟信号一般由从设备产生。
二、数据包的结构
键盘的状态每改变一次,键盘至少会发出三个字节的数据包,在有键按下时会向主机发送该键的通码(MakeCode),当键释放时发送断码(BreakCode)。
例如:
键“A”的通码为0x1C,键“A”的断码为:
0xF0,0x1C,因此当要传送键“A”时,键盘发送的数据包的代码是:
0x1C,0xF0,0x1C。
3、接口的时序逻辑
PS/2协议是一种双向半双工串行通信协议,时钟信号由键盘产生,最大时钟频率为33kHz,推荐频率在15kHz。
通信两端通过Clock同步,通过Data交换数据,任何一方如果想禁止另一方通信时,只需将Clock拉到低电平。
其传输时序根据传输的方向不同分为发送和接收两个不同时序逻辑,图2是从键盘到主机的时序图。
其中:
Start:
起始位,总为‘0’(低电平)
Data0~Data7:
8位数据位(低位在前,高位在后)
Parity:
奇偶校验位(为奇校验)
Stop:
停止位,总为‘1’(高电平)
当键盘要向主机通信时,键盘总是首先检查时钟线是否为高电平,如果不是则表明是主机正在通信,必须缓冲要发送的数据直到重新获得总线的控制权(键盘有16个字节的缓冲区),即等到时钟线是高电平才能发送数据。
而且从键盘到主机的数据只能在时钟的下降沿时才能被读取。
当主机到键盘进行通信时,主机会首先把时钟线和数据线设置为“请求发送”状态。
具体方式为:
首先下拉时钟线至少100μs来抑制通信,然后下拉数据线“请求发送”,最后释放时钟。
在此过程中,键盘在不超过10μs的间隔内就会检查这个状态。
当键盘检查到这个状态时,就开始产生时钟。
和键盘发送的数据读取方式不一样,主机发送的数据必须在时钟的上升沿读取。
4、结果与讨论
第一节PS/2接口的逻辑仿真
本次设计采用了自上而下的模块设计方法,考虑需要设计以下几部分模块:
串并转换模块,分拣接收模块,控制模块,封装发送模块等。
这几部分的逻辑关系如图3所示:
串并转换模块主要是接收和发送传输数据,能够把串行数据转变成所需要的并行数据。
分拣接收模块功能是把串并转换模块传过来的数据包按照一定的要求进行分拣提取,从而得到有用的信息。
控制模块是设计的核心,PS/2接口是半双工串行总线,因此其发送和接收不能同时进行,需要控制模块对其时序进行严格的控制。
控制模块负责协调整个设计的全过程,在本设计中采用了状态机的设计思路。
封装发送模块和分拣接收模块类似,只不过是把要传送的命令数据转变成PS/2协议要求的发送数据包的格式。
整个设计的流程图如图4所示:
当系统上电或复位时,主设备首先向键盘发送初始化信号,在得到键盘的应答信号后,系统进入到了总线空闲状态,可以进行数据的发送和接收,但主设备拥有更高的优先级,正处在接收状态时如果得到发送请求,会中断数据接收,直接进入数据发送状态。
第二节硬件验证
硬件验证在JH-FPGA0233实验箱实现,在系统中用到复位电路,电源电路,FPGA芯片,程序下载电路,PS/2接口电路,数码显示电路等。
选取Cyclone系列EPIC6Q240C8型FPGA器件进行综合,将综合后的配置文件下载到开发板之后,系统上电,PS/2设备初始化后在实验箱正确观察到了键盘的输入。
图5(接收数字,显示ASCII码)图6(接收字母,显示ASCII码)
心得体会
课程设计完成了,在这个过程中我学到了很多东西。
首先FPGA的硬件验证表明,设计的各个模块成功地实现了复位后的数据传送过程,达到了预期的目标。
VerilogHDL语言的通用性决定了其具有移植性强的特点,对实际的应用具有一定的参考价值。
本文作者创新点:
本文所作的研究是在利用单片机实现PS/2接口的基础上,重新用FPGA实现了对PS/2接口的控制。
该方法较传统的单片机实现方法具有实现简单,移植性强,便于集成等特点。
参考文献
[1]张琴,向先波,徐国华.PS/2键盘在基于PIC单片机的远程多温度点巡检系统中的应用机械与电子,2006(8):
40-42.
[2]苗新法,王秀华.PS/2键盘在嵌入式系统中的应用研究[J].兰州交通大学学报(自然科学版),2007
(1).
[3]刘勇,王玉晶,曲斌,于洋.一种嵌入式PC非标准键盘的设计
附录
程序:
/`timescale1ns/1ps
moduleps2(clk,rst_n,ps2_clk,ps2_data,ps2_byte)。
inputclk,rst_n,ps2_clk,ps2_data。
output[7:
0]ps2_byte。
//²
¶
×
½
Ï
Â
µ
Ñ
Ø
regps2_clk0,ps2_clk1,ps2_clk2。
wireneg_ps2_clk。
always@(posedgeclkornegedgerst_n)
if(!
rst_n)
begin
ps2_clk0<
=1'
b0。
ps2_clk1<
ps2_clk2<
end
else
=ps2_clk。
=ps2_clk0。
=ps2_clk1。
assignneg_ps2_clk=ps2_clk2&
~ps2_clk1。
//°
´
Õ
Ê
±
Ð
ò
ø
È
¡
ý
reg[7:
0]ps2_byte_r。
//ouputps2_byte¶
Ô
Ó
¦
Ä
¼
æ
Æ
÷
ä
Á
¿
0]temp_data。
//Ê
?
»
º
³
å
reg[3:
0]num。
temp_data<
=8'
num<
elseif(neg_ps2_clk)//µ
£
¬
ö
·
¢
þ
case(num)
4'
d0:
=num+1。
//¿
ª
Ì
d1:
temp_data[0]<
=ps2_data。
d2:
temp_data[1]<
d3:
temp_data[2]<
d4:
temp_data[3]<
d5:
temp_data[4]<
d6:
temp_data[5]<
d7:
temp_data[6]<
d8:
temp_data[7]<
d9:
d10:
=0。
default:
。