module pipeline(
clk, rst_n, valid_i, valid_o, ready_i, ready_o, data_i, data_o
);
input clk;
input rst_n;
input valid_i;
input ready_i;
input[7:0] data_i;
output[7:0] data_o;
output valid_o;
output ready_o;
reg valid_o;
reg[7:0] data_o;
assign ready_o = ready_i || ~valid_o;
assign handshake = valid_i && ready_o;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
valid_o <= 1'b0;
else if(handshake)
valid_o <= valid_i;
end
always@(posedge clk or negedge rst_n)begin
if(handshake)
data_o <= data_i;
end
endmodule
pipeline.v【握手(valid打拍)/清除气泡】
于 2022-03-03 15:45:46 首次发布
本文详细介绍了一种模块化的数据管道设计,通过valid_i和ready_o信号实现数据和握手信号的同步。它包括一个用于控制valid_o有效性的时序逻辑,以及确保数据正确传输的always块。适合于理解高级别系统中数据流的控制和同步机制。
摘要由CSDN通过智能技术生成