PS/2 packet parser and datapath

See also: PS/2 packet parser.

Now that you have a state machine that will identify three-byte messages in a PS/2 byte stream, add a datapath that will also output the 24-bit (3 byte) message whenever a packet is received (out_bytes[23:16] is the first byte, out_bytes[15:8] is the second byte, etc.).

out_bytes needs to be valid whenever the done signal is asserted. You may output anything at other times (i.e., don't-care).

另请参阅:PS/2 数据包解析器。

现在,您已经拥有了一台状态机,该状态机将识别 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); //

    parameter idle=4'b0001,
    		first=4'b0010,
    		second=4'b0100,
    		third=4'b1000;
    reg [3:0]state,nstate;
    
    always@(*)begin
        case(state)
            idle:begin
                if(in[3])begin
                    nstate=first;
                end
                else begin
                    nstate=idle;
                end
            end
            first:nstate=second;
            second:nstate=third;
            third:begin
                if(!in[3])begin
                    nstate=idle;
                end
                else begin
                    nstate=first;
                end
            end
        endcase
    end
    
    always@(posedge clk)begin
        if(reset)begin
            state<=idle;
        end
        else begin
            state<=nstate;
        end
    end
    
    reg [23:0]data;
    assign done=(state==third);
        always @(posedge clk) begin
        if (reset) begin
            data <= 24'd0;
        end
        else begin
            data[23:16] <= data[15:8];
            data[15:8] <= data[7:0];
            data[7:0]  <= in;
        end
    end

    assign out_bytes = (done) ? data : 24'd0;

endmodule

在上一题的基础上,增加一个数据流录入的模块

posted @   江左子固  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示