
29
ECP5 and ECP5-5G Hi
g
h-Speed I/O Interface
Data Valid Module
The DQSBUF block generates a DATAVALID signal. This signal indicates the timing that the IDDR module drives
the valid read data transmitting to the FPGA fabric. DATAVALID is a level-sensitive active high signal and indicates
that the read data output from the IDDR module is valid while it is asserted high. The DATAVALID signal can stay
asserted during the IDDR module outputs back-to-back valid read data until all consecutive read operations are
completed.
READ Pulse Positionin
g
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 sug-
gested READ1/0 signal assertion timing and the required duration of assertion are listed in Table 4. When the inter-
nal READ pulse is properly positioned, BURSTDET will be 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 4.
Table 4. READ Training Signals and Initial Read Assertion Position
Once the memory 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 will remain Low. A minimum burst length of eight on the memory bus must be used in the training pro-
cess. 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 per-
formed 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 DAT-
AVALID 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
Gearin
g
Mode
READ Control
DQSBUF Block
Initial READ Asser-
tion 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