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

Subversion Repositories sdr_ctrl

[/] [sdr_ctrl/] [trunk/] [rtl/] [core/] [sdrc_xfr_ctl.v] - Diff between revs 50 and 51

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

Rev 50 Rev 51
Line 133... Line 133...
parameter  APP_DW   = 32;  // Application Data Width 
parameter  APP_DW   = 32;  // Application Data Width 
parameter  APP_BW   = 4;   // Application Byte Width
parameter  APP_BW   = 4;   // Application Byte Width
 
 
parameter  SDR_DW   = 16;  // SDR Data Width 
parameter  SDR_DW   = 16;  // SDR Data Width 
parameter  SDR_BW   = 2;   // SDR Byte Width
parameter  SDR_BW   = 2;   // SDR Byte Width
parameter  REQ_BW   = 12;   //  Request Width
// 12 bit subtractor is not feasibile for FPGA, so changed to 8 bits
 
parameter  REQ_BW   = (`TARGET_DESIGN == `FPGA) ? 8 : 12;   //  Request Width
 
 
 
 
input            clk, reset_n;
input            clk, reset_n;
 
 
   /* Req from bank_ctl */
   /* Req from bank_ctl */
Line 239... Line 240...
 
 
   assign xfr_cmd = (sel_mgmt) ? mgmt_cmd :
   assign xfr_cmd = (sel_mgmt) ? mgmt_cmd :
                    (sel_b2x) ? b2x_sdr_cmd : i_xfr_cmd;
                    (sel_b2x) ? b2x_sdr_cmd : i_xfr_cmd;
 
 
   assign xfr_addr = (sel_mgmt) ? mgmt_addr :
   assign xfr_addr = (sel_mgmt) ? mgmt_addr :
                     (sel_b2x) ? b2x_addr : xfr_caddr;
                     (sel_b2x) ? b2x_addr : xfr_caddr+1;
 
 
   assign mgmt_ack = sel_mgmt;
   assign mgmt_ack = sel_mgmt;
 
 
   assign x2b_ack = sel_b2x;
   assign x2b_ack = sel_b2x;
 
 
   assign ld_xfr = sel_b2x & (b2x_read | b2x_write);
   assign ld_xfr = sel_b2x & (b2x_read | b2x_write);
 
 
   assign xfr_len = (ld_xfr) ? b2x_len : l_len;
   assign xfr_len = (ld_xfr) ? b2x_len : l_len;
 
 
   assign next_xfr_len = (xfr_end) ? xfr_len : xfr_len - 1;
   //assign next_xfr_len = (l_xfr_end && !ld_xfr) ? l_len : xfr_len - 1;
 
   assign next_xfr_len = (ld_xfr) ? b2x_len :
 
                         (l_xfr_end) ? l_len:  l_len - 1;
 
 
   assign d_rd_next = (cas_latency == 2'b01) ? l_rd_next[2] :
   assign d_rd_next = (cas_latency == 2'b01) ? l_rd_next[2] :
                      (cas_latency == 2'b10) ? l_rd_next[3] :
                      (cas_latency == 2'b10) ? l_rd_next[3] :
                      l_rd_next[4];
                      l_rd_next[4];
 
 
Line 271... Line 274...
 
 
   assign dt_next = wr_next | d_rd_next;
   assign dt_next = wr_next | d_rd_next;
 
 
   assign xfr_end = ~|xfr_len;
   assign xfr_end = ~|xfr_len;
 
 
   assign l_xfr_end = ~|l_len;
   assign l_xfr_end = ~|(l_len-1);
 
 
   assign rd_start = ld_xfr & b2x_read & b2x_start;
   assign rd_start = ld_xfr & b2x_read & b2x_start;
 
 
   assign wr_start = ld_xfr & b2x_write & b2x_start;
   assign wr_start = ld_xfr & b2x_write & b2x_start;
 
 
Line 290... Line 293...
                   (sel_b2x) ? b2x_ba : l_ba;
                   (sel_b2x) ? b2x_ba : l_ba;
 
 
   assign xfr_wrap = (ld_xfr) ? b2x_wrap : l_wrap;
   assign xfr_wrap = (ld_xfr) ? b2x_wrap : l_wrap;
 
 
//   assign burst_bdry = ~|xfr_caddr[2:0];
//   assign burst_bdry = ~|xfr_caddr[2:0];
   assign burst_bdry = ~|xfr_caddr[1:0];
   wire [1:0] xfr_caddr_lsb = (xfr_caddr[1:0]+1);
 
   assign burst_bdry = ~|(xfr_caddr_lsb[1:0]);
 
 
   always @ (posedge clk) begin
   always @ (posedge clk) begin
      if (~reset_n) begin
      if (~reset_n) begin
         xfr_caddr <= 12'b0;
         xfr_caddr <= 12'b0;
         l_start <= 1'b0;
         l_start <= 1'b0;
Line 310... Line 314...
         d_act_cmd <= 1'b0;
         d_act_cmd <= 1'b0;
         xfr_st <= `XFR_IDLE;
         xfr_st <= `XFR_IDLE;
      end // if (~reset_n)
      end // if (~reset_n)
 
 
      else begin
      else begin
         xfr_caddr <= (ld_xfr) ? b2x_addr + 12'h1 :
         xfr_caddr <= (ld_xfr) ? b2x_addr :
                      (rd_next | wr_next) ? xfr_caddr + 12'h1 :
                      (rd_next | wr_next) ? xfr_caddr + 1 : xfr_caddr;
                      xfr_caddr;
 
         l_start <= (dt_next) ? 1'b0 :
         l_start <= (dt_next) ? 1'b0 :
                   (ld_xfr) ? b2x_start : l_start;
                   (ld_xfr) ? b2x_start : l_start;
         l_last <= (ld_xfr) ? b2x_last : l_last;
         l_last <= (ld_xfr) ? b2x_last : l_last;
         l_wrap <= (ld_xfr) ? b2x_wrap : l_wrap;
         l_wrap <= (ld_xfr) ? b2x_wrap : l_wrap;
         l_id <= (ld_xfr) ? b2x_id : l_id;
         l_id <= (ld_xfr) ? b2x_id : l_id;
Line 356... Line 359...
        `XFR_READ : begin
        `XFR_READ : begin
           rd_next = ~l_xfr_end |
           rd_next = ~l_xfr_end |
                     l_xfr_end & ~mgmt_req & b2x_req & b2x_read;
                     l_xfr_end & ~mgmt_req & b2x_req & b2x_read;
           wr_next = 1'b0;
           wr_next = 1'b0;
           rdok = l_xfr_end & ~mgmt_req;
           rdok = l_xfr_end & ~mgmt_req;
           cb_pre_ok = l_xfr_end;
           // Break the timing path for FPGA Based Design
 
           cb_pre_ok = (`TARGET_DESIGN == `FPGA) ? 1'b0 : l_xfr_end;
           wrok = 1'b0;
           wrok = 1'b0;
           sel_mgmt = 1'b0;
           sel_mgmt = 1'b0;
 
 
           if (l_xfr_end) begin           // end of transfer
           if (l_xfr_end) begin           // end of transfer
 
 
Line 499... Line 503...
 
 
   assign x2b_rdok = rdok;
   assign x2b_rdok = rdok;
 
 
   assign x2b_wrok = wrok;
   assign x2b_wrok = wrok;
 
 
   assign x2b_pre_ok[0] = (l_ba == 2'b00) ? cb_pre_ok : 1'b1;
   //assign x2b_pre_ok[0] = (l_ba == 2'b00) ? cb_pre_ok : 1'b1;
   assign x2b_pre_ok[1] = (l_ba == 2'b01) ? cb_pre_ok : 1'b1;
   //assign x2b_pre_ok[1] = (l_ba == 2'b01) ? cb_pre_ok : 1'b1;
   assign x2b_pre_ok[2] = (l_ba == 2'b10) ? cb_pre_ok : 1'b1;
   //assign x2b_pre_ok[2] = (l_ba == 2'b10) ? cb_pre_ok : 1'b1;
   assign x2b_pre_ok[3] = (l_ba == 2'b11) ? cb_pre_ok : 1'b1;
   //assign x2b_pre_ok[3] = (l_ba == 2'b11) ? cb_pre_ok : 1'b1;
 
 
 
   assign x2b_pre_ok[0] = cb_pre_ok;
 
   assign x2b_pre_ok[1] = cb_pre_ok;
 
   assign x2b_pre_ok[2] = cb_pre_ok;
 
   assign x2b_pre_ok[3] = cb_pre_ok;
   assign last_burst = (ld_xfr) ? b2x_last : l_last;
   assign last_burst = (ld_xfr) ? b2x_last : l_last;
 
 
   /************************************************************************/
   /************************************************************************/
   // APP Data I/F
   // APP Data I/F
 
 

powered by: WebSVN 2.1.0

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