Line 87... |
Line 87... |
// SDRAM I/F
|
// SDRAM I/F
|
//--------------------------------------------
|
//--------------------------------------------
|
|
|
`ifdef SDR_32BIT
|
`ifdef SDR_32BIT
|
wire [31:0] Dq ; // SDRAM Read/Write Data Bus
|
wire [31:0] Dq ; // SDRAM Read/Write Data Bus
|
wire [31:0] sdr_dout ; // SDRAM Data Out
|
|
wire [31:0] pad_sdr_din ; // SDRAM Data Input
|
|
wire [3:0] sdr_den_n ; // SDRAM Data Enable
|
|
wire [3:0] sdr_dqm ; // SDRAM DATA Mask
|
wire [3:0] sdr_dqm ; // SDRAM DATA Mask
|
`elsif SDR_16BIT
|
`elsif SDR_16BIT
|
wire [15:0] Dq ; // SDRAM Read/Write Data Bus
|
wire [15:0] Dq ; // SDRAM Read/Write Data Bus
|
wire [15:0] sdr_dout ; // SDRAM Data Out
|
|
wire [15:0] pad_sdr_din ; // SDRAM Data Input
|
|
wire [1:0] sdr_den_n ; // SDRAM Data Enable
|
|
wire [1:0] sdr_dqm ; // SDRAM DATA Mask
|
wire [1:0] sdr_dqm ; // SDRAM DATA Mask
|
`else
|
`else
|
wire [7:0] Dq ; // SDRAM Read/Write Data Bus
|
wire [7:0] Dq ; // SDRAM Read/Write Data Bus
|
wire [7:0] sdr_dout ; // SDRAM Data Out
|
|
wire [7:0] pad_sdr_din ; // SDRAM Data Input
|
|
wire [0:0] sdr_den_n ; // SDRAM Data Enable
|
|
wire [0:0] sdr_dqm ; // SDRAM DATA Mask
|
wire [0:0] sdr_dqm ; // SDRAM DATA Mask
|
`endif
|
`endif
|
|
|
wire [1:0] sdr_ba ; // SDRAM Bank Select
|
wire [1:0] sdr_ba ; // SDRAM Bank Select
|
wire [11:0] sdr_addr ; // SDRAM ADRESS
|
wire [11:0] sdr_addr ; // SDRAM ADRESS
|
wire sdr_init_done ; // SDRAM Init Done
|
wire sdr_init_done ; // SDRAM Init Done
|
|
|
// to fix the sdram interface timing issue
|
// to fix the sdram interface timing issue
|
wire #(2.0) sdram_clk_d = sdram_clk;
|
wire #(2.0) sdram_clk_d = sdram_clk;
|
wire #(1.0) sdram_pad_clk = sdram_clk_d;
|
|
|
|
`ifdef SDR_32BIT
|
`ifdef SDR_32BIT
|
|
|
sdrc_top #(.SDR_DW(32),.SDR_BW(4)) u_dut(
|
sdrc_top #(.SDR_DW(32),.SDR_BW(4)) u_dut(
|
`elsif SDR_16BIT
|
`elsif SDR_16BIT
|
Line 147... |
Line 137... |
.wb_cyc_i (wb_cyc_i ),
|
.wb_cyc_i (wb_cyc_i ),
|
.wb_cti_i (wb_cti_i ),
|
.wb_cti_i (wb_cti_i ),
|
|
|
/* Interface to SDRAMs */
|
/* Interface to SDRAMs */
|
.sdram_clk (sdram_clk ),
|
.sdram_clk (sdram_clk ),
|
.sdram_pad_clk (sdram_pad_clk ),
|
|
.sdram_resetn (RESETN ),
|
.sdram_resetn (RESETN ),
|
.sdr_cs_n (sdr_cs_n ),
|
.sdr_cs_n (sdr_cs_n ),
|
.sdr_cke (sdr_cke ),
|
.sdr_cke (sdr_cke ),
|
.sdr_ras_n (sdr_ras_n ),
|
.sdr_ras_n (sdr_ras_n ),
|
.sdr_cas_n (sdr_cas_n ),
|
.sdr_cas_n (sdr_cas_n ),
|
.sdr_we_n (sdr_we_n ),
|
.sdr_we_n (sdr_we_n ),
|
.sdr_dqm (sdr_dqm ),
|
.sdr_dqm (sdr_dqm ),
|
.sdr_ba (sdr_ba ),
|
.sdr_ba (sdr_ba ),
|
.sdr_addr (sdr_addr ),
|
.sdr_addr (sdr_addr ),
|
.pad_sdr_din (Dq ),
|
.sdr_dq (Dq ),
|
.sdr_dout (sdr_dout ),
|
|
.sdr_den_n (sdr_den_n ),
|
|
|
|
/* Parameters */
|
/* Parameters */
|
.sdr_init_done (sdr_init_done ),
|
.sdr_init_done (sdr_init_done ),
|
.cfg_req_depth (2'h2 ), //how many req. buffer should hold
|
.cfg_req_depth (2'h2 ), //how many req. buffer should hold
|
.cfg_sdr_en (1'b1 ),
|
.cfg_sdr_en (1'b1 ),
|
Line 179... |
Line 166... |
|
|
);
|
);
|
|
|
|
|
`ifdef SDR_32BIT
|
`ifdef SDR_32BIT
|
assign Dq[7:0] = (sdr_den_n[0] == 1'b0) ? sdr_dout[7:0] : 8'hZZ;
|
|
assign Dq[15:8] = (sdr_den_n[1] == 1'b0) ? sdr_dout[15:8] : 8'hZZ;
|
|
assign Dq[23:16] = (sdr_den_n[2] == 1'b0) ? sdr_dout[23:16] : 8'hZZ;
|
|
assign Dq[31:24] = (sdr_den_n[3] == 1'b0) ? sdr_dout[31:24] : 8'hZZ;
|
|
mt48lc2m32b2 #(.data_bits(32)) u_sdram32 (
|
mt48lc2m32b2 #(.data_bits(32)) u_sdram32 (
|
.Dq (Dq ) ,
|
.Dq (Dq ) ,
|
.Addr (sdr_addr ),
|
.Addr (sdr_addr ),
|
.Ba (sdr_ba ),
|
.Ba (sdr_ba ),
|
.Clk (sdram_clk_d ),
|
.Clk (sdram_clk_d ),
|
Line 198... |
Line 181... |
.Dqm (sdr_dqm )
|
.Dqm (sdr_dqm )
|
);
|
);
|
|
|
`elsif SDR_16BIT
|
`elsif SDR_16BIT
|
|
|
assign Dq[7:0] = (sdr_den_n[0] == 1'b0) ? sdr_dout[7:0] : 8'hZZ;
|
|
assign Dq[15:8] = (sdr_den_n[1] == 1'b0) ? sdr_dout[15:8] : 8'hZZ;
|
|
|
|
IS42VM16400K u_sdram16 (
|
IS42VM16400K u_sdram16 (
|
.dq (Dq ),
|
.dq (Dq ),
|
.addr (sdr_addr ),
|
.addr (sdr_addr ),
|
.ba (sdr_ba ),
|
.ba (sdr_ba ),
|
.clk (sdram_clk_d ),
|
.clk (sdram_clk_d ),
|
Line 215... |
Line 195... |
.web (sdr_we_n ),
|
.web (sdr_we_n ),
|
.dqm (sdr_dqm )
|
.dqm (sdr_dqm )
|
);
|
);
|
`else
|
`else
|
|
|
assign Dq[7:0] = (sdr_den_n[0] == 1'b0) ? sdr_dout[7:0] : 8'hZZ;
|
|
|
|
mt48lc8m8a2 #(.data_bits(8)) u_sdram8 (
|
mt48lc8m8a2 #(.data_bits(8)) u_sdram8 (
|
.Dq (Dq ) ,
|
.Dq (Dq ) ,
|
.Addr (sdr_addr ),
|
.Addr (sdr_addr ),
|
.Ba (sdr_ba ),
|
.Ba (sdr_ba ),
|