4 from nmigen
.build
import *
5 from nmigen
.vendor
.lattice_ice40
import *
6 from .resources
import *
9 __all__
= ["ICEStickPlatform"]
12 class ICEStickPlatform(LatticeICE40Platform
):
17 Resource("clk12", 0, Pins("21", dir="i"),
18 Clock(12e6
), Attrs(GLOBAL
=True, IO_STANDARD
="SB_LVCMOS")),
20 *LEDResources(pins
="99 98 97 96 95", attrs
=Attrs(IO_STANDARD
="SB_LVCMOS")),
23 rx
="9", tx
="8", rts
="7", cts
="4", dtr
="3", dsr
="2", dcd
="1",
24 attrs
=Attrs(IO_STANDARD
="SB_LVTTL", PULLUP
=1),
29 rx
="106", tx
="105", sd
="107",
30 attrs
=Attrs(IO_STANDARD
="SB_LVCMOS")
34 cs
="71", clk
="70", mosi
="67", miso
="68",
35 attrs
=Attrs(IO_STANDARD
="SB_LVCMOS")
39 Connector("pmod", 0, "78 79 80 81 - - 87 88 90 91 - -"), # J2
41 Connector("j", 1, "- - 112 113 114 115 116 117 118 119"), # J1
42 Connector("j", 3, "- - 62 61 60 56 48 47 45 44"), # J3
45 def toolchain_program(self
, products
, name
):
46 iceprog
= os
.environ
.get("ICEPROG", "iceprog")
47 with products
.extract("{}.bin".format(name
)) as bitstream_filename
:
48 subprocess
.check_call([iceprog
, bitstream_filename
])
51 if __name__
== "__main__":
52 from .test
.blinky
import *
53 ICEStickPlatform().build(Blinky(), do_program
=True)