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.
64
FPGA-TN-02035-1.3
8.
DDR Software Primitives and Attributes
This section describes the software primitives that can be used to implement all the DDR interfaces. These primitives
are divided into ones that are used to implement the DDR data and ones for DDR Strobe signal or the Source
Synchronous clock. The DQSBUF primitives are used to generate the signals required to correctly capture the data from
the DDR memory.
Table 8.1. Software Primitives
Type
Primitive
Description
Input or Output Delay
DELAYF
Dynamic Delay module
DELAYG
Static Delay module, used to remove clock injection time
DDRDLL
DDRDLLA
DLL used to generate 90° phase shift
DLL Delay
DLLDELD
Slave Delay module used for Generic DDR
Generic DDR Data Input
IDDRX1F
Generic DDR 1x gearing registers
IDDRX2F
Generic DDR 2x gearing registers
IDDR71B
Generic DDR 7:1 gearing registers, shared by two I/O LOGIC blocks
Generic DDR Data Output
ODDRX1F
Generic DDR 1x gearing registers
ODDRX2F
Generic DDR 2x gearing registers
ODDR71B
Generic DDR 7:1 gearing registers, shared by two I/O LOGIC blocks
DDR Memory DQSBUF Control
DQSBUFM
Used to phase shift DQS Strobe signal and generate control signals for
DDR memory
DDR Memory DQ Input
IDDRX2DQA
Used to receive DQ input
DDR Memory DQ Output
ODDRX2DQA
Used to transmit DQ output
DDR Memory DQS Output
ODDRX2DQSB
Used to transmit DQS output
DDR Memory Data Tristate
TSHX2DQA
Used for DQ Tristate output
DDR Memory DQS Tristate
TSHX2DQSA
Used for DQS Tristate output
DDR Memory Address/Command
OSHX2A
Used to generate the Address/Command output
8.1.
Input/Output DELAY
The DELAY block can be used to delay the input data from the input pin to the IDDR or IREG or FPGA OR to delay the
output data from the ODDR, OREG or FPGA fabric to the output pin. It is useful to adjust for any skews amongst the
input or output data bus. It can also be used to generate skew between the bits of output bus to reduce SSO noise.
The DELAY block can be used with IDDR or ODDR modules, SDR module, as well as on the direct input to the FPGA. The
DELAY is shared by the input and output paths and hence can only be used either to delay the input data or the output
data on a given pin.
The data input to this block can be delayed using:
Pre-determined delay value (for Zero Hold time, delay based on Interface Type)
Fixed Delay values that you enter
The data input to this block can also be dynamically updated using counter up and down controls. You can optionally
bypass the DELAY block completely as well.