def lower(dr):
return LatticeECP5SDROutputImpl(dr.i, dr.o, dr.clk)
+# ECP5 DDR Input -----------------------------------------------------------------------------------
+
+class LatticeECP5DDRInputImpl(Module):
+ def __init__(self, i, o1, o2, clk):
+ self.specials += Instance("IDDRX1F",
+ i_SCLK = clk,
+ i_D = i,
+ o_Q0 = o1,
+ o_Q1 = o2,
+ )
+
+class LatticeECP5DDRInput:
+ @staticmethod
+ def lower(dr):
+ return LatticeECP5DDRInputImpl(dr.i, dr.o1, dr.o2, dr.clk)
+
# ECP5 DDR Output ----------------------------------------------------------------------------------
class LatticeECP5DDROutputImpl(Module):
AsyncResetSynchronizer: LatticeECP5AsyncResetSynchronizer,
SDRInput: LatticeECP5SDRInput,
SDROutput: LatticeECP5SDROutput,
- DDROutput: LatticeECP5DDROutput
+ DDRInput: LatticeECP5DDRInput,
+ DDROutput: LatticeECP5DDROutput,
}
# ECP5 Trellis Tristate ----------------------------------------------------------------------------
Tristate: LatticeECP5TrellisTristate,
SDRInput: LatticeECP5SDRInput,
SDROutput: LatticeECP5SDROutput,
+ DDRInput: LatticeECP5DDRInput,
DDROutput: LatticeECP5DDROutput
}