| module top( |
| input clk, |
| input rst, |
| |
| output wire din_ready, |
| input wire din_valid, |
| input wire [2:0] din_data, |
| input wire dout_ready, |
| output wire dout_valid, |
| output wire [2:0] dout_data |
| |
| ); |
| |
| wire dout1_ready; |
| wire dout1_valid; |
| wire [0:0] dout1_data; |
| |
| wire dout2_ready; |
| wire dout2_valid; |
| wire [1:0] dout2_data; |
| |
| wire [1:0] din_bc_ready; |
| wire [1:0] din_bc_valid; |
| wire [5:0] din_bc_data; |
| |
| bc #( |
| .SIZE(2'd2), |
| .WIDTH(2'd3) |
| ) |
| bc_din ( |
| .clk(clk), |
| .rst(rst), |
| |
| .din_valid(din_valid), |
| .din_ready(din_ready), |
| .din_data(din_data), |
| |
| .dout_valid(din_bc_valid), |
| .dout_ready(din_bc_ready), |
| .dout_data(din_bc_data) |
| ); |
| |
| |
| demux demux ( |
| .clk(clk), |
| .rst(rst), |
| |
| .din_valid(din_bc_valid[0]), |
| .din_ready(din_bc_ready[0]), |
| .din_data(din_bc_data[2:0]), |
| |
| .dout0_valid(dout1_valid), |
| .dout0_ready(dout1_ready), |
| .dout0_data(dout1_data), |
| |
| .dout1_valid(dout2_valid), |
| .dout1_ready(dout2_ready), |
| .dout1_data(dout2_data) |
| ); |
| |
| mux mux ( |
| .clk(clk), |
| .rst(rst), |
| |
| .ctrl_valid(din_bc_valid[1]), |
| .ctrl_ready(din_bc_ready[1]), |
| .ctrl_data(din_bc_data[2]), |
| |
| .din0_valid(dout1_valid), |
| .din0_ready(dout1_ready), |
| .din0_data(dout1_data), |
| |
| .din1_valid(dout2_valid), |
| .din1_ready(dout2_ready), |
| .din1_data(dout2_data), |
| |
| .dout_valid(dout_valid), |
| .dout_ready(dout_ready), |
| .dout_data(dout_data) |
| ); |
| |
| |
| |
| endmodule |