现在您有了一个状态机,可以识别 PS/2 字节流中的三字节消息,添加一个数据路径,该路径也将在收到数据包时输出 24 位(3 字节)消息( out_bytes[23:16] 是第一个字节, out_bytes[15:8] 是第二个字节,依此类推)。

out_bytes 都 需要有效 完成 信号 您可以在其他时间输出任何内容(即,不关心)。

例如:

 

module top_module(
    input clk,
    input [7:0] in,
    input reset,    // Synchronous reset
    output [23:0] out_bytes,
    output done); //
    reg [2:0]state,nstate;
    parameter IDLE=3'd0,B1=3'd1,B2=3'd2,B3=3'd3;
    always@(*)
        begin
            case(state)
                IDLE:nstate=in[3]?B1:IDLE;
                B1:nstate=B2;
                B2:nstate=B3;
                B3:nstate=in[3]?B1:IDLE;
                default:nstate=IDLE;
            endcase
        end
    always@(posedge clk)
        begin
        if(reset)
             state<=IDLE;
        else
             state<=nstate;
        end       
    // FSM from fsm_ps2
        assign done=(state==B3);
    always@(posedge clk)
        begin
            if(reset)
                out_bytes<=24'd0;
            else
                out_bytes<={out_bytes[15:0],in};
        end
    // New: Datapath to store incoming bytes.

endmodule

 

posted on 2022-05-13 20:45  USSTer  阅读(231)  评论(1)    收藏  举报