ECP5 and ECP5-5G High-Speed I/O Interface
Technical Note
© 2014-2020 Lattice Semiconductor Corp. All Lattice trademarks, registered trademarks, patents, and disclaimers are as listed at
All other brand or product names are trademarks or registered trademarks of their respective holders. The specifications and information herein are subject to change without notice.
36
FPGA-TN-02035-1.3
6.2.4.
READ Pulse Positioning Optimization
The memory controller is required to provide the READ1/0 signal to the DQSBUF block to position the internal READ
pulse and generate the DATAVALID output that indicates the proper timing window of the valid read data. The internal
READ pulse is also used to get a clean internal DQS signal between the preamble and postamble periods. The clean DQS
is 90° shifted internally to be used to capture the read data.
Due to the DQS round trip delay that includes PCB routing and I/O pad delays, proper positioning of the READ pulse is
crucial for successful read operations. The ECP5 and ECP5-5G device DQSBUF block provides the dynamic READ pulse
positioning function which allows the memory controller to locate the READ pulse to an appropriate timing window for
the read operations by monitoring the positioning result.
The READCLKSEL2/1/0 and BURSTDET signals are used to accomplish the READ pulse positioning function for a
corresponding DQSBUF block. The READ1/0, READCLKSEL2/1/0 signals are driven by the user logic and are part of the
DDR memory controller.
The READ1/0 signal needs to be asserted high a certain amount of time before the read preamble starts. The suggested
READ1/0 signal assertion timing and the required duration of assertion are listed in
. When the internal READ
pulse is properly positioned, BURSTDET is asserted high and guarantee that the generated DATAVALID signal properly
indicates the valid read data time window. The READ1/0 signal must stay asserted as long as the number of SCLK cycles
that is equal to one fourth of the total burst length as listed in the
Table 6.3. DDRDLL Connectivity
Gearing Mode
READ Control
DQSBUF Block
Initial READ Assertion Position
*
READ Width in SCLK
X2 Gearing
(All DDR Memory Interfaces)
READ1
READ0
READCLKSEL2
READCLKSEL1
READCLKSEL0
DQSBUFM
At least 5.5T before preamble
Total Burst Length/4
*
Note
: Subject to change after validation tests. The number shown does not include DQS round trip delay.
1T = 1 tCK memory clock cycle
Once the controller initially positions the internal READ pulse using the READ1/0 and READCLKSEL2/1/0 signals,
BURSTDET can be used to monitor the positioning result to optimize the READ pulse position. The BURSTDET signal
provides a feedback mechanism to inform the memory controller whether the READ pulse has reached to the optimal
position for the read operations or not with the current READ1/0 and READCLKSEL2/1/0 values. When it reaches to the
optimal position, BURSTDET is asserted High after a read operation. Otherwise, BURSTDET remains Low. A minimum
burst length of eight on the memory bus must be used in the training process. This can be done either with two
consecutive BL4 (BL=4) read accesses or one BL8 read access. Any even number of BL4, or any multiplication of
BL8(BL=8) can also be used. This read pulse training process must be performed during the initial training and can also
be periodically calibrated during the normal operations.
The BURSTDET signal is asserted after the last DQS transition is completed during a read operation and lasts until the
next read cycle is started. Once a read operation is started, the memory controller should wait until the DATAVALID
signal from DQSBUFM is asserted and then sample the BURSTDET signal at the next cycle to monitor the READ pulse
positioning result. If there is no assertion on BURSTDET, it means that the READ pulse has not been located to the
optimal position yet. Then, the memory controller needs to shift the READ1/0 signal and/or increase the
READCLKSEL2/1/0 value until it detects a BURSTDET assertion. It is recommended that at least 128 read operations be
performed repetitively at a READ pulse position during the initialization for getting jitter immunity. 16 read operations
can be performed in a periodic calibration if used during the normal operation. The memory controller can determine
the proper position alignment when there is no failure on BURSTDET assertions during these multiple trials.
To reposition the internal READ pulse:
1.
The memory controller sets READ1/0 to an initial position before starting the read pulse training. READ1/0 must be
asserted for the number of SCLK cycles that is equal to one-fourth of the current read burst length as listed in
. Each READ bit (READ1 or READ0) in the system clock domain is translated to an 1T time slot of the memory
clock domain as shown in