PoC.mem.sdram.ctrl_s3esk

Controller for Micron DDR-SDRAM on Spartan-3E Starter Kit Board.

SDRAM Device: MT46V32M16-6T

Configuration

Parameter

Description

CLK_PERIOD

Clock period in nano seconds. All SDRAM timings are calculated for the device stated above.

CL

CAS latency, choose according to clock frequency.

BL

Burst length. Choose BL=2 for single cycle memory transactions as required for the PoC.Mem interface.

Tested with: CLK_PERIOD = 10.0, CL=2, BL=2.

Operation

Command, address and write data are sampled with the rising edge of clk.

Read data is aligned with clk_fb90_n. Either process data in this clock domain, or connect a FIFO to transfer data into another clock domain of your choice. This FIFO should capable of storing at least one burst (size BL/2) + start of next burst (size 1).

Synchronous resets are used.

Entity Declaration:

 1  generic (
 2    CLK_PERIOD : real;
 3    BL          : positive);
 4
 5  port (
 6    clk        : in    std_logic;
 7    clk_n      : in    std_logic;
 8    clk90      : in    std_logic;
 9    clk90_n    : in    std_logic;
10    rst        : in    std_logic;
11    rst90      : in    std_logic;
12    rst180     : in    std_logic;
13    rst270     : in    std_logic;
14    clk_fb90   : in    std_logic;
15    clk_fb90_n : in    std_logic;
16    rst_fb90   : in    std_logic;
17    rst_fb270  : in    std_logic;
18
19    user_cmd_valid   : in  std_logic;
20    user_wdata_valid : in  std_logic;
21    user_write       : in  std_logic;
22    user_addr        : in  std_logic_vector(24 downto 0);
23    user_wdata       : in  std_logic_vector(31 downto 0);
24    user_got_cmd     : out std_logic;
25    user_got_wdata   : out std_logic;
26    user_rdata       : out std_logic_vector(31 downto 0);
27    user_rstb        : out std_logic;
28
29    sd_ck_p    : out   std_logic;
30    sd_ck_n    : out   std_logic;
31    sd_cke     : out   std_logic;
32    sd_cs      : out   std_logic;
33    sd_ras     : out   std_logic;
34    sd_cas     : out   std_logic;
35    sd_we      : out   std_logic;
36    sd_ba      : out   std_logic_vector(1 downto 0);
37    sd_a       : out   std_logic_vector(12 downto 0);
38    sd_ldqs    : out   std_logic;
39    sd_udqs    : out   std_logic;
40    sd_dq      : inout std_logic_vector(15 downto 0));
41
42end sdram_ctrl_s3esk;