aboutsummaryrefslogtreecommitdiff
path: root/nmigen_boards/dev/sram.py
blob: 14e31ce50c1f3bb6d6d261b06df0f7ff5c7f8cb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from nmigen.build import *


__all__ = ["SRAMResource"]


def SRAMResource(*args, cs, oe=None, we, a, d, dm=None, attrs=None):
    io = []
    io.append(Subsignal("cs", PinsN(cs, dir="o", assert_width=1)))
    if oe is not None:
        # Asserted WE# deactivates the D output buffers, so WE# can be used to replace OE#.
        io.append(Subsignal("oe", PinsN(oe, dir="o", assert_width=1)))
    io.append(Subsignal("we", PinsN(we, dir="o", assert_width=1)))
    io.append(Subsignal("a", Pins(a, dir="o")))
    io.append(Subsignal("d", Pins(d, dir="io")))
    if dm is not None:
        io.append(Subsignal("dm", PinsN(dm, dir="o"))) # dm="LB# UB#"
    if attrs is not None:
        io.append(attrs)
    return Resource.family(*args, default_name="sram", ios=io)