📄 wb_conbusex_top.v
字号:
// slave8
assign {s8_adr_o, s8_sel_o, s8_dat_o, s8_we_o, s8_cab_o, s8_cyc_o} = i_bus_m[`mbusw -1:1];
assign s8_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[8];
// slave9
assign {s9_adr_o, s9_sel_o, s9_dat_o, s9_we_o, s9_cab_o, s9_cyc_o} = i_bus_m[`mbusw -1:1];
assign s9_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[9];
// slave10
assign {s10_adr_o, s10_sel_o, s10_dat_o, s10_we_o, s10_cab_o, s10_cyc_o} = i_bus_m[`mbusw -1:1];
assign s10_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[10];
// slave11
assign {s11_adr_o, s11_sel_o, s11_dat_o, s11_we_o, s11_cab_o, s11_cyc_o} = i_bus_m[`mbusw -1:1];
assign s11_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[11];
// slave12
assign {s12_adr_o, s12_sel_o, s12_dat_o, s12_we_o, s12_cab_o, s12_cyc_o} = i_bus_m[`mbusw -1:1];
assign s12_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[12];
// slave13
assign {s13_adr_o, s13_sel_o, s13_dat_o, s13_we_o, s13_cab_o, s13_cyc_o} = i_bus_m[`mbusw -1:1];
assign s13_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[13];
// slave14
assign {s14_adr_o, s14_sel_o, s14_dat_o, s14_we_o, s14_cab_o, s14_cyc_o} = i_bus_m[`mbusw -1:1];
assign s14_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[14];
// slave15
assign {s15_adr_o, s15_sel_o, s15_dat_o, s15_we_o, s15_cab_o, s15_cyc_o} = i_bus_m[`mbusw -1:1];
assign s15_stb_o = i_bus_m[1] & i_bus_m[0] & i_ssel_dec[15];
///////////////////////////////////////
// Master and Slave input interface
//
`ifdef WB_USE_TRISTATE
// input from master interface
assign i_bus_m = i_gnt_arb[0] ? {m0_adr_i, m0_sel_i, m0_dat_i, m0_we_i, m0_cab_i, m0_cyc_i, m0_stb_i} : 72'bz ;
assign i_bus_m = i_gnt_arb[1] ? {m1_adr_i, m1_sel_i, m1_dat_i, m1_we_i, m1_cab_i,m1_cyc_i, m1_stb_i} : 72'bz ;
assign i_bus_m = i_gnt_arb[2] ? {m2_adr_i, m2_sel_i, m2_dat_i, m2_we_i, m2_cab_i, m2_cyc_i, m2_stb_i} : 72'bz ;
assign i_bus_m = i_gnt_arb[3] ? {m3_adr_i, m3_sel_i, m3_dat_i, m3_we_i, m3_cab_i, m3_cyc_i, m3_stb_i} : 72'bz ;
assign i_bus_m = i_gnt_arb[4] ? {m4_adr_i, m4_sel_i, m4_dat_i, m4_we_i, m4_cab_i, m4_cyc_i, m4_stb_i} : 72'bz ;
assign i_bus_m = i_gnt_arb[5] ? {m5_adr_i, m5_sel_i, m5_dat_i, m5_we_i, m5_cab_i, m5_cyc_i, m5_stb_i} : 72'bz ;
assign i_bus_m = i_gnt_arb[6] ? {m6_adr_i, m6_sel_i, m6_dat_i, m6_we_i, m6_cab_i, m6_cyc_i, m6_stb_i} : 72'bz ;
assign i_bus_m = i_gnt_arb[7] ? {m7_adr_i, m7_sel_i, m7_dat_i, m7_we_i, m7_cab_i, m7_cyc_i,m7_stb_i} : 72'bz ;
// input from slave interface
assign i_dat_s = i_ssel_dec[0] ? s0_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[1] ? s1_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[2] ? s2_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[3] ? s3_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[4] ? s4_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[5] ? s5_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[6] ? s6_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[7] ? s7_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[8] ? s8_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[9] ? s9_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[10] ? s10_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[11] ? s11_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[12] ? s12_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[13] ? s13_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[14] ? s14_dat_i: 32'bz;
assign i_dat_s = i_ssel_dec[15] ? s15_dat_i: 32'bz;
`else
always @(gnt , m0_adr_i, m0_sel_i, m0_dat_i, m0_we_i, m0_cab_i, m0_cyc_i,m0_stb_i,
m1_adr_i, m1_sel_i, m1_dat_i, m1_we_i, m1_cab_i, m1_cyc_i,m1_stb_i,
m2_adr_i, m2_sel_i, m2_dat_i, m2_we_i, m2_cab_i, m2_cyc_i,m2_stb_i,
m3_adr_i, m3_sel_i, m3_dat_i, m3_we_i, m3_cab_i, m3_cyc_i,m3_stb_i,
m4_adr_i, m4_sel_i, m4_dat_i, m4_we_i, m4_cab_i, m4_cyc_i,m4_stb_i,
m5_adr_i, m5_sel_i, m5_dat_i, m5_we_i, m5_cab_i, m5_cyc_i,m5_stb_i,
m6_adr_i, m6_sel_i, m6_dat_i, m6_we_i, m6_cab_i, m6_cyc_i,m6_stb_i,
m7_adr_i, m7_sel_i, m7_dat_i, m7_we_i, m7_cab_i, m7_cyc_i,m7_stb_i)
case(gnt)
3'h0: i_bus_m = {m0_adr_i, m0_sel_i, m0_dat_i, m0_we_i, m0_cab_i, m0_cyc_i,m0_stb_i};
3'h1: i_bus_m = {m1_adr_i, m1_sel_i, m1_dat_i, m1_we_i, m1_cab_i, m1_cyc_i,m1_stb_i};
3'h2: i_bus_m = {m2_adr_i, m2_sel_i, m2_dat_i, m2_we_i, m2_cab_i, m2_cyc_i,m2_stb_i};
3'h3: i_bus_m = {m3_adr_i, m3_sel_i, m3_dat_i, m3_we_i, m3_cab_i, m3_cyc_i,m3_stb_i};
3'h4: i_bus_m = {m4_adr_i, m4_sel_i, m4_dat_i, m4_we_i, m4_cab_i, m4_cyc_i,m4_stb_i};
3'h5: i_bus_m = {m5_adr_i, m5_sel_i, m5_dat_i, m5_we_i, m5_cab_i, m5_cyc_i,m5_stb_i};
3'h6: i_bus_m = {m6_adr_i, m6_sel_i, m6_dat_i, m6_we_i, m6_cab_i, m6_cyc_i,m6_stb_i};
3'h7: i_bus_m = {m7_adr_i, m7_sel_i, m7_dat_i, m7_we_i, m7_cab_i, m7_cyc_i,m7_stb_i};
default:i_bus_m = 72'b0;//{m0_adr_i, m0_sel_i, m0_dat_i, m0_we_i, m0_cab_i, m0_cyc_i,m0_stb_i};
endcase
assign i_dat_s = i_ssel_dec[0] ? s0_dat_i :
i_ssel_dec[1] ? s1_dat_i :
i_ssel_dec[2] ? s2_dat_i :
i_ssel_dec[3] ? s3_dat_i :
i_ssel_dec[4] ? s4_dat_i :
i_ssel_dec[5] ? s5_dat_i :
i_ssel_dec[6] ? s6_dat_i :
i_ssel_dec[7] ? s7_dat_i :
i_ssel_dec[8] ? s8_dat_i :
i_ssel_dec[9] ? s9_dat_i :
i_ssel_dec[10] ? s10_dat_i :
i_ssel_dec[11] ? s11_dat_i :
i_ssel_dec[12] ? s12_dat_i :
i_ssel_dec[13] ? s13_dat_i :
i_ssel_dec[14] ? s14_dat_i :
i_ssel_dec[15] ? s15_dat_i : {`dw{1'b0}};
`endif
//
// arbitor
//
assign i_gnt_arb[0] = (gnt == 3'd0);
assign i_gnt_arb[1] = (gnt == 3'd1);
assign i_gnt_arb[2] = (gnt == 3'd2);
assign i_gnt_arb[3] = (gnt == 3'd3);
assign i_gnt_arb[4] = (gnt == 3'd4);
assign i_gnt_arb[5] = (gnt == 3'd5);
assign i_gnt_arb[6] = (gnt == 3'd6);
assign i_gnt_arb[7] = (gnt == 3'd7);
wb_conbus_arb wb_conbus_arb(
.clk(clk_i),
.rst(rst_i),
.req({ m7_cyc_i,
m6_cyc_i,
m5_cyc_i,
m4_cyc_i,
m3_cyc_i,
m2_cyc_i,
m1_cyc_i,
m0_cyc_i}),
.gnt(gnt)
);
//////////////////////////////////
// address decode logic
//
wire [`sselectw -1:0] m0_ssel_dec, m1_ssel_dec, m2_ssel_dec, m3_ssel_dec, m4_ssel_dec, m5_ssel_dec, m6_ssel_dec, m7_ssel_dec;
always @(gnt, m0_ssel_dec, m1_ssel_dec, m2_ssel_dec, m3_ssel_dec, m4_ssel_dec, m5_ssel_dec, m6_ssel_dec, m7_ssel_dec)
case(gnt)
3'h0: i_ssel_dec = m0_ssel_dec;
3'h1: i_ssel_dec = m1_ssel_dec;
3'h2: i_ssel_dec = m2_ssel_dec;
3'h3: i_ssel_dec = m3_ssel_dec;
3'h4: i_ssel_dec = m4_ssel_dec;
3'h5: i_ssel_dec = m5_ssel_dec;
3'h6: i_ssel_dec = m6_ssel_dec;
3'h7: i_ssel_dec = m7_ssel_dec;
default: i_ssel_dec = 7'b0;
endcase
//
// decode all master address before arbitor for running faster
//
assign m0_ssel_dec[0] = (m0_adr_i[`aw -1 : `aw - s0_addr_w ] == s0_addr);
assign m0_ssel_dec[1] = (m0_adr_i[`aw -1 : `aw - s1_addr_w ] == s1_addr);
assign m0_ssel_dec[2] = (m0_adr_i[`dw -1 : `aw - s2_addr_w ] == s2_addr);
assign m0_ssel_dec[3] = (m0_adr_i[`aw -1 : `aw - s3_addr_w ] == s3_addr);
assign m0_ssel_dec[4] = (m0_adr_i[`aw -1 : `aw - s4_addr_w ] == s4_addr);
assign m0_ssel_dec[5] = (m0_adr_i[`aw -1 : `aw - s5_addr_w ] == s5_addr);
assign m0_ssel_dec[6] = (m0_adr_i[`aw -1 : `aw - s6_addr_w ] == s6_addr);
assign m0_ssel_dec[7] = (m0_adr_i[`aw -1 : `aw - s7_addr_w ] == s7_addr);
assign m0_ssel_dec[8] = (m0_adr_i[`aw -1 : `aw - s8_addr_w ] == s8_addr);
assign m0_ssel_dec[9] = (m0_adr_i[`aw -1 : `aw - s9_addr_w ] == s9_addr);
assign m0_ssel_dec[10] = (m0_adr_i[`dw -1 : `aw - s10_addr_w ] == s10_addr);
assign m0_ssel_dec[11] = (m0_adr_i[`aw -1 : `aw - s11_addr_w ] == s11_addr);
assign m0_ssel_dec[12] = (m0_adr_i[`aw -1 : `aw - s12_addr_w ] == s12_addr);
assign m0_ssel_dec[13] = (m0_adr_i[`aw -1 : `aw - s13_addr_w ] == s13_addr);
assign m0_ssel_dec[14] = (m0_adr_i[`aw -1 : `aw - s14_addr_w ] == s14_addr);
assign m0_ssel_dec[15] = (m0_adr_i[`aw -1 : `aw - s15_addr_w ] == s15_addr);
assign m1_ssel_dec[0] = (m1_adr_i[`aw -1 : `aw - s0_addr_w ] == s0_addr);
assign m1_ssel_dec[1] = (m1_adr_i[`aw -1 : `aw - s1_addr_w ] == s1_addr);
assign m1_ssel_dec[2] = (m1_adr_i[`dw -1 : `aw - s2_addr_w ] == s2_addr);
assign m1_ssel_dec[3] = (m1_adr_i[`aw -1 : `aw - s3_addr_w ] == s3_addr);
assign m1_ssel_dec[4] = (m1_adr_i[`aw -1 : `aw - s4_addr_w ] == s4_addr);
assign m1_ssel_dec[5] = (m1_adr_i[`aw -1 : `aw - s5_addr_w ] == s5_addr);
assign m1_ssel_dec[6] = (m1_adr_i[`aw -1 : `aw - s6_addr_w ] == s6_addr);
assign m1_ssel_dec[7] = (m1_adr_i[`aw -1 : `aw - s7_addr_w ] == s7_addr);
assign m1_ssel_dec[8] = (m1_adr_i[`aw -1 : `aw - s8_addr_w ] == s8_addr);
assign m1_ssel_dec[9] = (m1_adr_i[`aw -1 : `aw - s9_addr_w ] == s9_addr);
assign m1_ssel_dec[10] = (m1_adr_i[`dw -1 : `aw - s10_addr_w ] == s10_addr);
assign m1_ssel_dec[11] = (m1_adr_i[`aw -1 : `aw - s11_addr_w ] == s11_addr);
assign m1_ssel_dec[12] = (m1_adr_i[`aw -1 : `aw - s12_addr_w ] == s12_addr);
assign m1_ssel_dec[13] = (m1_adr_i[`aw -1 : `aw - s13_addr_w ] == s13_addr);
assign m1_ssel_dec[14] = (m1_adr_i[`aw -1 : `aw - s14_addr_w ] == s14_addr);
assign m1_ssel_dec[15] = (m1_adr_i[`aw -1 : `aw - s15_addr_w ] == s15_addr);
assign m2_ssel_dec[0] = (m2_adr_i[`aw -1 : `aw - s0_addr_w ] == s0_addr);
assign m2_ssel_dec[1] = (m2_adr_i[`aw -1 : `aw - s1_addr_w ] == s1_addr);
assign m2_ssel_dec[2] = (m2_adr_i[`dw -1 : `aw - s2_addr_w ] == s2_addr);
assign m2_ssel_dec[3] = (m2_adr_i[`aw -1 : `aw - s3_addr_w ] == s3_addr);
assign m2_ssel_dec[4] = (m2_adr_i[`aw -1 : `aw - s4_addr_w ] == s4_addr);
assign m2_ssel_dec[5] = (m2_adr_i[`aw -1 : `aw - s5_addr_w ] == s5_addr);
assign m2_ssel_dec[6] = (m2_adr_i[`aw -1 : `aw - s6_addr_w ] == s6_addr);
assign m2_ssel_dec[7] = (m2_adr_i[`aw -1 : `aw - s7_addr_w ] == s7_addr);
assign m2_ssel_dec[8] = (m2_adr_i[`aw -1 : `aw - s8_addr_w ] == s8_addr);
assign m2_ssel_dec[9] = (m2_adr_i[`aw -1 : `aw - s9_addr_w ] == s9_addr);
assign m2_ssel_dec[10] = (m2_adr_i[`dw -1 : `aw - s10_addr_w ] == s10_addr);
assign m2_ssel_dec[11] = (m2_adr_i[`aw -1 : `aw - s11_addr_w ] == s11_addr);
assign m2_ssel_dec[12] = (m2_adr_i[`aw -1 : `aw - s12_addr_w ] == s12_addr);
assign m2_ssel_dec[13] = (m2_adr_i[`aw -1 : `aw - s13_addr_w ] == s13_addr);
assign m2_ssel_dec[14] = (m2_adr_i[`aw -1 : `aw - s14_addr_w ] == s14_addr);
assign m2_ssel_dec[15] = (m2_adr_i[`aw -1 : `aw - s15_addr_w ] == s15_addr);
assign m3_ssel_dec[0] = (m3_adr_i[`aw -1 : `aw - s0_addr_w ] == s0_addr);
assign m3_ssel_dec[1] = (m3_adr_i[`aw -1 : `aw - s1_addr_w ] == s1_addr);
assign m3_ssel_dec[2] = (m3_adr_i[`dw -1 : `aw - s2_addr_w ] == s2_addr);
assign m3_ssel_dec[3] = (m3_adr_i[`aw -1 : `aw - s3_addr_w ] == s3_addr);
assign m3_ssel_dec[4] = (m3_adr_i[`aw -1 : `aw - s4_addr_w ] == s4_addr);
assign m3_ssel_dec[5] = (m3_adr_i[`aw -1 : `aw - s5_addr_w ] == s5_addr);
assign m3_ssel_dec[6] = (m3_adr_i[`aw -1 : `aw - s6_addr_w ] == s6_addr);
assign m3_ssel_dec[7] = (m3_adr_i[`aw -1 : `aw - s7_addr_w ] == s7_addr);
assign m3_ssel_dec[8] = (m3_adr_i[`aw -1 : `aw - s8_addr_w ] == s8_addr);
assign m3_ssel_dec[9] = (m3_adr_i[`aw -1 : `aw - s9_addr_w ] == s9_addr);
assign m3_ssel_dec[10] = (m3_adr_i[`dw -1 : `aw - s10_addr_w ] == s10_addr);
assign m3_ssel_dec[11] = (m3_adr_i[`aw -1 : `aw - s11_addr_w ] == s11_addr);
assign m3_ssel_dec[12] = (m3_adr_i[`aw -1 : `aw - s12_addr_w ] == s12_addr);
assign m3_ssel_dec[13] = (m3_adr_i[`aw -1 : `aw - s13_addr_w ] == s13_addr);
assign m3_ssel_dec[14] = (m3_adr_i[`aw -1 : `aw - s14_addr_w ] == s14_addr);
assign m3_ssel_dec[15] = (m3_adr_i[`aw -1 : `aw - s15_addr_w ] == s15_addr);
assign m4_ssel_dec[0] = (m4_adr_i[`aw -1 : `aw - s0_addr_w ] == s0_addr);
assign m4_ssel_dec[1] = (m4_adr_i[`aw -1 : `aw - s1_addr_w ] == s1_addr);
assign m4_ssel_dec[2] = (m4_adr_i[`dw -1 : `aw - s2_addr_w ] == s2_addr);
assign m4_ssel_dec[3] = (m4_adr_i[`aw -1 : `aw - s3_addr_w ] == s3_addr);
assign m4_ssel_dec[4] = (m4_adr_i[`aw -1 : `aw - s4_addr_w ] == s4_addr);
assign m4_ssel_dec[5] = (m4_adr_i[`aw -1 : `aw - s5_addr_w ] == s5_addr);
assign m4_ssel_dec[6] = (m4_adr_i[`aw -1 : `aw - s6_addr_w ] == s6_addr);
assign m4_ssel_dec[7] = (m4_adr_i[`aw -1 : `aw - s7_addr_w ] == s7_addr);
assign m4_ssel_dec[8] = (m4_adr_i[`aw -1 : `aw - s8_addr_w ] == s8_addr);
assign m4_ssel_dec[9] = (m4_adr_i[`aw -1 : `aw - s9_addr_w ] == s9_addr);
assign m4_ssel_dec[10] = (m4_adr_i[`dw -1 : `aw - s10_addr_w ] == s10_addr);
assign m4_ssel_dec[11] = (m4_adr_i[`aw -1 : `aw - s11_addr_w ] == s11_addr);
assign m4_ssel_dec[12] = (m4_adr_i[`aw -1 : `aw - s12_addr_w ] == s12_addr);
assign m4_ssel_dec[13] = (m4_adr_i[`aw -1 : `aw - s13_addr_w ] == s13_addr);
assign m4_ssel_dec[14] = (m4_adr_i[`aw -1 : `aw - s14_addr_w ] == s14_addr);
assign m4_ssel_dec[15] = (m4_adr_i[`aw -1 : `aw - s15_addr_w ] == s15_addr);
assign m5_ssel_dec[0] = (m5_adr_i[`aw -1 : `aw - s0_addr_w ] == s0_addr);
assign m5_ssel_dec[1] = (m5_adr_i[`aw -1 : `aw - s1_addr_w ] == s1_addr);
assign m5_ssel_dec[2] = (m5_adr_i[`dw -1 : `aw - s2_addr_w ] == s2_addr);
assign m5_ssel_dec[3] = (m5_adr_i[`aw -1 : `aw - s3_addr_w ] == s3_addr);
assign m5_ssel_dec[4] = (m5_adr_i[`aw -1 : `aw - s4_addr_w ] == s4_addr);
assign m5_ssel_dec[5] = (m5_adr_i[`aw -1 : `aw - s5_addr_w ] == s5_addr);
assign m5_ssel_dec[6] = (m5_adr_i[`aw -1 : `aw - s6_addr_w ] == s6_addr);
assign m5_ssel_dec[7] = (m5_adr_i[`aw -1 : `aw - s7_addr_w ] == s7_addr);
assign m5_ssel_dec[8] = (m5_adr_i[`aw -1 : `aw - s8_addr_w ] == s8_addr);
assign m5_ssel_dec[9] = (m5_adr_i[`aw -1 : `aw - s9_addr_w ] == s9_addr);
assign m5_ssel_dec[10] = (m5_adr_i[`dw -1 : `aw - s10_addr_w ] == s10_addr);
assign m5_ssel_dec[11] = (m5_adr_i[`aw -1 : `aw - s11_addr_w ] == s11_addr);
assign m5_ssel_dec[12] = (m5_adr_i[`aw -1 : `aw - s12_addr_w ] == s12_addr);
assign m5_ssel_dec[13] = (m5_adr_i[`aw -1 : `aw - s13_addr_w ] == s13_addr);
assign m5_ssel_dec[14] = (m5_adr_i[`aw -1 : `aw - s14_addr_w ] == s14_addr);
assign m5_ssel_dec[15] = (m5_adr_i[`aw -1 : `aw - s15_addr_w ] == s15_addr);
assign m6_ssel_dec[0] = (m6_adr_i[`aw -1 : `aw - s0_addr_w ] == s0_addr);
assign m6_ssel_dec[1] = (m6_adr_i[`aw -1 : `aw - s1_addr_w ] == s1_addr);
assign m6_ssel_dec[2] = (m6_adr_i[`dw -1 : `aw - s2_addr_w ] == s2_addr);
assign m6_ssel_dec[3] = (m6_adr_i[`aw -1 : `aw - s3_addr_w ] == s3_addr);
assign m6_ssel_dec[4] = (m6_adr_i[`aw -1 : `aw - s4_addr_w ] == s4_addr);
assign m6_ssel_dec[5] = (m6_adr_i[`aw -1 : `aw - s5_addr_w ] == s5_addr);
assign m6_ssel_dec[6] = (m6_adr_i[`aw -1 : `aw - s6_addr_w ] == s6_addr);
assign m6_ssel_dec[7] = (m6_adr_i[`aw -1 : `aw - s7_addr_w ] == s7_addr);
assign m6_ssel_dec[8] = (m6_adr_i[`aw -1 : `aw - s8_addr_w ] == s8_addr);
assign m6_ssel_dec[9] = (m6_adr_i[`aw -1 : `aw - s9_addr_w ] == s9_addr);
assign m6_ssel_dec[10] = (m6_adr_i[`dw -1 : `aw - s10_addr_w ] == s10_addr);
assign m6_ssel_dec[11] = (m6_adr_i[`aw -1 : `aw - s11_addr_w ] == s11_addr);
assign m6_ssel_dec[12] = (m6_adr_i[`aw -1 : `aw - s12_addr_w ] == s12_addr);
assign m6_ssel_dec[13] = (m6_adr_i[`aw -1 : `aw - s13_addr_w ] == s13_addr);
assign m6_ssel_dec[14] = (m6_adr_i[`aw -1 : `aw - s14_addr_w ] == s14_addr);
assign m6_ssel_dec[15] = (m6_adr_i[`aw -1 : `aw - s15_addr_w ] == s15_addr);
assign m7_ssel_dec[0] = (m7_adr_i[`aw -1 : `aw - s0_addr_w ] == s0_addr);
assign m7_ssel_dec[1] = (m7_adr_i[`aw -1 : `aw - s1_addr_w ] == s1_addr);
assign m7_ssel_dec[2] = (m7_adr_i[`dw -1 : `aw - s2_addr_w ] == s2_addr);
assign m7_ssel_dec[3] = (m7_adr_i[`aw -1 : `aw - s3_addr_w ] == s3_addr);
assign m7_ssel_dec[4] = (m7_adr_i[`aw -1 : `aw - s4_addr_w ] == s4_addr);
assign m7_ssel_dec[5] = (m7_adr_i[`aw -1 : `aw - s5_addr_w ] == s5_addr);
assign m7_ssel_dec[6] = (m7_adr_i[`aw -1 : `aw - s6_addr_w ] == s6_addr);
assign m7_ssel_dec[7] = (m7_adr_i[`aw -1 : `aw - s7_addr_w ] == s7_addr);
assign m7_ssel_dec[8] = (m7_adr_i[`aw -1 : `aw - s8_addr_w ] == s8_addr);
assign m7_ssel_dec[9] = (m7_adr_i[`aw -1 : `aw - s9_addr_w ] == s9_addr);
assign m7_ssel_dec[10] = (m7_adr_i[`dw -1 : `aw - s10_addr_w ] == s10_addr);
assign m7_ssel_dec[11] = (m7_adr_i[`aw -1 : `aw - s11_addr_w ] == s11_addr);
assign m7_ssel_dec[12] = (m7_adr_i[`aw -1 : `aw - s12_addr_w ] == s12_addr);
assign m7_ssel_dec[13] = (m7_adr_i[`aw -1 : `aw - s13_addr_w ] == s13_addr);
assign m7_ssel_dec[14] = (m7_adr_i[`aw -1 : `aw - s14_addr_w ] == s14_addr);
assign m7_ssel_dec[15] = (m7_adr_i[`aw -1 : `aw - s15_addr_w ] == s15_addr);
// mounthorse begin
always @(gnt,m0_ssel_dec,m1_ssel_dec,m2_ssel_dec,m3_ssel_dec,m4_ssel_dec,m5_ssel_dec,m6_ssel_dec,m7_ssel_dec)
begin
case(gnt)
3'h0: bushole = ~{m0_ssel_dec[0] | m0_ssel_dec[1] | m0_ssel_dec[2] | m0_ssel_dec[3] | m0_ssel_dec[4] | m0_ssel_dec[5] | m0_ssel_dec[6] | m0_ssel_dec[7] | m0_ssel_dec[8] | m0_ssel_dec[9] | m0_ssel_dec[10] | m0_ssel_dec[11] | m0_ssel_dec[12] | m0_ssel_dec[13] | m0_ssel_dec[14] | m0_ssel_dec[15]};
3'h1: bushole = ~{m1_ssel_dec[0] | m1_ssel_dec[1] | m1_ssel_dec[2] | m1_ssel_dec[3] | m1_ssel_dec[4] | m1_ssel_dec[5] | m1_ssel_dec[6] | m1_ssel_dec[7] | m1_ssel_dec[8] | m1_ssel_dec[9] | m1_ssel_dec[10] | m1_ssel_dec[11] | m1_ssel_dec[12] | m1_ssel_dec[13] | m1_ssel_dec[14] | m1_ssel_dec[15]};
3'h2: bushole = ~{m2_ssel_dec[0] | m2_ssel_dec[1] | m2_ssel_dec[2] | m2_ssel_dec[3] | m2_ssel_dec[4] | m2_ssel_dec[5] | m2_ssel_dec[6] | m2_ssel_dec[7] | m2_ssel_dec[8] | m2_ssel_dec[9] | m2_ssel_dec[10] | m2_ssel_dec[11] | m2_ssel_dec[12] | m2_ssel_dec[13] | m2_ssel_dec[14] | m2_ssel_dec[15]};
3'h3: bushole = ~{m3_ssel_dec[0] | m3_ssel_dec[1] | m3_ssel_dec[2] | m3_ssel_dec[3] | m3_ssel_dec[4] | m3_ssel_dec[5] | m3_ssel_dec[6] | m3_ssel_dec[7] | m3_ssel_dec[8] | m3_ssel_dec[9] | m3_ssel_dec[10] | m3_ssel_dec[11] | m3_ssel_dec[12] | m3_ssel_dec[13] | m3_ssel_dec[14] | m3_ssel_dec[15]};
3'h4: bushole = ~{m4_ssel_dec[0] | m4_ssel_dec[1] | m4_ssel_dec[2] | m4_ssel_dec[3] | m4_ssel_dec[4] | m4_ssel_dec[5] | m4_ssel_dec[6] | m4_ssel_dec[7] | m4_ssel_dec[8] | m4_ssel_dec[9] | m4_ssel_dec[10] | m4_ssel_dec[11] | m4_ssel_dec[12] | m4_ssel_dec[13] | m4_ssel_dec[14] | m4_ssel_dec[15]};
3'h5: bushole = ~{m5_ssel_dec[0] | m5_ssel_dec[1] | m5_ssel_dec[2] | m5_ssel_dec[3] | m5_ssel_dec[4] | m5_ssel_dec[5] | m5_ssel_dec[6] | m5_ssel_dec[7] | m5_ssel_dec[8] | m5_ssel_dec[9] | m5_ssel_dec[10] | m5_ssel_dec[11] | m5_ssel_dec[12] | m5_ssel_dec[13] | m5_ssel_dec[14] | m5_ssel_dec[15]};
3'h6: bushole = ~{m6_ssel_dec[0] | m6_ssel_dec[1] | m6_ssel_dec[2] | m6_ssel_dec[3] | m6_ssel_dec[4] | m6_ssel_dec[5] | m6_ssel_dec[6] | m6_ssel_dec[7] | m6_ssel_dec[8] | m6_ssel_dec[9] | m6_ssel_dec[10] | m6_ssel_dec[11] | m6_ssel_dec[12] | m6_ssel_dec[13] | m6_ssel_dec[14] | m6_ssel_dec[15]};
3'h7: bushole = ~{m7_ssel_dec[0] | m7_ssel_dec[1] | m7_ssel_dec[2] | m7_ssel_dec[3] | m7_ssel_dec[4] | m7_ssel_dec[5] | m7_ssel_dec[6] | m7_ssel_dec[7] | m7_ssel_dec[8] | m7_ssel_dec[9] | m7_ssel_dec[10] | m7_ssel_dec[11] | m7_ssel_dec[12] | m7_ssel_dec[13] | m7_ssel_dec[14] | m7_ssel_dec[15]};
default: bushole = 1'b1;
endcase
end
// mounthorse end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -