📄 tc_top.v
字号:
// synopsys translate_off
`include "timescale.v"
// synopsys translate_on
`include "tc_define.v"
//
// Traffic Cop Top
//
module tc_top (
wb_clk_i,
wb_rst_i,
i0_wb_cyc_i,
i0_wb_stb_i,
i0_wb_cab_i,
i0_wb_adr_i,
i0_wb_sel_i,
i0_wb_we_i,
i0_wb_dat_i,
i0_wb_dat_o,
i0_wb_ack_o,
i0_wb_err_o,
i1_wb_cyc_i,
i1_wb_stb_i,
i1_wb_cab_i,
i1_wb_adr_i,
i1_wb_sel_i,
i1_wb_we_i,
i1_wb_dat_i,
i1_wb_dat_o,
i1_wb_ack_o,
i1_wb_err_o,
i2_wb_cyc_i,
i2_wb_stb_i,
i2_wb_cab_i,
i2_wb_adr_i,
i2_wb_sel_i,
i2_wb_we_i,
i2_wb_dat_i,
i2_wb_dat_o,
i2_wb_ack_o,
i2_wb_err_o,
i3_wb_cyc_i,
i3_wb_stb_i,
i3_wb_cab_i,
i3_wb_adr_i,
i3_wb_sel_i,
i3_wb_we_i,
i3_wb_dat_i,
i3_wb_dat_o,
i3_wb_ack_o,
i3_wb_err_o,
i4_wb_cyc_i,
i4_wb_stb_i,
i4_wb_cab_i,
i4_wb_adr_i,
i4_wb_sel_i,
i4_wb_we_i,
i4_wb_dat_i,
i4_wb_dat_o,
i4_wb_ack_o,
i4_wb_err_o,
i5_wb_cyc_i,
i5_wb_stb_i,
i5_wb_cab_i,
i5_wb_adr_i,
i5_wb_sel_i,
i5_wb_we_i,
i5_wb_dat_i,
i5_wb_dat_o,
i5_wb_ack_o,
i5_wb_err_o,
i6_wb_cyc_i,
i6_wb_stb_i,
i6_wb_cab_i,
i6_wb_adr_i,
i6_wb_sel_i,
i6_wb_we_i,
i6_wb_dat_i,
i6_wb_dat_o,
i6_wb_ack_o,
i6_wb_err_o,
i7_wb_cyc_i,
i7_wb_stb_i,
i7_wb_cab_i,
i7_wb_adr_i,
i7_wb_sel_i,
i7_wb_we_i,
i7_wb_dat_i,
i7_wb_dat_o,
i7_wb_ack_o,
i7_wb_err_o,
t0_wb_cyc_o,
t0_wb_stb_o,
t0_wb_cab_o,
t0_wb_adr_o,
t0_wb_sel_o,
t0_wb_we_o,
t0_wb_dat_o,
t0_wb_dat_i,
t0_wb_ack_i,
t0_wb_err_i,
t1_wb_cyc_o,
t1_wb_stb_o,
t1_wb_cab_o,
t1_wb_adr_o,
t1_wb_sel_o,
t1_wb_we_o,
t1_wb_dat_o,
t1_wb_dat_i,
t1_wb_ack_i,
t1_wb_err_i,
t2_wb_cyc_o,
t2_wb_stb_o,
t2_wb_cab_o,
t2_wb_adr_o,
t2_wb_sel_o,
t2_wb_we_o,
t2_wb_dat_o,
t2_wb_dat_i,
t2_wb_ack_i,
t2_wb_err_i,
t3_wb_cyc_o,
t3_wb_stb_o,
t3_wb_cab_o,
t3_wb_adr_o,
t3_wb_sel_o,
t3_wb_we_o,
t3_wb_dat_o,
t3_wb_dat_i,
t3_wb_ack_i,
t3_wb_err_i,
t4_wb_cyc_o,
t4_wb_stb_o,
t4_wb_cab_o,
t4_wb_adr_o,
t4_wb_sel_o,
t4_wb_we_o,
t4_wb_dat_o,
t4_wb_dat_i,
t4_wb_ack_i,
t4_wb_err_i,
t5_wb_cyc_o,
t5_wb_stb_o,
t5_wb_cab_o,
t5_wb_adr_o,
t5_wb_sel_o,
t5_wb_we_o,
t5_wb_dat_o,
t5_wb_dat_i,
t5_wb_ack_i,
t5_wb_err_i,
t6_wb_cyc_o,
t6_wb_stb_o,
t6_wb_cab_o,
t6_wb_adr_o,
t6_wb_sel_o,
t6_wb_we_o,
t6_wb_dat_o,
t6_wb_dat_i,
t6_wb_ack_i,
t6_wb_err_i,
t7_wb_cyc_o,
t7_wb_stb_o,
t7_wb_cab_o,
t7_wb_adr_o,
t7_wb_sel_o,
t7_wb_we_o,
t7_wb_dat_o,
t7_wb_dat_i,
t7_wb_ack_i,
t7_wb_err_i
);
//
// Parameters
//
parameter t_addr_w = 4;
parameter t0_addr = 4'd0;
parameter t1_addr = 4'd1;
parameter t2_addr = 4'd2;
parameter t3_addr = 4'd3;
parameter t4_addr = 4'd4;
parameter t5_addr = 4'd5;
parameter t6_addr = 4'd6;
parameter t7_addr = 4'd7;
//
// I/O Ports
//
input wb_clk_i;
input wb_rst_i;
//
// WB slave i/f connecting initiator 0
//
input i0_wb_cyc_i;
input i0_wb_stb_i;
input i0_wb_cab_i;
input [`TC_AW-1:0] i0_wb_adr_i;
input [`TC_BSW-1:0] i0_wb_sel_i;
input i0_wb_we_i;
input [`TC_DW-1:0] i0_wb_dat_i;
output [`TC_DW-1:0] i0_wb_dat_o;
output i0_wb_ack_o;
output i0_wb_err_o;
//
// WB slave i/f connecting initiator 1
//
input i1_wb_cyc_i;
input i1_wb_stb_i;
input i1_wb_cab_i;
input [`TC_AW-1:0] i1_wb_adr_i;
input [`TC_BSW-1:0] i1_wb_sel_i;
input i1_wb_we_i;
input [`TC_DW-1:0] i1_wb_dat_i;
output [`TC_DW-1:0] i1_wb_dat_o;
output i1_wb_ack_o;
output i1_wb_err_o;
//
// WB slave i/f connecting initiator 2
//
input i2_wb_cyc_i;
input i2_wb_stb_i;
input i2_wb_cab_i;
input [`TC_AW-1:0] i2_wb_adr_i;
input [`TC_BSW-1:0] i2_wb_sel_i;
input i2_wb_we_i;
input [`TC_DW-1:0] i2_wb_dat_i;
output [`TC_DW-1:0] i2_wb_dat_o;
output i2_wb_ack_o;
output i2_wb_err_o;
//
// WB slave i/f connecting initiator 3
//
input i3_wb_cyc_i;
input i3_wb_stb_i;
input i3_wb_cab_i;
input [`TC_AW-1:0] i3_wb_adr_i;
input [`TC_BSW-1:0] i3_wb_sel_i;
input i3_wb_we_i;
input [`TC_DW-1:0] i3_wb_dat_i;
output [`TC_DW-1:0] i3_wb_dat_o;
output i3_wb_ack_o;
output i3_wb_err_o;
//
// WB slave i/f connecting initiator 4
//
input i4_wb_cyc_i;
input i4_wb_stb_i;
input i4_wb_cab_i;
input [`TC_AW-1:0] i4_wb_adr_i;
input [`TC_BSW-1:0] i4_wb_sel_i;
input i4_wb_we_i;
input [`TC_DW-1:0] i4_wb_dat_i;
output [`TC_DW-1:0] i4_wb_dat_o;
output i4_wb_ack_o;
output i4_wb_err_o;
//
// WB slave i/f connecting initiator 5
//
input i5_wb_cyc_i;
input i5_wb_stb_i;
input i5_wb_cab_i;
input [`TC_AW-1:0] i5_wb_adr_i;
input [`TC_BSW-1:0] i5_wb_sel_i;
input i5_wb_we_i;
input [`TC_DW-1:0] i5_wb_dat_i;
output [`TC_DW-1:0] i5_wb_dat_o;
output i5_wb_ack_o;
output i5_wb_err_o;
//
// WB slave i/f connecting initiator 6
//
input i6_wb_cyc_i;
input i6_wb_stb_i;
input i6_wb_cab_i;
input [`TC_AW-1:0] i6_wb_adr_i;
input [`TC_BSW-1:0] i6_wb_sel_i;
input i6_wb_we_i;
input [`TC_DW-1:0] i6_wb_dat_i;
output [`TC_DW-1:0] i6_wb_dat_o;
output i6_wb_ack_o;
output i6_wb_err_o;
//
// WB slave i/f connecting initiator 7
//
input i7_wb_cyc_i;
input i7_wb_stb_i;
input i7_wb_cab_i;
input [`TC_AW-1:0] i7_wb_adr_i;
input [`TC_BSW-1:0] i7_wb_sel_i;
input i7_wb_we_i;
input [`TC_DW-1:0] i7_wb_dat_i;
output [`TC_DW-1:0] i7_wb_dat_o;
output i7_wb_ack_o;
output i7_wb_err_o;
//
// WB master i/f connecting target 0
//
output t0_wb_cyc_o;
output t0_wb_stb_o;
output t0_wb_cab_o;
output [`TC_AW-1:0] t0_wb_adr_o;
output [`TC_BSW-1:0] t0_wb_sel_o;
output t0_wb_we_o;
output [`TC_DW-1:0] t0_wb_dat_o;
input [`TC_DW-1:0] t0_wb_dat_i;
input t0_wb_ack_i;
input t0_wb_err_i;
//
// WB master i/f connecting target 1
//
output t1_wb_cyc_o;
output t1_wb_stb_o;
output t1_wb_cab_o;
output [`TC_AW-1:0] t1_wb_adr_o;
output [`TC_BSW-1:0] t1_wb_sel_o;
output t1_wb_we_o;
output [`TC_DW-1:0] t1_wb_dat_o;
input [`TC_DW-1:0] t1_wb_dat_i;
input t1_wb_ack_i;
input t1_wb_err_i;
//
// WB master i/f connecting target 2
//
output t2_wb_cyc_o;
output t2_wb_stb_o;
output t2_wb_cab_o;
output [`TC_AW-1:0] t2_wb_adr_o;
output [`TC_BSW-1:0] t2_wb_sel_o;
output t2_wb_we_o;
output [`TC_DW-1:0] t2_wb_dat_o;
input [`TC_DW-1:0] t2_wb_dat_i;
input t2_wb_ack_i;
input t2_wb_err_i;
//
// WB master i/f connecting target 3
//
output t3_wb_cyc_o;
output t3_wb_stb_o;
output t3_wb_cab_o;
output [`TC_AW-1:0] t3_wb_adr_o;
output [`TC_BSW-1:0] t3_wb_sel_o;
output t3_wb_we_o;
output [`TC_DW-1:0] t3_wb_dat_o;
input [`TC_DW-1:0] t3_wb_dat_i;
input t3_wb_ack_i;
input t3_wb_err_i;
//
// WB master i/f connecting target 4
//
output t4_wb_cyc_o;
output t4_wb_stb_o;
output t4_wb_cab_o;
output [`TC_AW-1:0] t4_wb_adr_o;
output [`TC_BSW-1:0] t4_wb_sel_o;
output t4_wb_we_o;
output [`TC_DW-1:0] t4_wb_dat_o;
input [`TC_DW-1:0] t4_wb_dat_i;
input t4_wb_ack_i;
input t4_wb_err_i;
//
// WB master i/f connecting target 5
//
output t5_wb_cyc_o;
output t5_wb_stb_o;
output t5_wb_cab_o;
output [`TC_AW-1:0] t5_wb_adr_o;
output [`TC_BSW-1:0] t5_wb_sel_o;
output t5_wb_we_o;
output [`TC_DW-1:0] t5_wb_dat_o;
input [`TC_DW-1:0] t5_wb_dat_i;
input t5_wb_ack_i;
input t5_wb_err_i;
//
// WB master i/f connecting target 6
//
output t6_wb_cyc_o;
output t6_wb_stb_o;
output t6_wb_cab_o;
output [`TC_AW-1:0] t6_wb_adr_o;
output [`TC_BSW-1:0] t6_wb_sel_o;
output t6_wb_we_o;
output [`TC_DW-1:0] t6_wb_dat_o;
input [`TC_DW-1:0] t6_wb_dat_i;
input t6_wb_ack_i;
input t6_wb_err_i;
//
// WB master i/f connecting target 7
//
output t7_wb_cyc_o;
output t7_wb_stb_o;
output t7_wb_cab_o;
output [`TC_AW-1:0] t7_wb_adr_o;
output [`TC_BSW-1:0] t7_wb_sel_o;
output t7_wb_we_o;
output [`TC_DW-1:0] t7_wb_dat_o;
input [`TC_DW-1:0] t7_wb_dat_i;
input t7_wb_ack_i;
input t7_wb_err_i;
//
// Internal wires & registers
//
//
// Intermediate signals connecting peripheral channel's
// mi_to_st and si_to_mt blocks.
//
wire z_wb_cyc_i;
wire z_wb_stb_i;
wire z_wb_cab_i;
wire [`TC_AW-1:0] z_wb_adr_i;
wire [`TC_BSW-1:0] z_wb_sel_i;
wire z_wb_we_i;
wire [`TC_DW-1:0] z_wb_dat_i;
wire [`TC_DW-1:0] z_wb_dat_t;
wire z_wb_ack_t;
wire z_wb_err_t;
//
// From initiators to targets 0-7 (upper part)
//
tc_mi_to_st t07_ch_upper(
.wb_clk_i(wb_clk_i),
.wb_rst_i(wb_rst_i),
.i0_wb_cyc_i(i0_wb_cyc_i),
.i0_wb_stb_i(i0_wb_stb_i),
.i0_wb_cab_i(i0_wb_cab_i),
.i0_wb_adr_i(i0_wb_adr_i),
.i0_wb_sel_i(i0_wb_sel_i),
.i0_wb_we_i(i0_wb_we_i),
.i0_wb_dat_i(i0_wb_dat_i),
.i0_wb_dat_o(i0_wb_dat_o),
.i0_wb_ack_o(i0_wb_ack_o),
.i0_wb_err_o(i0_wb_err_o),
.i1_wb_cyc_i(i1_wb_cyc_i),
.i1_wb_stb_i(i1_wb_stb_i),
.i1_wb_cab_i(i1_wb_cab_i),
.i1_wb_adr_i(i1_wb_adr_i),
.i1_wb_sel_i(i1_wb_sel_i),
.i1_wb_we_i(i1_wb_we_i),
.i1_wb_dat_i(i1_wb_dat_i),
.i1_wb_dat_o(i1_wb_dat_o),
.i1_wb_ack_o(i1_wb_ack_o),
.i1_wb_err_o(i1_wb_err_o),
.i2_wb_cyc_i(i2_wb_cyc_i),
.i2_wb_stb_i(i2_wb_stb_i),
.i2_wb_cab_i(i2_wb_cab_i),
.i2_wb_adr_i(i2_wb_adr_i),
.i2_wb_sel_i(i2_wb_sel_i),
.i2_wb_we_i(i2_wb_we_i),
.i2_wb_dat_i(i2_wb_dat_i),
.i2_wb_dat_o(i2_wb_dat_o),
.i2_wb_ack_o(i2_wb_ack_o),
.i2_wb_err_o(i2_wb_err_o),
.i3_wb_cyc_i(i3_wb_cyc_i),
.i3_wb_stb_i(i3_wb_stb_i),
.i3_wb_cab_i(i3_wb_cab_i),
.i3_wb_adr_i(i3_wb_adr_i),
.i3_wb_sel_i(i3_wb_sel_i),
.i3_wb_we_i(i3_wb_we_i),
.i3_wb_dat_i(i3_wb_dat_i),
.i3_wb_dat_o(i3_wb_dat_o),
.i3_wb_ack_o(i3_wb_ack_o),
.i3_wb_err_o(i3_wb_err_o),
.i4_wb_cyc_i(i4_wb_cyc_i),
.i4_wb_stb_i(i4_wb_stb_i),
.i4_wb_cab_i(i4_wb_cab_i),
.i4_wb_adr_i(i4_wb_adr_i),
.i4_wb_sel_i(i4_wb_sel_i),
.i4_wb_we_i(i4_wb_we_i),
.i4_wb_dat_i(i4_wb_dat_i),
.i4_wb_dat_o(i4_wb_dat_o),
.i4_wb_ack_o(i4_wb_ack_o),
.i4_wb_err_o(i4_wb_err_o),
.i5_wb_cyc_i(i5_wb_cyc_i),
.i5_wb_stb_i(i5_wb_stb_i),
.i5_wb_cab_i(i5_wb_cab_i),
.i5_wb_adr_i(i5_wb_adr_i),
.i5_wb_sel_i(i5_wb_sel_i),
.i5_wb_we_i(i5_wb_we_i),
.i5_wb_dat_i(i5_wb_dat_i),
.i5_wb_dat_o(i5_wb_dat_o),
.i5_wb_ack_o(i5_wb_ack_o),
.i5_wb_err_o(i5_wb_err_o),
.i6_wb_cyc_i(i6_wb_cyc_i),
.i6_wb_stb_i(i6_wb_stb_i),
.i6_wb_cab_i(i6_wb_cab_i),
.i6_wb_adr_i(i6_wb_adr_i),
.i6_wb_sel_i(i6_wb_sel_i),
.i6_wb_we_i(i6_wb_we_i),
.i6_wb_dat_i(i6_wb_dat_i),
.i6_wb_dat_o(i6_wb_dat_o),
.i6_wb_ack_o(i6_wb_ack_o),
.i6_wb_err_o(i6_wb_err_o),
.i7_wb_cyc_i(i7_wb_cyc_i),
.i7_wb_stb_i(i7_wb_stb_i),
.i7_wb_cab_i(i7_wb_cab_i),
.i7_wb_adr_i(i7_wb_adr_i),
.i7_wb_sel_i(i7_wb_sel_i),
.i7_wb_we_i(i7_wb_we_i),
.i7_wb_dat_i(i7_wb_dat_i),
.i7_wb_dat_o(i7_wb_dat_o),
.i7_wb_ack_o(i7_wb_ack_o),
.i7_wb_err_o(i7_wb_err_o),
.t0_wb_cyc_o(z_wb_cyc_i),
.t0_wb_stb_o(z_wb_stb_i),
.t0_wb_cab_o(z_wb_cab_i),
.t0_wb_adr_o(z_wb_adr_i),
.t0_wb_sel_o(z_wb_sel_i),
.t0_wb_we_o(z_wb_we_i),
.t0_wb_dat_o(z_wb_dat_i),
.t0_wb_dat_i(z_wb_dat_t),
.t0_wb_ack_i(z_wb_ack_t),
.t0_wb_err_i(z_wb_err_t)
);
//
// From initiators to targets 1-8 (lower part)
//
tc_si_to_mt #(t_addr_w, t0_addr,t1_addr, t2_addr, t3_addr,
t4_addr, t5_addr, t6_addr, t7_addr) t18_ch_lower(
.i0_wb_cyc_i(z_wb_cyc_i),
.i0_wb_stb_i(z_wb_stb_i),
.i0_wb_cab_i(z_wb_cab_i),
.i0_wb_adr_i(z_wb_adr_i),
.i0_wb_sel_i(z_wb_sel_i),
.i0_wb_we_i(z_wb_we_i),
.i0_wb_dat_i(z_wb_dat_i),
.i0_wb_dat_o(z_wb_dat_t),
.i0_wb_ack_o(z_wb_ack_t),
.i0_wb_err_o(z_wb_err_t),
.t0_wb_cyc_o(t0_wb_cyc_o),
.t0_wb_stb_o(t0_wb_stb_o),
.t0_wb_cab_o(t0_wb_cab_o),
.t0_wb_adr_o(t0_wb_adr_o),
.t0_wb_sel_o(t0_wb_sel_o),
.t0_wb_we_o (t0_wb_we_o),
.t0_wb_dat_o(t0_wb_dat_o),
.t0_wb_dat_i(t0_wb_dat_i),
.t0_wb_ack_i(t0_wb_ack_i),
.t0_wb_err_i(t0_wb_err_i),
.t1_wb_cyc_o(t1_wb_cyc_o),
.t1_wb_stb_o(t1_wb_stb_o),
.t1_wb_cab_o(t1_wb_cab_o),
.t1_wb_adr_o(t1_wb_adr_o),
.t1_wb_sel_o(t1_wb_sel_o),
.t1_wb_we_o (t1_wb_we_o),
.t1_wb_dat_o(t1_wb_dat_o),
.t1_wb_dat_i(t1_wb_dat_i),
.t1_wb_ack_i(t1_wb_ack_i),
.t1_wb_err_i(t1_wb_err_i),
.t2_wb_cyc_o(t2_wb_cyc_o),
.t2_wb_stb_o(t2_wb_stb_o),
.t2_wb_cab_o(t2_wb_cab_o),
.t2_wb_adr_o(t2_wb_adr_o),
.t2_wb_sel_o(t2_wb_sel_o),
.t2_wb_we_o (t2_wb_we_o),
.t2_wb_dat_o(t2_wb_dat_o),
.t2_wb_dat_i(t2_wb_dat_i),
.t2_wb_ack_i(t2_wb_ack_i),
.t2_wb_err_i(t2_wb_err_i),
.t3_wb_cyc_o(t3_wb_cyc_o),
.t3_wb_stb_o(t3_wb_stb_o),
.t3_wb_cab_o(t3_wb_cab_o),
.t3_wb_adr_o(t3_wb_adr_o),
.t3_wb_sel_o(t3_wb_sel_o),
.t3_wb_we_o (t3_wb_we_o),
.t3_wb_dat_o(t3_wb_dat_o),
.t3_wb_dat_i(t3_wb_dat_i),
.t3_wb_ack_i(t3_wb_ack_i),
.t3_wb_err_i(t3_wb_err_i),
.t4_wb_cyc_o(t4_wb_cyc_o),
.t4_wb_stb_o(t4_wb_stb_o),
.t4_wb_cab_o(t4_wb_cab_o),
.t4_wb_adr_o(t4_wb_adr_o),
.t4_wb_sel_o(t4_wb_sel_o),
.t4_wb_we_o (t4_wb_we_o),
.t4_wb_dat_o(t4_wb_dat_o),
.t4_wb_dat_i(t4_wb_dat_i),
.t4_wb_ack_i(t4_wb_ack_i),
.t4_wb_err_i(t4_wb_err_i),
.t5_wb_cyc_o(t5_wb_cyc_o),
.t5_wb_stb_o(t5_wb_stb_o),
.t5_wb_cab_o(t5_wb_cab_o),
.t5_wb_adr_o(t5_wb_adr_o),
.t5_wb_sel_o(t5_wb_sel_o),
.t5_wb_we_o (t5_wb_we_o),
.t5_wb_dat_o(t5_wb_dat_o),
.t5_wb_dat_i(t5_wb_dat_i),
.t5_wb_ack_i(t5_wb_ack_i),
.t5_wb_err_i(t5_wb_err_i),
.t6_wb_cyc_o(t6_wb_cyc_o),
.t6_wb_stb_o(t6_wb_stb_o),
.t6_wb_cab_o(t6_wb_cab_o),
.t6_wb_adr_o(t6_wb_adr_o),
.t6_wb_sel_o(t6_wb_sel_o),
.t6_wb_we_o (t6_wb_we_o),
.t6_wb_dat_o(t6_wb_dat_o),
.t6_wb_dat_i(t6_wb_dat_i),
.t6_wb_ack_i(t6_wb_ack_i),
.t6_wb_err_i(t6_wb_err_i),
.t7_wb_cyc_o(t7_wb_cyc_o),
.t7_wb_stb_o(t7_wb_stb_o),
.t7_wb_cab_o(t7_wb_cab_o),
.t7_wb_adr_o(t7_wb_adr_o),
.t7_wb_sel_o(t7_wb_sel_o),
.t7_wb_we_o (t7_wb_we_o),
.t7_wb_dat_o(t7_wb_dat_o),
.t7_wb_dat_i(t7_wb_dat_i),
.t7_wb_ack_i(t7_wb_ack_i),
.t7_wb_err_i(t7_wb_err_i)
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -