|
4 | 4 | __all__ = [ |
5 | 5 | "SPIFlashResources", "SDCardResources", |
6 | 6 | "SRAMResource", "SDRAMResource", "NORFlashResources", |
| 7 | + "DDR3Resource", |
7 | 8 | ] |
8 | 9 |
|
9 | 10 |
|
@@ -163,3 +164,27 @@ def NORFlashResources(*args, rst=None, byte_n=None, cs_n, oe_n, we_n, wp_n, by, |
163 | 164 | name_suffix="16bit")) |
164 | 165 |
|
165 | 166 | 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