3107350129142a90de97ed3c2163c16c7772c62f
4 from nmigen
.build
import *
5 from nmigen
.vendor
.lattice_ice40
import *
9 __all__
= ["BlackIceIIPlatform"]
12 class BlackIceIIPlatform(LatticeICE40Platform
):
16 Resource("clk100", 0, Pins("129", dir="i"),
17 Clock(100e6
), Attrs(GLOBAL
="1", IO_STANDARD
="SB_LVCMOS33")
20 Resource("user_led", 0, Pins("71", dir="o"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
21 Resource("user_led", 1, Pins("67", dir="o"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
22 Resource("user_led", 2, Pins("68", dir="o"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
23 Resource("user_led", 3, Pins("70", dir="o"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
25 Resource("user_ledb", 0, Pins("71", dir="o"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
26 Resource("user_ledg", 0, Pins("67", dir="o"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
27 Resource("user_ledo", 0, Pins("68", dir="o"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
28 Resource("user_ledr", 0, Pins("70", dir="o"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
30 Resource("user_btn", 0, PinsN("63", dir="i"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
31 Resource("user_btn", 1, PinsN("64", dir="i"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
33 Resource("user_sw", 0, PinsN("37", dir="i"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
34 Resource("user_sw", 1, PinsN("38", dir="i"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
35 Resource("user_sw", 2, PinsN("39", dir="i"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
36 Resource("user_sw", 3, PinsN("41", dir="i"), Attrs(IO_STANDARD
="SB_LVCMOS33")),
39 rx
="88", tx
="85", rts
="91", cts
="94",
40 attrs
=Attrs(IO_STANDARD
="SB_LVCMOS33", PULLUP
="1")
44 Subsignal("address", Pins(
45 "137 138 139 141 142 42 43 44 73 74 75 76 115 116 117 118 119 78",
48 Subsignal("data", Pins(
49 "136 135 134 130 125 124 122 121 62 61 60 56 55 48 47 45",
52 Subsignal("oe", PinsN("29", dir="o")),
53 Subsignal("we", PinsN("120", dir="o")),
54 Subsignal("cs", PinsN("136", dir="o")),
55 Subsignal("ub", PinsN("28", dir="o")),
56 Subsignal("lb", PinsN("24", dir="o")),
57 Attrs(IO_STANDARD
="SB_LVCMOS33"),
62 Connector("pmod", 0, " 94 91 88 85 - - 95 93 90 87 - -"), # PMOD1/2
63 Connector("pmod", 1, "105 102 99 97 - - 104 101 98 96 - -"), # PMOD3/4
64 Connector("pmod", 2, "143 114 112 107 - - 144 113 110 106 - -"), # PMOD5/6
65 Connector("pmod", 3, " 10 9 2 1 - - 8 7 4 3 - -"), # PMOD7/8
66 Connector("pmod", 4, " 20 19 16 15 - - 18 17 12 11 - -"), # PMOD9/10
67 Connector("pmod", 5, " 34 33 22 21 - - 32 31 26 25 - -"), # PMOD11/12
68 Connector("pmod", 6, " 37 38 39 41 - -"), # PMOD13
69 Connector("pmod", 7, " 71 67 68 70 - -"), # PMOD14
72 def toolchain_program(self
, products
, name
):
73 with products
.extract("{}.bin".format(name
)) as bitstream_filename
:
74 subprocess
.run(["cp", bitstream_filename
, "/dev/ttyACM0"], check
=True)
77 if __name__
== "__main__":
78 from ._blinky
import Blinky
79 p
= BlackIceIIPlatform()
80 p
.build(Blinky("clk100"), do_program
=True)