32
ECP5 and ECP5-5G Hi
g
h-Speed I/O Interface
Memory Interface Implementation
The following sections explain the DDR2, DDR3/DDR3L, LPDDR2, LPDDR3 memory interfaces implementation
using the X2 gearing mode. ECP5 and ECP5-5G devices support these memory interfaces generation through the
Clarity Designer tool. Clarity Designer will generate one module that include the Read and Write side implementa-
tion shown below.
All of the memory interfaces use DQS clock, one ECLK and one SCLK to implement the read and write side oper-
ations. ECLK must always be routed on the edge clock tree and SCLK on the primary clock tree.
Read Implementation
The read side implementation is shown in Figure 31.
Figure 31. DDR2, DDR3/DDR3L, LPDDR2 and LPDDR3 Read side Implementation
The read side is implemented using the following software elements.
• DDRX2DQA element to capture the data
• DDRDLLA is used to generate the delay code for DQSBUFM to get the 90 degree phase shift on the DQS input
(DQSR90)
• The incoming DQS clock (DQSI) is routed through the DQSBUFM module to the DQS clock tree
• The DQSBUFM receives the delay code from DDRDLLA and generates the delayed DQS signal to IDDRX2DQA
DQSR 90
D
Q0
Q1
RST
SCLK
RDPNTR [2:0]
WRPNTR [2:0]
IDDRX2DQA
DQSR90
D
RST
SCLK
RDPNTR[2:0]
WRPNTR[2:0]
CLK
RST
UDDCNTLN
FREEZE
DDRDEL
LOCK
DDRDLLA
DCNTL[7:0]
Sclk
From DELAG
output of dq _7
Dcntl [7:0]
dq_0
.
.
.
.
datain_0(0)
ECLK
ECLK
Q2
Q3
datain_0(8)
datain_0(16)
datain_0(24)
Q0
Q1
datain _0(7)
Q2
Q3
datain_0(15)
datain_0(23)
datain_0(31)
Refclk
ECLKI
STOP
ECLKO
EHXPLLL
CLKOP
CLKI
RST
LOCK
Lock
ECLKSYNCB
CLKDIVF
CLKI
RST
ALIGNWD
CDIVX
1'b0
DQSBUFM
DQSI
DQSR90
DDRDEL
READ [1:0]
WRPNTR[2:0]
RDPNTR[2:0]
SCLK
RST
READCLKSEL0
READCLKSEL1
READCLKSEL2
DQSW270
RDLOADN
RDMOVE
RDDIRECTION
WRLOADN
WRMOVE
WRDIRECTION
DATAVALID
BURSTDET
RDCFLAG
WRCFLAG
ECLK
DYNDELAY [ 7:0]
DQSW
QWL
QWL
dq_0_wl
dq_7_wl
PAUSE
Eclk
DELAYG
DEL_MODE=
DQS_ALIGNED_X2
DLL_LOCK
FREEZE
UDDCNTLN
DLL_RESET
DDR_RESET
STOP
START_CLK
RST
UPDATE
READY
MEM_SYNC
Sync _clk
sync_reset
Update
Ready
Pll_Reset
Pause_sync
PAUSE
pause_data
(To
output
side)
dqs_0
read_0[1:0]
readclksel0_0
readclksel1_0
readclksel2_0
dyndelay[7:0]
rdloadn_0
rdmove_0
rddirection_0
wrloadn_0
wrmove_0
wrdirection_0
rdcflag_0
wrcflag_0
datavalid_0
burstdet_0
IDDRX2DQA