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

Subversion Repositories sdr_ctrl

[/] [sdr_ctrl/] [trunk/] [rtl/] [core/] [sdrc_req_gen.v] - Diff between revs 51 and 54

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

Rev 51 Rev 54
Line 114... Line 114...
parameter  APP_RW   = 9;   // Application Request Width
parameter  APP_RW   = 9;   // Application Request 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
 
 
// 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           ;
input                   clk           ;
input                   reset_n       ;
input                   reset_n       ;
input [1:0]             cfg_colbits   ; // 2'b00 - 8 Bit column address, 2'b01 - 9 Bit, 10 - 10 bit, 11 - 11Bits
input [1:0]             cfg_colbits   ; // 2'b00 - 8 Bit column address, 2'b01 - 9 Bit, 10 - 10 bit, 11 - 11Bits
 
 
Line 141... Line 139...
output                  r2b_wrap      ; // 1 - Wrap the Address at the page boundary.
output                  r2b_wrap      ; // 1 - Wrap the Address at the page boundary.
output [`SDR_REQ_ID_W-1:0]       r2b_req_id;
output [`SDR_REQ_ID_W-1:0]       r2b_req_id;
output [1:0]             r2b_ba        ; // Bank Address
output [1:0]             r2b_ba        ; // Bank Address
output [11:0]            r2b_raddr     ; // Row Address
output [11:0]            r2b_raddr     ; // Row Address
output [11:0]            r2b_caddr     ; // Column Address
output [11:0]            r2b_caddr     ; // Column Address
output [REQ_BW-1:0]      r2b_len       ; // Burst Length
output [`REQ_BW-1:0]     r2b_len       ; // Burst Length
input                   b2r_ack       ; // Request Ack
input                   b2r_ack       ; // Request Ack
input                   b2r_arb_ok    ; // Bank controller fifo is not full and ready to accept the command
input                   b2r_arb_ok    ; // Bank controller fifo is not full and ready to accept the command
//
//
input [1:0]              sdr_width; // 2'b00 - 32 Bit, 2'b01 - 16 Bit, 2'b1x - 8Bit
input [1:0]              sdr_width; // 2'b00 - 32 Bit, 2'b01 - 16 Bit, 2'b1x - 8Bit
 
 
Line 158... Line 156...
 
 
   reg                  req_st, next_req_st;
   reg                  req_st, next_req_st;
   reg                  r2x_idle, req_ack, r2b_req, r2b_start,
   reg                  r2x_idle, req_ack, r2b_req, r2b_start,
                        r2b_write, req_idle, req_ld, lcl_wrap;
                        r2b_write, req_idle, req_ld, lcl_wrap;
   reg [`SDR_REQ_ID_W-1:0]       r2b_req_id;
   reg [`SDR_REQ_ID_W-1:0]       r2b_req_id;
   reg [REQ_BW-1:0]      lcl_req_len;
   reg [`REQ_BW-1:0]     lcl_req_len;
 
 
   wire                 r2b_last, page_ovflw;
   wire                 r2b_last, page_ovflw;
   wire [REQ_BW-1:0]     r2b_len, next_req_len;
   wire [`REQ_BW-1:0]    r2b_len, next_req_len;
   wire [12:0]           max_r2b_len;
   wire [12:0]           max_r2b_len;
   reg  [12:0]           max_r2b_len_r;
   reg  [12:0]           max_r2b_len_r;
 
 
   reg [1:0]             r2b_ba;
   reg [1:0]             r2b_ba;
   reg [11:0]            r2b_raddr;
   reg [11:0]            r2b_raddr;
Line 223... Line 221...
     // if the current burst cross the page boundary. 
     // if the current burst cross the page boundary. 
   assign page_ovflw = ({1'b0, lcl_req_len} > max_r2b_len_r) ? ~lcl_wrap : 1'b0;
   assign page_ovflw = ({1'b0, lcl_req_len} > max_r2b_len_r) ? ~lcl_wrap : 1'b0;
 
 
   assign r2b_len = (page_ovflw) ? max_r2b_len_r : lcl_req_len;
   assign r2b_len = (page_ovflw) ? max_r2b_len_r : lcl_req_len;
 
 
   assign next_req_len = lcl_req_len - r2b_len;
   assign next_req_len = lcl_req_len - max_r2b_len_r;
 
 
   assign next_sdr_addr = curr_sdr_addr + r2b_len;
   assign next_sdr_addr = curr_sdr_addr + max_r2b_len_r;
 
 
 
 
   assign r2b_wrap = lcl_wrap;
   assign r2b_wrap = lcl_wrap;
 
 
   assign r2b_last = ~page_ovflw;
   assign r2b_last = ~page_ovflw;

powered by: WebSVN 2.1.0

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