sort out sdr and sdmmc OE pad drive, no longer one signal
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 5 Apr 2021 11:05:49 +0000 (12:05 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 5 Apr 2021 11:05:49 +0000 (12:05 +0100)
libresoc/core.py
libresoc/ls180.py
ls180soc.py

index d7ed1e701a2b841fac65d7c4b24ce9cbc9fbd9f6..ebf214e2e89ec7251d48404e99b82dc744130125 100644 (file)
@@ -118,11 +118,11 @@ def make_jtag_ioconn(res, pin, cpupads, iopads):
             pfx = ''
         elif fn.startswith('sd') and pin.startswith('data'):
             idx = int(pin[-1])
-            oe_idx = 0
+            oe_idx = idx
             pfx = pin[:-1]+"_"
         elif fn == 'sdr':
             idx = int(pin.split('_')[-1])
-            oe_idx = 0
+            oe_idx = idx
             pfx = pin.split('_')[0]+"_"
         else:
             idx = 0
index c9d10282655e1931faa0aabb6c1b0ec6ef494e3a..ab8fb33e7926136a10d684fb729f91f114bf3936 100644 (file)
@@ -104,7 +104,7 @@ def io():
             Subsignal("cmd_oe",  Pins("J3"), Misc("PULLMODE=UP")),
             Subsignal("data_i", Pins("K2 K1 H2 H1"), Misc("PULLMODE=UP")),
             Subsignal("data_o", Pins("K2 K1 H2 H1"), Misc("PULLMODE=UP")),
-            Subsignal("data_oe", Pins("K2"), Misc("PULLMODE=UP")),
+            Subsignal("data_oe", Pins("K2 K1 H2 H1"), Misc("PULLMODE=UP")),
             Misc("SLEWRATE=FAST"),
             IOStandard("LVCMOS33"),
         ),
@@ -121,7 +121,10 @@ def io():
             Subsignal("dq_o",    Pins(
                 "J16 L18 M18 N18 P18 T18 T17 U20",
                 "E19 D20 D19 C20 E18 F18 J18 J17")),
-            Subsignal("dq_oe",    Pins("J17")),
+            # ASIC pads all need an OE driver
+            Subsignal("dq_oe",    Pins(
+                "J16 L18 M18 N18 P18 T18 T17 U20",
+                "E19 D20 D19 C20 E18 F18 J18 J17")),
             Subsignal("we_n",  Pins("T20")),
             Subsignal("ras_n", Pins("R20")),
             Subsignal("cas_n", Pins("T19")),
index 98210382813d3d5c86bab1eaf4f7b894ff50dd0b..8e54d5e7537b502b4c3fcab71d1c419f18f9c8c3 100755 (executable)
@@ -142,8 +142,8 @@ class SDRPad(Module):
         _o = getattr(pad, "%s_o" % name)
         _oe = getattr(pad, "%s_oe" % name)
         _i = getattr(pad, "%s_i" % name)
-        self.specials += SDROutput(clk=clk, i=oe, o=_oe)
         for j in range(len(_o)):
+            self.specials += SDROutput(clk=clk, i=oe, o=_oe[j])
             self.specials += SDROutput(clk=clk, i=o[j], o=_o[j])
             self.specials += SDRInput(clk=clk, i=_i[j], o=i[j])