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

Subversion Repositories mem_ctrl

[/] [mem_ctrl/] [trunk/] [rtl/] [verilog/] [mc_adr_sel.v] - Diff between revs 4 and 8

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 4 Rev 8
Line 35... Line 35...
////                                                             ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
 
 
//  CVS Log
//  CVS Log
//
//
//  $Id: mc_adr_sel.v,v 1.1 2001-07-29 07:34:41 rudi Exp $
//  $Id: mc_adr_sel.v,v 1.2 2001-08-10 08:16:21 rudi Exp $
//
//
//  $Date: 2001-07-29 07:34:41 $
//  $Date: 2001-08-10 08:16:21 $
//  $Revision: 1.1 $
//  $Revision: 1.2 $
//  $Author: rudi $
//  $Author: rudi $
//  $Locker:  $
//  $Locker:  $
//  $State: Exp $
//  $State: Exp $
//
//
// Change History:
// Change History:
//               $Log: not supported by cvs2svn $
//               $Log: not supported by cvs2svn $
 
//               Revision 1.1  2001/07/29 07:34:41  rudi
 
//
 
//
 
//               1) Changed Directory Structure
 
//               2) Fixed several minor bugs
 
//
//               Revision 1.2  2001/06/12 15:19:49  rudi
//               Revision 1.2  2001/06/12 15:19:49  rudi
//
//
//
//
//               Minor changes after running lint, and a small bug fix reading csr and ba_mask registers.
//               Minor changes after running lint, and a small bug fix reading csr and ba_mask registers.
//
//
Line 117... Line 123...
//
//
// Misc Logic
// Misc Logic
//
//
 
 
always @(mem_type or wr_hold or sdram_adr or acs_addr or sram_addr or wb_addr_i)
always @(mem_type or wr_hold or sdram_adr or acs_addr or sram_addr or wb_addr_i)
        if(mem_type == `MEM_TYPE_SDRAM)                 mc_addr_d = {9'h0, sdram_adr};
        if(mem_type == `MC_MEM_TYPE_SDRAM)              mc_addr_d = {9'h0, sdram_adr};
        else
        else
        if(mem_type == `MEM_TYPE_ACS)                   mc_addr_d = acs_addr;
        if(mem_type == `MC_MEM_TYPE_ACS)                mc_addr_d = acs_addr;
        else
        else
        if((mem_type == `MEM_TYPE_SRAM) & wr_hold)      mc_addr_d = sram_addr;
        if((mem_type == `MC_MEM_TYPE_SRAM) & wr_hold)   mc_addr_d = sram_addr;
        else                                            mc_addr_d = wb_addr_i[25:2];
        else                                            mc_addr_d = wb_addr_i[25:2];
 
 
assign mc_addr = rfr_ack ? {mc_addr_d[23:11], 1'b1, mc_addr_d[9:0]} : mc_addr_d;
assign mc_addr = rfr_ack ? {mc_addr_d[23:11], 1'b1, mc_addr_d[9:0]} : mc_addr_d;
 
 
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Line 145... Line 151...
        // *** Use same address for write and read ***
        // *** Use same address for write and read ***
        //if(wb_write_go)               acs_addr <= #1 wb_addr_i[25:2];
        //if(wb_write_go)               acs_addr <= #1 wb_addr_i[25:2];
        //else
        //else
        if(cs_le)
        if(cs_le)
                case(bus_width)         // synopsys full_case parallel_case
                case(bus_width)         // synopsys full_case parallel_case
                   `BW_8:       acs_addr <= #1 wb_addr_i[23:0];
                   `MC_BW_8:    acs_addr <= #1 wb_addr_i[23:0];
                   `BW_16:      acs_addr <= #1 wb_addr_i[24:1];
                   `MC_BW_16:   acs_addr <= #1 wb_addr_i[24:1];
                   `BW_32:      acs_addr <= #1 wb_addr_i[25:2];
                   `MC_BW_32:   acs_addr <= #1 wb_addr_i[25:2];
                endcase
                endcase
        else
        else
        if(next_adr)            acs_addr <= #1 acs_addr_pl1;
        if(next_adr)            acs_addr <= #1 acs_addr_pl1;
 
 
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Line 166... Line 172...
assign sdram_adr[14:13] = bank_adr;
assign sdram_adr[14:13] = bank_adr;
 
 
always @(posedge clk)
always @(posedge clk)
   if(wr_cycle ? wb_ack_o : wb_stb_i)
   if(wr_cycle ? wb_ack_o : wb_stb_i)
        casex({bus_width, mem_size})            // synopsys full_case parallel_case
        casex({bus_width, mem_size})            // synopsys full_case parallel_case
           {`BW_8, `MEM_SIZE_64}:       col_adr <= #1 {1'h0, wb_addr_i[10:2]};
           {`MC_BW_8, `MC_MEM_SIZE_64}:         col_adr <= #1 {1'h0, wb_addr_i[10:2]};
           {`BW_8, `MEM_SIZE_128}:      col_adr <= #1        wb_addr_i[11:2];
           {`MC_BW_8, `MC_MEM_SIZE_128}:        col_adr <= #1        wb_addr_i[11:2];
           {`BW_8, `MEM_SIZE_256}:      col_adr <= #1        wb_addr_i[11:2];
           {`MC_BW_8, `MC_MEM_SIZE_256}:        col_adr <= #1        wb_addr_i[11:2];
 
 
           {`BW_16, `MEM_SIZE_64}:      col_adr <= #1 {2'h0, wb_addr_i[09:2]};
           {`MC_BW_16, `MC_MEM_SIZE_64}:        col_adr <= #1 {2'h0, wb_addr_i[09:2]};
           {`BW_16, `MEM_SIZE_128}:     col_adr <= #1 {1'h0, wb_addr_i[10:2]};
           {`MC_BW_16, `MC_MEM_SIZE_128}:       col_adr <= #1 {1'h0, wb_addr_i[10:2]};
           {`BW_16, `MEM_SIZE_256}:     col_adr <= #1 {1'h0, wb_addr_i[10:2]};
           {`MC_BW_16, `MC_MEM_SIZE_256}:       col_adr <= #1 {1'h0, wb_addr_i[10:2]};
 
 
           {`BW_32, `MEM_SIZE_64}:      col_adr <= #1 {2'h0, wb_addr_i[09:2]};
           {`MC_BW_32, `MC_MEM_SIZE_64}:        col_adr <= #1 {2'h0, wb_addr_i[09:2]};
           {`BW_32, `MEM_SIZE_128}:     col_adr <= #1 {2'h0, wb_addr_i[09:2]};
           {`MC_BW_32, `MC_MEM_SIZE_128}:       col_adr <= #1 {2'h0, wb_addr_i[09:2]};
           {`BW_32, `MEM_SIZE_256}:     col_adr <= #1 {2'h0, wb_addr_i[09:2]};
           {`MC_BW_32, `MC_MEM_SIZE_256}:       col_adr <= #1 {2'h0, wb_addr_i[09:2]};
        endcase
        endcase
 
 
always @(posedge clk)
always @(posedge clk)
   if(cs_le)
   if(cs_le)
     begin
     begin
        if(!bas)
        if(!bas)
                casex({bus_width, mem_size})            // synopsys full_case parallel_case
                casex({bus_width, mem_size})            // synopsys full_case parallel_case
                   {`BW_8, `MEM_SIZE_64}:       row_adr <= #1 {1'h0, wb_addr_i[24:13]};
                   {`MC_BW_8, `MC_MEM_SIZE_64}:         row_adr <= #1 {1'h0, wb_addr_i[24:13]};
                   {`BW_8, `MEM_SIZE_128}:      row_adr <= #1 {1'h0, wb_addr_i[25:14]};
                   {`MC_BW_8, `MC_MEM_SIZE_128}:        row_adr <= #1 {1'h0, wb_addr_i[25:14]};
                   {`BW_8, `MEM_SIZE_256}:      row_adr <= #1        wb_addr_i[26:14];
                   {`MC_BW_8, `MC_MEM_SIZE_256}:        row_adr <= #1        wb_addr_i[26:14];
 
 
                   {`BW_16, `MEM_SIZE_64}:      row_adr <= #1 {1'h0, wb_addr_i[23:12]};
                   {`MC_BW_16, `MC_MEM_SIZE_64}:        row_adr <= #1 {1'h0, wb_addr_i[23:12]};
                   {`BW_16, `MEM_SIZE_128}:     row_adr <= #1 {1'h0, wb_addr_i[24:13]};
                   {`MC_BW_16, `MC_MEM_SIZE_128}:       row_adr <= #1 {1'h0, wb_addr_i[24:13]};
                   {`BW_16, `MEM_SIZE_256}:     row_adr <= #1        wb_addr_i[25:13];
                   {`MC_BW_16, `MC_MEM_SIZE_256}:       row_adr <= #1        wb_addr_i[25:13];
 
 
                   {`BW_32, `MEM_SIZE_64}:      row_adr <= #1 {2'h0, wb_addr_i[22:12]};
                   {`MC_BW_32, `MC_MEM_SIZE_64}:        row_adr <= #1 {2'h0, wb_addr_i[22:12]};
                   {`BW_32, `MEM_SIZE_128}:     row_adr <= #1 {1'h0, wb_addr_i[23:12]};
                   {`MC_BW_32, `MC_MEM_SIZE_128}:       row_adr <= #1 {1'h0, wb_addr_i[23:12]};
                   {`BW_32, `MEM_SIZE_256}:     row_adr <= #1        wb_addr_i[24:12];
                   {`MC_BW_32, `MC_MEM_SIZE_256}:       row_adr <= #1        wb_addr_i[24:12];
                endcase
                endcase
        else
        else
                casex({bus_width, mem_size})            // synopsys full_case parallel_case
                casex({bus_width, mem_size})            // synopsys full_case parallel_case
                   {`BW_8, `MEM_SIZE_64}:       row_adr <= #1 {1'h0, wb_addr_i[22:11]};
                   {`MC_BW_8, `MC_MEM_SIZE_64}:         row_adr <= #1 {1'h0, wb_addr_i[22:11]};
                   {`BW_8, `MEM_SIZE_128}:      row_adr <= #1 {1'h0, wb_addr_i[23:12]};
                   {`MC_BW_8, `MC_MEM_SIZE_128}:        row_adr <= #1 {1'h0, wb_addr_i[23:12]};
                   {`BW_8, `MEM_SIZE_256}:      row_adr <= #1        wb_addr_i[24:12];
                   {`MC_BW_8, `MC_MEM_SIZE_256}:        row_adr <= #1        wb_addr_i[24:12];
 
 
                   {`BW_16, `MEM_SIZE_64}:      row_adr <= #1 {1'h0, wb_addr_i[21:10]};
                   {`MC_BW_16, `MC_MEM_SIZE_64}:        row_adr <= #1 {1'h0, wb_addr_i[21:10]};
                   {`BW_16, `MEM_SIZE_128}:     row_adr <= #1 {1'h0, wb_addr_i[22:11]};
                   {`MC_BW_16, `MC_MEM_SIZE_128}:       row_adr <= #1 {1'h0, wb_addr_i[22:11]};
                   {`BW_16, `MEM_SIZE_256}:     row_adr <= #1        wb_addr_i[23:11];
                   {`MC_BW_16, `MC_MEM_SIZE_256}:       row_adr <= #1        wb_addr_i[23:11];
 
 
                   {`BW_32, `MEM_SIZE_64}:      row_adr <= #1 {2'h0, wb_addr_i[20:10]};
                   {`MC_BW_32, `MC_MEM_SIZE_64}:        row_adr <= #1 {2'h0, wb_addr_i[20:10]};
                   {`BW_32, `MEM_SIZE_128}:     row_adr <= #1 {1'h0, wb_addr_i[21:10]};
                   {`MC_BW_32, `MC_MEM_SIZE_128}:       row_adr <= #1 {1'h0, wb_addr_i[21:10]};
                   {`BW_32, `MEM_SIZE_256}:     row_adr <= #1        wb_addr_i[22:10];
                   {`MC_BW_32, `MC_MEM_SIZE_256}:       row_adr <= #1        wb_addr_i[22:10];
                endcase
                endcase
     end
     end
 
 
 
 
always @(posedge clk)
always @(posedge clk)
   if(cs_le)
   if(cs_le)
     begin
     begin
        if(!bas)
        if(!bas)
                casex({bus_width, mem_size})            // synopsys full_case parallel_case
                casex({bus_width, mem_size})            // synopsys full_case parallel_case
                   {`BW_8, `MEM_SIZE_64}:       bank_adr <= #1 wb_addr_i[12:11];
                   {`MC_BW_8, `MC_MEM_SIZE_64}:         bank_adr <= #1 wb_addr_i[12:11];
                   {`BW_8, `MEM_SIZE_128}:      bank_adr <= #1 wb_addr_i[13:12];
                   {`MC_BW_8, `MC_MEM_SIZE_128}:        bank_adr <= #1 wb_addr_i[13:12];
                   {`BW_8, `MEM_SIZE_256}:      bank_adr <= #1 wb_addr_i[13:12];
                   {`MC_BW_8, `MC_MEM_SIZE_256}:        bank_adr <= #1 wb_addr_i[13:12];
 
 
                   {`BW_16, `MEM_SIZE_64}:      bank_adr <= #1 wb_addr_i[11:10];
                   {`MC_BW_16, `MC_MEM_SIZE_64}:        bank_adr <= #1 wb_addr_i[11:10];
                   {`BW_16, `MEM_SIZE_128}:     bank_adr <= #1 wb_addr_i[12:11];
                   {`MC_BW_16, `MC_MEM_SIZE_128}:       bank_adr <= #1 wb_addr_i[12:11];
                   {`BW_16, `MEM_SIZE_256}:     bank_adr <= #1 wb_addr_i[12:11];
                   {`MC_BW_16, `MC_MEM_SIZE_256}:       bank_adr <= #1 wb_addr_i[12:11];
 
 
                   {`BW_32, `MEM_SIZE_64}:      bank_adr <= #1 wb_addr_i[11:10];
                   {`MC_BW_32, `MC_MEM_SIZE_64}:        bank_adr <= #1 wb_addr_i[11:10];
                   {`BW_32, `MEM_SIZE_128}:     bank_adr <= #1 wb_addr_i[11:10];
                   {`MC_BW_32, `MC_MEM_SIZE_128}:       bank_adr <= #1 wb_addr_i[11:10];
                   {`BW_32, `MEM_SIZE_256}:     bank_adr <= #1 wb_addr_i[11:10];
                   {`MC_BW_32, `MC_MEM_SIZE_256}:       bank_adr <= #1 wb_addr_i[11:10];
                endcase
                endcase
        else
        else
                casex({bus_width, mem_size})            // synopsys full_case parallel_case
                casex({bus_width, mem_size})            // synopsys full_case parallel_case
                   {`BW_8, `MEM_SIZE_64}:       bank_adr <= #1 wb_addr_i[24:23];
                   {`MC_BW_8, `MC_MEM_SIZE_64}:         bank_adr <= #1 wb_addr_i[24:23];
                   {`BW_8, `MEM_SIZE_128}:      bank_adr <= #1 wb_addr_i[25:24];
                   {`MC_BW_8, `MC_MEM_SIZE_128}:        bank_adr <= #1 wb_addr_i[25:24];
                   {`BW_8, `MEM_SIZE_256}:      bank_adr <= #1 wb_addr_i[26:25];
                   {`MC_BW_8, `MC_MEM_SIZE_256}:        bank_adr <= #1 wb_addr_i[26:25];
 
 
                   {`BW_16, `MEM_SIZE_64}:      bank_adr <= #1 wb_addr_i[23:22];
                   {`MC_BW_16, `MC_MEM_SIZE_64}:        bank_adr <= #1 wb_addr_i[23:22];
                   {`BW_16, `MEM_SIZE_128}:     bank_adr <= #1 wb_addr_i[24:23];
                   {`MC_BW_16, `MC_MEM_SIZE_128}:       bank_adr <= #1 wb_addr_i[24:23];
                   {`BW_16, `MEM_SIZE_256}:     bank_adr <= #1 wb_addr_i[25:24];
                   {`MC_BW_16, `MC_MEM_SIZE_256}:       bank_adr <= #1 wb_addr_i[25:24];
 
 
                   {`BW_32, `MEM_SIZE_64}:      bank_adr <= #1 wb_addr_i[22:21];
                   {`MC_BW_32, `MC_MEM_SIZE_64}:        bank_adr <= #1 wb_addr_i[22:21];
                   {`BW_32, `MEM_SIZE_128}:     bank_adr <= #1 wb_addr_i[23:22];
                   {`MC_BW_32, `MC_MEM_SIZE_128}:       bank_adr <= #1 wb_addr_i[23:22];
                   {`BW_32, `MEM_SIZE_256}:     bank_adr <= #1 wb_addr_i[24:23];
                   {`MC_BW_32, `MC_MEM_SIZE_256}:       bank_adr <= #1 wb_addr_i[24:23];
                endcase
                endcase
     end
     end
 
 
always @(bus_width or mem_size)
always @(bus_width or mem_size)
        casex({bus_width, mem_size})            // synopsys full_case parallel_case
        casex({bus_width, mem_size})            // synopsys full_case parallel_case
           {`BW_8, `MEM_SIZE_64}:       page_size = 11'd512;
           {`MC_BW_8, `MC_MEM_SIZE_64}:         page_size = 11'd512;
           {`BW_8, `MEM_SIZE_128}:      page_size = 11'd1024;
           {`MC_BW_8, `MC_MEM_SIZE_128}:        page_size = 11'd1024;
           {`BW_8, `MEM_SIZE_256}:      page_size = 11'd1024;
           {`MC_BW_8, `MC_MEM_SIZE_256}:        page_size = 11'd1024;
 
 
           {`BW_16, `MEM_SIZE_64}:      page_size = 11'd256;
           {`MC_BW_16, `MC_MEM_SIZE_64}:        page_size = 11'd256;
           {`BW_16, `MEM_SIZE_128}:     page_size = 11'd512;
           {`MC_BW_16, `MC_MEM_SIZE_128}:       page_size = 11'd512;
           {`BW_16, `MEM_SIZE_256}:     page_size = 11'd512;
           {`MC_BW_16, `MC_MEM_SIZE_256}:       page_size = 11'd512;
 
 
           {`BW_32, `MEM_SIZE_64}:      page_size = 11'd256;
           {`MC_BW_32, `MC_MEM_SIZE_64}:        page_size = 11'd256;
           {`BW_32, `MEM_SIZE_128}:     page_size = 11'd256;
           {`MC_BW_32, `MC_MEM_SIZE_128}:       page_size = 11'd256;
           {`BW_32, `MEM_SIZE_256}:     page_size = 11'd256;
           {`MC_BW_32, `MC_MEM_SIZE_256}:       page_size = 11'd256;
        endcase
        endcase
 
 
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.