I saw in a code usage of the module IDDRX2D1, this module is inside the FPGA Lattice ECP3, I found from its Libraries Ref Guide this information:
someone can help me about what is it and for what is it used for if someone used it already? why we need it? is it just a DDR? what the theory behind this module?
thanks!
1 Answer 1
The Flip flops inside FPGA cannot work with both edges of the clock at the same time. That means when you have a DDR signal (Dual Data rate), which changes on both rising and falling edge of clock, you cannot connect them directly to the flip flops. For that, this module is used. This module is basically a serial to parallel converter with "D" connected to the signal which is in dual data rate and you will get the "D" value at rising edge at "QA0" and falling edge value at "QA1". Note that this works in x2 mode. That it, you will get two clock period worth of data at the two outputs (that's why SCLK is ECLK/2).
PS: The exact output will again depend on the configuration.
Internal Register block diagram:
Source : TN 1180
You can refer to Technical Note TN1180 for more details on internal diagram and other configurations.
Additional info: This module is used at the input. There are similar blocks used for generating DDR signals at the output. They are called ODDR. Xilinx FPGAs have similar blocks called IDDR, ISERDES, ODDR and OSERDES. (Refer UG471)