/********************************************** _ _ Cook Darwin __
_ descript: author : Cook.Darwin Version: VERA.0.0 creaded: 2017/10/11 madified: ***********************************************/ `timescale 1ns/1ps (* axi_stream = “true” *) module axis_valve_with_pipe #(
parameter MODE = "BOTH"
)(
input button, //[1] OPEN ; [0] CLOSE (* up_stream = "true" *) axi_stream_inf.slaver axis_in, (* down_stream = "true" *) axi_stream_inf.master axis_out
);
axi_stream_inf #(
.DSIZE(axis_out.DSIZE)
)post_axis_in(
.aclk (axis_out.aclk ), .aresetn (axis_out.aresetn ), .aclken (axis_out.aclken )
);
axi_stream_inf #(
.DSIZE(axis_out.DSIZE)
)pre_axis_out(
.aclk (axis_out.aclk ), .aresetn (axis_out.aresetn ), .aclken (axis_out.aclken )
);
generate if(MODE==“BOTH” || MODE==“IN”)
axis_connect_pipe in_axis_connect_pipe_inst( /* axi_stream_inf.slaver */ .axis_in (axis_in ), /* axi_stream_inf.master */ .axis_out (post_axis_in ) );
else begin
axis_direct axis_direct_in_inst( /* axi_stream_inf.slaver */ .slaver (axis_in ), /* axi_stream_inf.master */ .master (post_axis_in ) );
end endgenerate
assign pre_axis_out.axis_tdata = post_axis_in.axis_tdata; assign pre_axis_out.axis_tlast = post_axis_in.axis_tlast && button; assign pre_axis_out.axis_tvalid = post_axis_in.axis_tvalid && button; assign pre_axis_out.axis_tkeep = post_axis_in.axis_tkeep; assign pre_axis_out.axis_tuser = post_axis_in.axis_tuser; assign post_axis_in.axis_tready = pre_axis_out.axis_tready && button;
generate if(MODE==“BOTH” || MODE==“OUT”)begin
axis_connect_pipe out_axis_connect_pipe_inst( /* axi_stream_inf.slaver */ .axis_in (pre_axis_out ), /* axi_stream_inf.master */ .axis_out (axis_out ) );
end else begin
axis_direct axis_direct_out_inst( /* axi_stream_inf.slaver */ .slaver (pre_axis_out ), /* axi_stream_inf.master */ .master (axis_out ) );
end endgenerate
endmodule