| module switch_fabric( |
| clk, reset, data_in0, data_in1, data_in2, |
| data_in3, data_in4, data_in5, data_in_valid0, |
| data_in_valid1, data_in_valid2, data_in_valid3, |
| data_in_valid4, data_in_valid5, data_out0, |
| data_out1, data_out2, data_out3, data_out4, |
| data_out5, data_out_ack0, data_out_ack1, |
| data_out_ack2, data_out_ack3, data_out_ack4, |
| data_out_ack5 |
| ); |
| |
| input clk, reset; |
| input [7:0] data_in0, data_in1, data_in2, data_in3; |
| input [7:0] data_in4, data_in5; |
| input data_in_valid0, data_in_valid1, data_in_valid2; |
| input [7:0] data_in_valid3, data_in_valid4, data_in_valid5; |
| output [7:0] data_out0, data_out1, data_out2, data_out3; |
| output [7:0] data_out4, data_out5; |
| output data_out_ack0, data_out_ack1, data_out_ack2; |
| output [7:0] data_out_ack3, data_out_ack4, data_out_ack5; |
| |
| (* gentb_clock *) |
| wire clk; |
| |
| switch port_0 ( .clk(clk), .reset(reset), .data_in(data_in0), |
| .data_in_valid(data_in_valid0), .data_out(data_out0), |
| .data_out_ack(data_out_ack0)); |
| |
| switch port_1 ( .clk(clk), .reset(reset), .data_in(data_in1), |
| .data_in_valid(data_in_valid1), .data_out(data_out1), |
| .data_out_ack(data_out_ack1)); |
| |
| switch port_2 ( .clk(clk), .reset(reset), .data_in(data_in2), |
| .data_in_valid(data_in_valid2), .data_out(data_out2), . |
| data_out_ack(data_out_ack2)); |
| |
| switch port_3 ( .clk(clk), .reset(reset), .data_in(data_in3), |
| .data_in_valid(data_in_valid3), .data_out(data_out3), |
| .data_out_ack(data_out_ack3)); |
| |
| switch port_4 ( .clk(clk), .reset(reset), .data_in(data_in4), |
| .data_in_valid(data_in_valid4), .data_out(data_out4), |
| .data_out_ack(data_out_ack4)); |
| |
| switch port_5 ( .clk(clk), .reset(reset), .data_in(data_in5), |
| .data_in_valid(data_in_valid5), .data_out(data_out5), |
| .data_out_ack(data_out_ack5)); |
| |
| endmodule |
| |
| module switch ( |
| clk, |
| reset, |
| data_in, |
| data_in_valid, |
| data_out, |
| data_out_ack |
| ); |
| |
| input clk; |
| input reset; |
| input [7:0] data_in; |
| input data_in_valid; |
| output [7:0] data_out; |
| output data_out_ack; |
| |
| reg [7:0] data_out; |
| reg data_out_ack; |
| |
| always @ (posedge clk) |
| if (reset) begin |
| data_out <= 0; |
| data_out_ack <= 0; |
| end else if (data_in_valid) begin |
| data_out <= data_in; |
| data_out_ack <= 1; |
| end else begin |
| data_out <= 0; |
| data_out_ack <= 0; |
| end |
| |
| endmodule |