FPGA之PS2解码.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA之PS2解码

单片机实战之PS2解码PS2接口现在虽然比较少见了,由于PS2的时钟频率比较慢,大约在10K左右,已经满足不了单身狗们的手速了,但对于学习FPGA来说,熟悉和掌握PS2的解码还是很有意义的,给你的FPGA接上一块PS2键盘来提升逼格吧。要想实现PS2的解码,首先要介绍PS2协议,下面请看百度内容PS2接口如图,主要有用的引脚就是时钟和数据引脚对于我们来说是有意义的,其他引脚对于解码没有什么意义。PS2解码的时序图:如图,时钟的一个从高到低的下降沿作为起始信号,紧接着传输8位数据为和一位校验位以及结束位,即一次传输10位数据,但这样说是不准确的,因为我们松开键盘的时候会发送出两位数据,这即是通码和断码的区分,按下键盘输出通码,通码是一个字节,10位数据位,松开键盘的时候发送出断码,断码是两个字节,但第一个字节是OXF0,因此我们解码的时候可以只检测第一个字节,如果是通码,则找出对应的按键,如果是0XF0,则可以忽略了,因为它表示我们松开按键不进行操作。部分按键的通码和断码如图所示,完整版请自行百度恕小编啰嗦一句,我们要做的是解码而不是发送数据,当然PS2是一个双向的通信协议,但对于键盘,FPGA只需要接收识别出数据就行,因此我们需要做的是识别出系列按照PS2协议传输过来的数据首先我们要做的是判断出数据传输的起始,即分辨出数据的起始位,数据的起始位是一个时钟下降沿,即判断下降沿的到来,此处采用固定写法,即数据线打两拍后与时钟线上的实时数据比较得到。得到了起始信号,就代表一大波数据也就是九个数据要跑来了,我们要做好接收的准备啊,每个数据的间隔是多大啊,对,10K,我们可以用计数器分频得到10K信号去接收数据,但你有没有想到更好地方法,我们的下降沿标志信号间隔多少啊,同样是10k,我们可以用下降沿标志作为读取信号线的标志。接下来我们就要开始接收得到的数据了,怎么接收呢,我不禁又想到了串转并,将串行的数据一个一个接收一个数据里头,可是我们怎样实现呢,这就需要我们控制了,我们心中要明白,第一位是起始位,2-9位是我们需要的数据,且数据是先低位后高位发送过来的,第十位是校验位,可以不做处理。因此我们下部分主要做的事情就是将2-9位数据提取出来,怎么提取,状态机出场了。利用下降沿标志触发状态机状态的转化,同时控制接收到的字符好的,我们接收到数据了,接下来我们做什么呢,前面说到按键松开和按下都会有数据发出,那我们怎么知道呢,对,通码和断码的区别呗,所以接下来我们就判断接收到的数据来判断按键的状态。现在我们已经得到了按键按下后准确的通码,接下来就可以使用了,例如用它来控制流水灯啊,点亮数码管什么的,这里我就用它将键值的ASCII码通过串口助手发送到电脑上,来看看对不对

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档