# 题目

The PS/2 mouse protocol sends messages that are three bytes long. However, within a continuous byte stream, it's not obvious where messages start and end. The only indication is that the first byte of each three byte message always has bit[3]=1 (but bit[3] of the other two bytes may be 1 or 0 depending on data).

We want a finite state machine that will search for message boundaries when given an input byte stream. The algorithm we'll use is to discard bytes until we see one with bit[3]=1. We then assume that this is byte 1 of a message, and signal the receipt of a message once all 3 bytes have been received (done).

The FSM should signal done in the cycle immediately after the third byte of each message was successfully received.

## Module Declaration

module top_module(
input clk,
input [7:0] in,
input reset,    // Synchronous reset
output done);

# 我的设计

PS / 2鼠标协议发送三字节长的消息。但是，在连续的字节流中，消息的开始和结束位置并不明显。唯一的指示是每个三字节消息的第一个字节始终具有bit [3] = 1（但其他两个字节的bit [3]取决于数据可能是1或0）。尽管in [7：0]是一个字节，但FSM只有一个输入：in [3]。

当给定输入字节流时，它将搜索消息边界。我们将使用的算法是丢弃字节，直到看到bit [3] = 1的字节为止。然后，我们假定这是消息的字节1，并且一旦接收到所有3个字节（完成），就发出接收消息的信号。

由此状态转移图就能得到设计：

module top_module(    input clk,    input [7:0] in,    input reset,    // Synchronous reset    output done); //​    parameter a=1,b=2,c=3;    reg [1:0] s,ns;    // State transition logic (combinational)    always@(*)begin        case(s)           a:begin               if(in[3])ns<=b;               else ns<=a;           end            b:begin               ns<=c;           end            c:begin                if(in)ns<=a;               else ns<=c;           end       endcase            end    // State flip-flops (sequential)    always@(posedge clk)begin        if(reset) s <= a;        else s <= ns;    end    // Output logic    reg d;    always@(posedge clk)begin        if(reset)  d=0;        else if(s==c) d=1;        else d=0;    end  assign done=d;endmodule​

# 微信公众号

建立了一个微信公众号“Andy的ICer之路”，此公众号主要分享数字IC相关的学习经验，做公众号的目的就是记录自己的学习过程，很多东西回过头来可能就忘记了，为了记住知识和分享知识，希望自己可以保持更新，有兴趣的朋友可以关注一下！

10-23 6617

09-05 269

10-18 1985

05-24 85

11-12 2563

04-06 84

06-20 532

04-09 90

#### PS2 设备 通信协议

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。