this had to be done because otherwise the IOPads are unstable.
next experiment is to hook ResetSignal(dramsync) with the firmware-driven
reset, which should allow the IOpads - and DQS - to fully stabilise
(oh, and also allow retries on setting them up)
# Clock --------------------------------------------------------------------------------
m.d.comb += [
self.pads.clk.o_clk.eq(ClockSignal("dramsync")),
# Clock --------------------------------------------------------------------------------
m.d.comb += [
self.pads.clk.o_clk.eq(ClockSignal("dramsync")),
+ self.pads.clk.o_prst.eq(ResetSignal("dramsync")),
self.pads.clk.o_fclk.eq(ClockSignal("dramsync2x")),
]
for i in range(len(self.pads.clk.o0)):
self.pads.clk.o_fclk.eq(ClockSignal("dramsync2x")),
]
for i in range(len(self.pads.clk.o0)):
# Addresses and Commands ---------------------------------------------------------------
m.d.comb += [
self.pads.a.o_clk.eq(ClockSignal("dramsync")),
# Addresses and Commands ---------------------------------------------------------------
m.d.comb += [
self.pads.a.o_clk.eq(ClockSignal("dramsync")),
+ self.pads.a.o_prst.eq(ResetSignal("dramsync")),
self.pads.a.o_fclk.eq(ClockSignal("dramsync2x")),
self.pads.ba.o_clk.eq(ClockSignal("dramsync")),
self.pads.ba.o_fclk.eq(ClockSignal("dramsync2x")),
self.pads.a.o_fclk.eq(ClockSignal("dramsync2x")),
self.pads.ba.o_clk.eq(ClockSignal("dramsync")),
self.pads.ba.o_fclk.eq(ClockSignal("dramsync2x")),
else:
m.d.comb += [
pad.o_clk.eq(ClockSignal("dramsync")),
else:
m.d.comb += [
pad.o_clk.eq(ClockSignal("dramsync")),
+ pad.o_prst.eq(ResetSignal("dramsync")),
pad.o_fclk.eq(ClockSignal("dramsync2x")),
]
if name == "reset":
pad.o_fclk.eq(ClockSignal("dramsync2x")),
]
if name == "reset":