Line 12... |
Line 12... |
//// nothing ////
|
//// nothing ////
|
//// ////
|
//// ////
|
//// Author(s): ////
|
//// Author(s): ////
|
//// - Dinesh Annayya, dinesha@opencores.org ////
|
//// - Dinesh Annayya, dinesha@opencores.org ////
|
//// ////
|
//// ////
|
//// Revision : Nov 26, 2016 ////
|
//////////////////////////////////////////////////////////////////////
|
//// ////
|
//// Revision : Nov 26, 2016
|
|
//// v-0.0 - Dinesh.A, Nov 26, 2016
|
|
//// 1. Initial Version
|
|
//// v-0.1 - Dinesh.A, Jan 19, 2017
|
|
//// 1. Lint warning fixes, Seperated resetable and non
|
|
// resetable logic
|
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//// ////
|
//// ////
|
//// Copyright (C) 2000 Authors and OPENCORES.ORG ////
|
//// Copyright (C) 2000 Authors and OPENCORES.ORG ////
|
//// ////
|
//// ////
|
//// This source file may be used and distributed without ////
|
//// This source file may be used and distributed without ////
|
Line 251... |
Line 256... |
reg [WB_MASTER-1:0] master_busy; // master busy flag
|
reg [WB_MASTER-1:0] master_busy; // master busy flag
|
reg [WB_SLAVE-1:0] slave_busy; // slave busy flag
|
reg [WB_SLAVE-1:0] slave_busy; // slave busy flag
|
reg [TAR_WD -1:0] master_mx_id[WB_MASTER-1:0];
|
reg [TAR_WD -1:0] master_mx_id[WB_MASTER-1:0];
|
reg [TAR_WD -1:0] slave_mx_id [WB_SLAVE-1:0];
|
reg [TAR_WD -1:0] slave_mx_id [WB_SLAVE-1:0];
|
|
|
reg [TAR_WD-1 :0] cur_target_id;
|
|
wire [TAR_WD-1:0] wbd_taddr_master_t[WB_MASTER-1:0]; // target address from master
|
wire [TAR_WD-1:0] wbd_taddr_master_t[WB_MASTER-1:0]; // target address from master
|
wire [D_WD-1:0] wbd_din_master_t[WB_MASTER-1:0]; // target address from master
|
wire [D_WD-1:0] wbd_din_master_t[WB_MASTER-1:0]; // target address from master
|
reg [D_WD-1:0] wbd_dout_master_t[WB_MASTER-1:0]; // target address from master
|
reg [D_WD-1:0] wbd_dout_master_t[WB_MASTER-1:0]; // target address from master
|
wire [ADR_WD-1:0] wbd_adr_master_t[WB_MASTER-1:0]; // target address from master
|
wire [ADR_WD-1:0] wbd_adr_master_t[WB_MASTER-1:0]; // target address from master
|
wire [BE_WD-1:0] wbd_be_master_t[WB_MASTER-1:0]; // target address from master
|
wire [BE_WD-1:0] wbd_be_master_t[WB_MASTER-1:0]; // target address from master
|
Line 269... |
Line 273... |
|
|
reg [D_WD-1:0] wbd_din_slave_t[WB_SLAVE-1:0]; // target address from master
|
reg [D_WD-1:0] wbd_din_slave_t[WB_SLAVE-1:0]; // target address from master
|
reg [ADR_WD-1:0] wbd_adr_slave_t[WB_SLAVE-1:0]; // target address from master
|
reg [ADR_WD-1:0] wbd_adr_slave_t[WB_SLAVE-1:0]; // target address from master
|
reg [BE_WD-1:0] wbd_be_slave_t[WB_SLAVE-1:0]; // target address from master
|
reg [BE_WD-1:0] wbd_be_slave_t[WB_SLAVE-1:0]; // target address from master
|
|
|
integer i,k,l;
|
integer i,k,l,n;
|
|
|
|
|
/**********************************************************
|
/**********************************************************
|
Re-Arraging the array in seperate two dimensional information
|
Re-Arraging the array in seperate two dimensional information
|
***********************************************************/
|
***********************************************************/
|
Line 355... |
Line 359... |
if(rst_n == 0) begin
|
if(rst_n == 0) begin
|
master_busy <= 0;
|
master_busy <= 0;
|
slave_busy <= 0;
|
slave_busy <= 0;
|
end else begin
|
end else begin
|
for(i = 0; i < WB_MASTER; i = i + 1) begin
|
for(i = 0; i < WB_MASTER; i = i + 1) begin
|
cur_target_id = wbd_taddr_master_t[i];
|
|
if(master_busy[i] == 0) begin
|
if(master_busy[i] == 0) begin
|
if(wbd_stb_master[i] & slave_busy[wbd_taddr_master_t[i]] == 0) begin
|
if(wbd_stb_master[i] & slave_busy[wbd_taddr_master_t[i]] == 0) begin
|
master_mx_id[i] <= wbd_taddr_master_t[i];
|
|
slave_mx_id [wbd_taddr_master_t[i]] <= i;
|
|
slave_busy[wbd_taddr_master_t[i]] <= 1;
|
slave_busy[wbd_taddr_master_t[i]] <= 1;
|
master_busy[i] <= 1;
|
master_busy[i] <= 1;
|
// synopsys translate_off
|
|
// $display("%m:%t: Locking Master : %d with Slave : %d",$time,i,wbd_taddr_master_t[i]);
|
|
// synopsys translate_on
|
|
end
|
end
|
end else if(wbd_cyc_master[i] == 0) begin
|
end else if(wbd_cyc_master[i] == 0) begin
|
if(master_busy[i] == 1) begin
|
|
// synopsys translate_off
|
|
// $display("%m:%t: Releasing Master : %d with Slave : %d",$time,i,wbd_taddr_master_t[i]);
|
|
// synopsys translate_on
|
|
end
|
|
master_busy[i] <= 0;
|
master_busy[i] <= 0;
|
slave_busy[wbd_taddr_master_t[i]] <= 0;
|
slave_busy[wbd_taddr_master_t[i]] <= 0;
|
end
|
end
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
|
// Seperated non resetable two dimensional reg
|
|
always @(posedge clk) begin
|
|
for(n = 0; n < WB_MASTER; n = n + 1) begin
|
|
if(master_busy[n] == 0) begin
|
|
if(wbd_stb_master[n] & slave_busy[wbd_taddr_master_t[n]] == 0) begin
|
|
master_mx_id[n] <= wbd_taddr_master_t[n];
|
|
slave_mx_id [wbd_taddr_master_t[n]] <= n;
|
|
// synopsys translate_off
|
|
// $display("%m:%t: Locking Master : %d with Slave : %d",$time,i,wbd_taddr_master_t[n]);
|
|
// synopsys translate_on
|
|
end
|
|
end else if(wbd_cyc_master[n] == 0) begin
|
|
if(master_busy[n] == 1) begin
|
|
// synopsys translate_off
|
|
// $display("%m:%t: Releasing Master : %d with Slave : %d",$time,i,wbd_taddr_master_t[n]);
|
|
// synopsys translate_on
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
endmodule
|
endmodule
|
|
|
No newline at end of file
|
No newline at end of file
|