《PS2接口通信协议分析》由会员分享,可在线阅读,更多相关《PS2接口通信协议分析(11页珍藏版)》请在金锄头文库上搜索。
1、PS/2接口通信协议分析 1PS/2 键盘通信原理nPS/2设备履行一种双向同步串行协议nPS/2键盘的通信可分为: n键盘主机 n主机键盘 n主机可以是计算机、实验板等,这里我们特指FPGA实验板。 2键盘各针的定义n1、数据输入、输出n2、未定义n3、地n4、电源(+5V)n5、键盘时钟n6、未定义 3PS/2键盘接口协议分析 n每按一个键会产生如下数据n按下产生一组串行数据;n松开产生两组串行数据n每组串行数据1112位,从低位开始传输;n每组数据包括 n1位起始位,低电平; n8位数据位(即扫描码扫描码),从低位开始传输; n1位奇偶校验位n如果扫描码中1的个数为奇数,该位取0;n如果
2、扫描码中1的个数为偶数,该位取1。n1位结束位,高电平;n1位回执位(仅用于主机到键盘通信); n本次实验只用到键盘到主机的通信。 4PS/2键盘接口协议分析 (续)扫描码扫描码n扫描码分为通码和断码,一般用16进制表示 n通码和断码n当一个键被按下就发送通码(Make)n当一个键被释放就发送断码(Break)n每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是按下哪个键n扫描码包含在每组串行数据中5 键盘扫描码6PS/2键盘接口协议分析 (续)一次按键过程产生的数据分析一次按键过程产生的数据分析n举例:按下和松开一次“A”键时产生的数据,注意低位在前n第1组:0001
3、1100001(按下,扫描码1 1C C )n第2组:00000111111(松开前一组,扫描码F0)n第3组:00011100001(松开后一组,扫描码1 1C C )7用数字示波器记录键盘时钟及键盘数据信号8松开A键时记录的串行数据波形键盘时钟串行数据低位在前9PS/2键盘接口程序模块分析 PS/2键盘接口程序分为两个主要模块:n模块1:键盘数据接收及分析n滤波:键盘产生的数据具有毛刺,需要滤波n接收数据n接收11个串行数据,串并转换。n奇偶校验n提取其中8位扫描码n模块2:键盘数据译码及输出n译码n对接收来的数据注意区分是通码还是断码n对0到9等数字以及符号键进行译码n输出:将译码得到的
4、字符输出 10PS/2键盘接口程序片段(滤除毛刺)entity PS2 isport(in_data:in std_logic;-键盘读入数据in_clk :in std_logic; -键盘时钟 );end PS2;architecture behave of PS2 issignal ps_data,d:std_logic;-滤波后的键盘数据signal ps_clk,c:std_logic;-滤波后的键盘时钟signal clock:std_logic;-5MbeginPROCESS(clock)BEGINIF clockevent and clock=1 THEN-滤除键盘信号中的毛刺ps_clk= in_clk;ps_data= in_data;END IF;END PROCESS;n思考一下,以上程序为何可滤除信号中毛刺?n根据PS/2原理,如何设计键盘数据读取、串并转换、扫描码译码等程序?11