OpenCores
URL https://opencores.org/ocsvn/oms8051mini/oms8051mini/trunk

Subversion Repositories oms8051mini

[/] [oms8051mini/] [trunk/] [rtl/] [lib/] [wb_crossbar.v] - Diff between revs 10 and 36

Show entire file | Details | Blame | View Log

Rev 10 Rev 36
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.