Line 80... |
Line 80... |
req_wrap, // Wrap mode request (xfr_len = 4)
|
req_wrap, // Wrap mode request (xfr_len = 4)
|
req_wr_n, // 0 => Write request, 1 => read req
|
req_wr_n, // 0 => Write request, 1 => read req
|
req_ack, // Request has been accepted
|
req_ack, // Request has been accepted
|
sdr_core_busy_n, // SDRAM Core Busy Indication
|
sdr_core_busy_n, // SDRAM Core Busy Indication
|
sdr_dev_config, // sdram configuration
|
sdr_dev_config, // sdram configuration
|
|
cfg_colbits,
|
|
|
/* Req to bank_ctl */
|
/* Req to bank_ctl */
|
r2x_idle,
|
r2x_idle,
|
r2b_req, // request
|
r2b_req, // request
|
r2b_req_id, // ID
|
r2b_req_id, // ID
|
Line 107... |
Line 108... |
|
|
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
|
|
|
input clk, reset_n;
|
input clk, reset_n;
|
|
input [1:0] cfg_colbits; // 2'b00 - 8 Bit column address, 2'b01 - 9 Bit, 10 - 10 bit, 11 - 11Bits
|
|
|
/* Request from app */
|
/* Request from app */
|
input req;
|
input req;
|
input [`SDR_REQ_ID_W-1:0] req_id;
|
input [`SDR_REQ_ID_W-1:0] req_id;
|
input [APP_AW:0] req_addr;
|
input [APP_AW:0] req_addr;
|
Line 163... |
Line 165... |
// All queues end on a 512 byte boundary (actually a 1K boundary). For Q
|
// All queues end on a 512 byte boundary (actually a 1K boundary). For Q
|
// accesses req_addr_mask is set to LSB of 1 and MSB of 0 to constrain the
|
// accesses req_addr_mask is set to LSB of 1 and MSB of 0 to constrain the
|
// accesses within the space for a Q. When splitting and calculating the next
|
// accesses within the space for a Q. When splitting and calculating the next
|
// address only the LSBs are incremented, the MSBs remain = req_addr.
|
// address only the LSBs are incremented, the MSBs remain = req_addr.
|
//
|
//
|
assign max_r2b_len = (sdr_width == 1'b0) ? ((sdr_dev_config == `SDR_CONFIG_IS_32M) ? (12'h200 - r2b_caddr) : (12'h100 - r2b_caddr)) :
|
assign max_r2b_len = (cfg_colbits == 2'b00) ? (12'h100 - r2b_caddr) :
|
(sdr_dev_config == `SDR_CONFIG_IS_8M) ? (12'h100 - r2b_caddr) : (12'h200 - r2b_caddr);
|
(cfg_colbits == 2'b01) ? (12'h200 - r2b_caddr) :
|
|
(cfg_colbits == 2'b10) ? (12'h400 - r2b_caddr) : (12'h800 - r2b_caddr);
|
|
|
assign page_ovflw = ({1'b0, lcl_req_len} > max_r2b_len) ? ~lcl_wrap : 1'b0;
|
assign page_ovflw = ({1'b0, lcl_req_len} > max_r2b_len) ? ~lcl_wrap : 1'b0;
|
|
|
assign r2b_len = (page_ovflw) ? max_r2b_len : lcl_req_len;
|
assign r2b_len = (page_ovflw) ? max_r2b_len : lcl_req_len;
|
|
|
Line 243... |
Line 246... |
req_st <= next_req_st;
|
req_st <= next_req_st;
|
end // else: !if(~reset_n)
|
end // else: !if(~reset_n)
|
//
|
//
|
// addrs bits for the bank, row and column
|
// addrs bits for the bank, row and column
|
//
|
//
|
// SDR_CONFIG_IS_8M 2'b00
|
|
// SDR_CONFIG_IS_16M 2'b01
|
// Bank Bits are always - 2 Bits
|
// SDR_CONFIG_IS_32M 2'b10
|
assign r2b_ba = (cfg_colbits == 2'b00) ? {curr_sdr_addr[9:8]} :
|
// SDR_CONFIG_IS_LGCY 2'b11
|
(cfg_colbits == 2'b01) ? {curr_sdr_addr[10:9]} :
|
//
|
(cfg_colbits == 2'b10) ? {curr_sdr_addr[11:10]} : curr_sdr_addr[12:11];
|
assign r2b_ba = ({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_8M}) ? curr_sdr_addr[20:19] :
|
|
({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_16M}) ? curr_sdr_addr[21:20] :
|
/********************
|
({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_32M}) ? curr_sdr_addr[22:21] :
|
* Colbits Mapping:
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_8M}) ? curr_sdr_addr[21:20] :
|
* 2'b00 - 8 Bit
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_16M}) ? curr_sdr_addr[22:21]:
|
* 2'b01 - 16 Bit
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_32M}) ? curr_sdr_addr[23:22] : curr_sdr_addr[9:8];
|
* 2'b10 - 10 Bit
|
|
* 2'b11 - 11 Bits
|
assign r2b_caddr = ({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_8M}) ? {4'b0, curr_sdr_addr[7:0]} :
|
************************/
|
({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_16M}) ? {4'b0, curr_sdr_addr[7:0]} :
|
assign r2b_caddr = (cfg_colbits == 2'b00) ? {4'b0, curr_sdr_addr[7:0]} :
|
({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_32M}) ? {3'b0, curr_sdr_addr[8:0]} :
|
(cfg_colbits == 2'b01) ? {3'b0, curr_sdr_addr[8:0]} :
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_8M}) ? {3'b0, curr_sdr_addr[7:0]} :
|
(cfg_colbits == 2'b10) ? {2'b0, curr_sdr_addr[9:0]} : {1'b0, curr_sdr_addr[10:0]};
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_16M}) ? {3'b0, curr_sdr_addr[8:0]} :
|
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_32M}) ? {2'b0, curr_sdr_addr[8:0]} : {4'b0, curr_sdr_addr[7:0]};
|
assign r2b_raddr = (cfg_colbits == 2'b00) ? curr_sdr_addr[21:10] :
|
|
(cfg_colbits == 2'b01) ? curr_sdr_addr[22:11] :
|
assign r2b_raddr = ({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_8M}) ? {1'b0, curr_sdr_addr[18:8]} :
|
(cfg_colbits == 2'b10) ? curr_sdr_addr[23:12] : curr_sdr_addr[24:13];
|
({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_16M}) ? curr_sdr_addr[19:8] :
|
|
({sdr_width,sdr_dev_config} == {1'b0,`SDR_CONFIG_IS_32M}) ? curr_sdr_addr[20:9] :
|
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_8M}) ? {1'b0,curr_sdr_addr[19:8]} :
|
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_16M}) ? curr_sdr_addr[20:9] :
|
|
({sdr_width,sdr_dev_config} == {1'b1,`SDR_CONFIG_IS_32M}) ? curr_sdr_addr[21:9] : {1'b0, curr_sdr_addr[20:10]};
|
|
|
|
|
|
endmodule // sdr_req_gen
|
endmodule // sdr_req_gen
|
|
|
No newline at end of file
|
No newline at end of file
|