现在您有了一个状态机,可以识别 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
浙公网安备 33010602011771号