diff options
| author | Kate Temkin <k@ktemkin.com> | 2020-07-19 07:29:52 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-19 13:29:52 +0000 |
| commit | dd0bb11f096bd823fb7f1e73384d7541213434ce (patch) | |
| tree | 3726c0c5a6a6f852bfcb4e1fc84432f84c541e6a /nmigen_boards/resources/interface.py | |
| parent | d9264bf03b1a7ddb71017a2885383c4cec777f53 (diff) | |
Factor out direct USB and ULPI resources.
Diffstat (limited to 'nmigen_boards/resources/interface.py')
| -rw-r--r-- | nmigen_boards/resources/interface.py | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/nmigen_boards/resources/interface.py b/nmigen_boards/resources/interface.py index 9073cc7..7b905ce 100644 --- a/nmigen_boards/resources/interface.py +++ b/nmigen_boards/resources/interface.py @@ -1,7 +1,10 @@ from nmigen.build import * -__all__ = ["UARTResource", "IrDAResource", "SPIResource"] +__all__ = [ + "UARTResource", "IrDAResource", "SPIResource", + "DirectUSBResource", "ULPIResource" +] def UARTResource(*args, rx, tx, rts=None, cts=None, dtr=None, dsr=None, dcd=None, ri=None, @@ -81,3 +84,35 @@ def SPIResource(*args, cs, clk, copi, cipo, int=None, reset=None, if attrs is not None: io.append(attrs) return Resource.family(*args, default_name="spi", ios=io) + + +def DirectUSBResource(*args, d_p, d_n, pullup=None, vbus_valid=None, + conn=None, attrs=None): + + io = [] + io.append(Subsignal("d_p", Pins(d_p, dir="io", conn=conn, assert_width=1))) + io.append(Subsignal("d_n", Pins(d_n, dir="io", conn=conn, assert_width=1))) + if pullup: + io.append(Subsignal("pullup", Pins(pullup, dir="o", conn=conn, assert_width=1))) + if vbus_valid: + io.append(Subsignal("vbus_valid", Pins(vbus_valid, dir="i", conn=conn, assert_width=1))) + if attrs is not None: + io.append(attrs) + return Resource.family(*args, default_name="usb", ios=io) + + +def ULPIResource(*args, data, clk, dir, nxt, stp, rst=None, + clk_dir='i', attrs=None, conn=None): + assert clk_dir in ('i', 'o',) + + io = [] + io.append(Subsignal("data", Pins(data, dir="io", conn=conn, assert_width=8))) + io.append(Subsignal("clk", Pins(clk, dir=clk_dir, conn=conn, assert_width=1))) + io.append(Subsignal("dir", Pins(dir, dir="i", conn=conn, assert_width=1))) + io.append(Subsignal("nxt", Pins(nxt, dir="i", conn=conn, assert_width=1))) + io.append(Subsignal("stp", Pins(stp, dir="o", conn=conn, assert_width=1))) + if rst is not None: + io.append(Subsignal("rst", Pins(stp, dir="o", conn=conn, assert_width=1))) + if attrs is not None: + io.append(attrs) + return Resource.family(*args, default_name="usb", ios=io) |
