phy/ecp5ddrphy: add clk_polarity parameter to allow inverting clk polarity (for boards with clk_p/n swapped).
This commit is contained in:
parent
562cd3207c
commit
5a114be7e5
|
@ -116,7 +116,8 @@ class ECP5DDRPHY(Module, AutoCSR):
|
||||||
sys_clk_freq = 100e6,
|
sys_clk_freq = 100e6,
|
||||||
cl = None,
|
cl = None,
|
||||||
cwl = None,
|
cwl = None,
|
||||||
cmd_delay = 0):
|
cmd_delay = 0,
|
||||||
|
clk_polarity = 0):
|
||||||
assert isinstance(cmd_delay, int) and cmd_delay < 128
|
assert isinstance(cmd_delay, int) and cmd_delay < 128
|
||||||
pads = PHYPadsCombiner(pads)
|
pads = PHYPadsCombiner(pads)
|
||||||
memtype = "DDR3"
|
memtype = "DDR3"
|
||||||
|
@ -181,13 +182,14 @@ class ECP5DDRPHY(Module, AutoCSR):
|
||||||
pads.sel_group(pads_group)
|
pads.sel_group(pads_group)
|
||||||
|
|
||||||
# Clock --------------------------------------------------------------------------------
|
# Clock --------------------------------------------------------------------------------
|
||||||
|
clk_pattern = {0: 0b1010, 1: 0b0101}[clk_polarity]
|
||||||
for i in range(len(pads.clk_p)):
|
for i in range(len(pads.clk_p)):
|
||||||
pad_oddrx2f = Signal()
|
pad_oddrx2f = Signal()
|
||||||
self.specials += Instance("ODDRX2F",
|
self.specials += Instance("ODDRX2F",
|
||||||
i_RST = ResetSignal("sys"),
|
i_RST = ResetSignal("sys"),
|
||||||
i_SCLK = ClockSignal("sys"),
|
i_SCLK = ClockSignal("sys"),
|
||||||
i_ECLK = ClockSignal("sys2x"),
|
i_ECLK = ClockSignal("sys2x"),
|
||||||
**{f"i_D{n}": (0b1010 >> n) & 0b1 for n in range(4)},
|
**{f"i_D{n}": (clk_pattern >> n) & 0b1 for n in range(4)},
|
||||||
o_Q = pad_oddrx2f
|
o_Q = pad_oddrx2f
|
||||||
)
|
)
|
||||||
self.specials += Instance("DELAYG",
|
self.specials += Instance("DELAYG",
|
||||||
|
|
Loading…
Reference in New Issue