Skip to content

Commit 9d24c51

Browse files
StephanvanSchaikwhitequark
authored andcommitted
Factor out DDR3.
1 parent 4aa9eee commit 9d24c51

File tree

2 files changed

+34
-18
lines changed

2 files changed

+34
-18
lines changed

nmigen_boards/alchitry_au.py

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,15 @@ class AlchitryAuPlatform(Xilinx7SeriesPlatform):
4141
),
4242

4343
# TODO: This is untested
44-
Resource("ddr3", 0,
45-
Subsignal("rst", PinsN("D13", dir="o")),
46-
Subsignal("clk", DiffPairs("G14", "F14", dir="o"), Attrs(IOSTANDARD="LVDS")),
47-
Subsignal("clk_en", Pins("D15", dir="o")),
48-
Subsignal("cs", PinsN("D16", dir="o")),
49-
Subsignal("we", PinsN("E11", dir="o")),
50-
Subsignal("ras", PinsN("D11", dir="o")),
51-
Subsignal("cas", PinsN("D14", dir="o")),
52-
Subsignal("a", Pins("F12 G16 G15 E16 H11 G12 H16 H12 H16 H13 E12 H14 F13 J15", dir="o")),
53-
Subsignal("ba", Pins("E13 F15 E15", dir="o")),
54-
Subsignal("dqs", DiffPairs("B15 A15", "B9 A10", dir="io"), Attrs(IOSTANDARD="LVDS")),
55-
Subsignal("dq", Pins("A13 B16 B14 C11 C13 C16 C12 C14 D8 B11 C8 B10 A12 A8 B12 A9",
56-
dir="io")),
57-
Subsignal("dm", Pins("A14 C9", dir="o")),
58-
Subsignal("odt", Pins("G11", dir="o")),
59-
Attrs(IOSTANDARD="LVCMOS15")
60-
)
61-
44+
DDR3Resource(0,
45+
rst_n="D13", clk_p="G14", clk_n="F14", clk_en="D15", cs_n="D16", we_n="E11", ras_n="D14", cas_n="D14",
46+
a="F12 G16 G15 E16 H11 G12 H16 H12 H16 H13 E12 H14 F13 J15",
47+
ba="E13 F15 E15",
48+
dqs_p="B15 A15", dqs_n="B9 A10",
49+
dq="A13 B16 B14 C11 C13 C16 C12 C14 D8 B11 C8 B10 A12 A8 B12 A9",
50+
dm="A14 C9", odt="G11",
51+
diff_attrs=Attrs(IOSTANDARD="LVDS"),
52+
attrs=Attrs(IOSTANDARD="LVCMOS15")),
6253
]
6354

6455
connectors = [

nmigen_boards/resources/memory.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
__all__ = [
55
"SPIFlashResources", "SDCardResources",
66
"SRAMResource", "SDRAMResource", "NORFlashResources",
7+
"DDR3Resource",
78
]
89

910

@@ -163,3 +164,27 @@ def NORFlashResources(*args, rst=None, byte_n=None, cs_n, oe_n, we_n, wp_n, by,
163164
name_suffix="16bit"))
164165

165166
return resources
167+
168+
169+
def DDR3Resource(*args, rst_n=None, clk_p, clk_n, clk_en, cs_n, we_n, ras_n, cas_n, a, ba, dqs_p, dqs_n, dq, dm, odt,
170+
conn=None, diff_attrs=None, attrs=None):
171+
ios = []
172+
173+
ios.append(Subsignal("rst", PinsN(rst_n, dir="o", conn=conn, assert_width=1)))
174+
ios.append(Subsignal("clk", DiffPairs(clk_p, clk_n, dir="o", conn=conn, assert_width=1), diff_attrs))
175+
ios.append(Subsignal("clk_en", Pins(clk_en, dir="o", conn=conn, assert_width=1)))
176+
ios.append(Subsignal("cs", PinsN(cs_n, dir="o", conn=conn, assert_width=1)))
177+
ios.append(Subsignal("we", PinsN(we_n, dir="o", conn=conn, assert_width=1)))
178+
ios.append(Subsignal("ras", PinsN(ras_n, dir="o", conn=conn, assert_width=1)))
179+
ios.append(Subsignal("cas", PinsN(cas_n, dir="o", conn=conn, assert_width=1)))
180+
ios.append(Subsignal("a", Pins(a, dir="o", conn=conn)))
181+
ios.append(Subsignal("ba", Pins(ba, dir="o", conn=conn)))
182+
ios.append(Subsignal("dqs", DiffPairs(dqs_p, dqs_n, dir="io", conn=conn), diff_attrs))
183+
ios.append(Subsignal("dq", Pins(dq, dir="io", conn=conn)))
184+
ios.append(Subsignal("dm", Pins(dm, dir="o", conn=conn)))
185+
ios.append(Subsignal("odt", Pins(odt, dir="o", conn=conn, assert_width=1)))
186+
187+
if attrs is not None:
188+
ios.append(attrs)
189+
190+
return Resource.family(*args, default_name="ddr3", ios=ios)

0 commit comments

Comments
 (0)