331352c6e847a1c1b4832ad8f9201fc394de6ee0
[nmigen-boards.git] / nmigen_boards / ext / pmod.py
1 # Reference: https://www.digilentinc.com/Pmods/Digilent-Pmod_%20Interface_Specification.pdf
2
3 from nmigen.build import *
4
5
6 __all__ = [
7 "PmodGPIOType1Resource",
8 "PmodSPIType2Resource",
9 "PmodSPIType2AResource",
10 "PmodUARTType3Resource",
11 "PmodUARTType4Resource",
12 "PmodUARTType4AResource",
13 "PmodHBridgeType5Resource",
14 "PmodDualHBridgeType6Resource",
15 ]
16
17
18 def PmodGPIOType1Resource(name, number, *, pmod, extras=None):
19 return Resource(name, number,
20 Pins("1 2 3 4", dir="io", conn=("pmod", pmod)),
21 extras=extras
22 )
23
24
25 def PmodSPIType2Resource(name, number, *, pmod, extras=None):
26 return Resource(name, number,
27 Subsignal("cs_n", Pins("1", dir="o", conn=("pmod", pmod))),
28 Subsignal("clk", Pins("2", dir="o", conn=("pmod", pmod))),
29 Subsignal("mosi", Pins("3", dir="o", conn=("pmod", pmod))),
30 Subsignal("miso", Pins("4", dir="i", conn=("pmod", pmod))),
31 extras=extras
32 )
33
34
35 def PmodSPIType2AResource(name, number, *, pmod, extras=None):
36 return Resource(name, number,
37 Subsignal("cs_n", Pins("1", dir="o", conn=("pmod", pmod))),
38 Subsignal("clk", Pins("2", dir="o", conn=("pmod", pmod))),
39 Subsignal("mosi", Pins("3", dir="o", conn=("pmod", pmod))),
40 Subsignal("miso", Pins("4", dir="i", conn=("pmod", pmod))),
41 Subsignal("int", Pins("7", dir="i", conn=("pmod", pmod))),
42 Subsignal("reset", Pins("8", dir="o", conn=("pmod", pmod))),
43 extras=extras
44 )
45
46
47 def PmodUARTType3Resource(name, number, *, pmod, extras=None):
48 return Resource(name, number,
49 Subsignal("cts", Pins("1", dir="o", conn=("pmod", pmod))),
50 Subsignal("rts", Pins("2", dir="i", conn=("pmod", pmod))),
51 Subsignal("rx", Pins("3", dir="i", conn=("pmod", pmod))),
52 Subsignal("tx", Pins("4", dir="o", conn=("pmod", pmod))),
53 extras=extras
54 )
55
56
57 def PmodUARTType4Resource(name, number, *, pmod, extras=None):
58 return Resource(name, number,
59 Subsignal("cts", Pins("1", dir="i", conn=("pmod", pmod))),
60 Subsignal("tx", Pins("2", dir="o", conn=("pmod", pmod))),
61 Subsignal("rx", Pins("3", dir="i", conn=("pmod", pmod))),
62 Subsignal("rts", Pins("4", dir="o", conn=("pmod", pmod))),
63 extras=extras
64 )
65
66
67 def PmodUARTType4AResource(name, number, *, pmod, extras=None):
68 return Resource(name, number,
69 Subsignal("cts", Pins("1", dir="i", conn=("pmod", pmod))),
70 Subsignal("tx", Pins("2", dir="o", conn=("pmod", pmod))),
71 Subsignal("rx", Pins("3", dir="i", conn=("pmod", pmod))),
72 Subsignal("rts", Pins("4", dir="o", conn=("pmod", pmod))),
73 Subsignal("int", Pins("7", dir="i", conn=("pmod", pmod))),
74 Subsignal("reset", Pins("8", dir="o", conn=("pmod", pmod))),
75 extras=extras
76 )
77
78
79 def PmodHBridgeType5Resource(name, number, *, pmod, extras=None):
80 return Resource(name, number,
81 Subsignal("dir", Pins("1", dir="o", conn=("pmod", pmod))),
82 Subsignal("en", Pins("2", dir="o", conn=("pmod", pmod))),
83 Subsignal("sa", Pins("3", dir="i", conn=("pmod", pmod))),
84 Subsignal("sb", Pins("4", dir="i", conn=("pmod", pmod))),
85 extras=extras
86 )
87
88
89 def PmodDualHBridgeType6Resource(name, number, *, pmod, extras=None):
90 return Resource(name, number,
91 Subsignal("dir", Pins("1 3", dir="o", conn=("pmod", pmod))),
92 Subsignal("en", Pins("2 4", dir="o", conn=("pmod", pmod))),
93 extras=extras
94 )