Line 91... |
Line 91... |
trcd_delay); // Active to R/W delay
|
trcd_delay); // Active to R/W delay
|
|
|
parameter APP_AW = 30; // Application Address Width
|
parameter APP_AW = 30; // Application Address Width
|
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 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
|
|
parameter REQ_BW = 12; // Request Width
|
input clk, reset_n;
|
input clk, reset_n;
|
|
|
/* Req from bank_ctl */
|
/* Req from bank_ctl */
|
input r2b_req, r2b_start, r2b_last,
|
input r2b_req, r2b_start, r2b_last,
|
r2b_write, r2b_wrap;
|
r2b_write, r2b_wrap;
|
input [`SDR_REQ_ID_W-1:0] r2b_req_id;
|
input [`SDR_REQ_ID_W-1:0] r2b_req_id;
|
input [11:0] r2b_raddr;
|
input [11:0] r2b_raddr;
|
input [11:0] r2b_caddr;
|
input [11:0] r2b_caddr;
|
input [APP_RW-1:0] r2b_len;
|
input [REQ_BW-1:0] r2b_len;
|
output b2r_ack;
|
output b2r_ack;
|
input sdr_dma_last;
|
input sdr_dma_last;
|
|
|
/* Req to xfr_ctl */
|
/* Req to xfr_ctl */
|
output b2x_req, b2x_start, b2x_last,
|
output b2x_req, b2x_start, b2x_last,
|
tras_ok, b2x_wrap;
|
tras_ok, b2x_wrap;
|
output [`SDR_REQ_ID_W-1:0] b2x_id;
|
output [`SDR_REQ_ID_W-1:0] b2x_id;
|
output [11:0] b2x_addr;
|
output [11:0] b2x_addr;
|
output [APP_RW-1:0] b2x_len;
|
output [REQ_BW-1:0] b2x_len;
|
output [1:0] b2x_cmd;
|
output [1:0] b2x_cmd;
|
input x2b_ack;
|
input x2b_ack;
|
|
|
/* Status from xfr_ctl */
|
/* Status from xfr_ctl */
|
input x2b_refresh, x2b_act_ok, x2b_rdok,
|
input x2b_refresh, x2b_act_ok, x2b_rdok,
|
Line 140... |
Line 140... |
reg l_start, l_last;
|
reg l_start, l_last;
|
reg b2x_req, b2r_ack;
|
reg b2x_req, b2r_ack;
|
wire [`SDR_REQ_ID_W-1:0] b2x_id;
|
wire [`SDR_REQ_ID_W-1:0] b2x_id;
|
reg [`SDR_REQ_ID_W-1:0] l_id;
|
reg [`SDR_REQ_ID_W-1:0] l_id;
|
reg [11:0] b2x_addr;
|
reg [11:0] b2x_addr;
|
reg [APP_RW-1:0] l_len;
|
reg [REQ_BW-1:0] l_len;
|
wire [APP_RW-1:0] b2x_len;
|
wire [REQ_BW-1:0] b2x_len;
|
reg [1:0] b2x_cmd;
|
reg [1:0] b2x_cmd;
|
reg bank_valid;
|
reg bank_valid;
|
reg [11:0] bank_row;
|
reg [11:0] bank_row;
|
reg [3:0] tras_cntr, timer0;
|
reg [3:0] tras_cntr, timer0;
|
reg l_wrap, l_write;
|
reg l_wrap, l_write;
|
Line 168... |
Line 168... |
end // if (~reset_n)
|
end // if (~reset_n)
|
|
|
else begin
|
else begin
|
|
|
bank_valid <= (x2b_refresh || bank_prech_page_closed) ? 1'b0 : // force the bank status to be invalid
|
bank_valid <= (x2b_refresh || bank_prech_page_closed) ? 1'b0 : // force the bank status to be invalid
|
// bank_valid <= (x2b_refresh) ? 1'b0 :
|
|
(activate_bank) ? 1'b1 : bank_valid;
|
(activate_bank) ? 1'b1 : bank_valid;
|
|
|
tras_cntr <= (activate_bank) ? tras_delay :
|
tras_cntr <= (activate_bank) ? tras_delay :
|
(~tras_ok_internal) ? tras_cntr - 4'b1 : 4'b0;
|
(~tras_ok_internal) ? tras_cntr - 4'b1 : 4'b0;
|
|
|