欢迎光临散文网 会员登陆 & 注册

HDLBits (133) — PS/2 数据包解析器

2022-05-17 02:17 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Fsm_ps2

PS/2 鼠标协议发送三个字节长的消息。 然而在连续的字节流中,消息的开始和结束位置并不明显。 唯一的提示是每个三字节消息的第一个字节中总是有 bit[3]=1(但其他两个字节的bit[3]可能是1或0,这具体取决于数据)。

我们想要一个有限状态机,当给定输入字节流时,它将搜索消息边界。 我们将使用的算法是通过丢弃字节,直到我们看到 bit[3]=1 成立的字节。 然后我们假设这是消息的字节 1,并在整个 3 个字节都已接收(完成)后发出消息的接收信号。

 有限状态机应该在成功接收到每个消息的第三个字节后立即在循环中发出完成信号。

提供一些时序图来解释所需的行为。

 在无错误的情况下,每三个字节形成的一条消息:

发生错误时,搜索字节 1:

请注意,这与 1xx 序列识别器不同。 此处不允许重叠序列:

题目

提示:

尽管 in[7:0] 是一个字节,但有限状态机只有一个输入:in[3]。

你需要~4状态。 只用三个状态可能不起作用,因为其中一个需要断言完成,并且对于每个接收到的消息完成断言仅给予一个周期的时间。

提示:

答案

有限状态机(Finite-State Machine,FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且也是一种思想方法,在电路设计的系统级和 RTL 级有着广泛的应用。

Verilog 中状态机主要用于同步时序逻辑的设计,能够在有限个状态之间按一定要求和规律切换时序电路的状态。状态的切换方向不但取决于各个输入值,还取决于当前所在状态。状态机可分为 2 类:Moore 状态机和 Mealy 状态机。

PS/2接口是一种PC兼容型电脑系统上的接口,可以用来链接键盘及鼠标。PS/2的命名来自于1987年时IBM所推出的个人电脑:PS/2系列。PS/2鼠标连接通常用来取代旧式的序列鼠标接口(DB-9 RS-232);而PS/2键盘连接则用来取代为IBM PC/AT所设计的大型5-pin DIN接口。PS/2的键盘及鼠标接口在电气特性上十分类似,其中主要的差别在于键盘接口需要双向的沟通。在早期如果对调键盘和鼠标的插槽,大部分的台式机主板不能将其正确识别。现在已经出现共享接口,能够随意插入键盘或鼠标并正确识别处理。

目前PS/2接口已经慢慢的被USB所取代,只有少部分的台式机仍然提供完整的PS/2键盘及鼠标接口,少部分机器则已无PS/2,大部分的机器仅提供一组键盘及鼠标可以共享之PS/2接口或是仅可供键盘使用。有些鼠标及键盘可以使用转换器将接口由USB转成PS/2,亦有可从USB分接成键盘鼠标用PS/2接口的转接线。不过,由于USB接口对键盘无特殊调整下最大只能支持6键无冲突,而PS/2键盘接口可以支持所有按键同时而无冲突。[1]因此大部分主板PS/2键盘连接端口仍然被保留,或是仅保留一组PS/2键盘及鼠标都可共享之PS/2端口,同时保留键盘及鼠标各自单独接口之主板目前已经比较少。

PS/2接口从定义上不支持热插拔,尽管在实践中,大部分PS/2键盘热插拔可以直接使用,但也应当避免热插拔行为。哪怕设备支持混用键盘鼠标接口,跨接口类型的热插拔一般无法实现,需要重启设备后才能正常工作,这是控制器及操作系统共同导致的。

参考内容:

6.3 Verilog 状态机 | 菜鸟教程:

https://www.runoob.com/w3cnote/verilog-fsm.html

PS/2接口 | 维基百科:

https://zh.wikipedia.org/wiki/PS/2接口


HDLBits (133) — PS/2 数据包解析器的评论 (共 条)

分享到微博请遵守国家法律