4 from nmigen
.build
import *
5 from nmigen
.vendor
.lattice_machxo_2_3l
import *
6 from .resources
import *
9 __all__
= ["MachXO3SKPlatform"]
12 class MachXO3SKPlatform(LatticeMachXO2Platform
):
13 device
= "LCMXO3LF-6900C"
18 Resource("clk12", 0, Pins("C8", dir="i"),
19 Clock(12e6
), Attrs(IO_TYPE
="LVCMOS33")
23 rx
="A11", tx
="C11", rts
="F10", cts
="D11", dtr
="B11", dsr
="A12", dcd
="B13", ri
="A14",
24 attrs
=Attrs(IO_TYPE
="LVCMOS33"), role
="dce"
25 ), # need to solder R14-R18, R20-R22
28 pins
="H11 J13 J11 L12 K11 L13 N15 P16",
29 invert
=True, attrs
=Attrs(IO_TYPE
="LVCMOS33")
32 *ButtonResources(pins
="B3", invert
=True, attrs
=Attrs(IO_TYPE
="LVCMOS33")),
34 *SwitchResources(pins
="N2 P1 M3 N1",
35 invert
=True, attrs
=Attrs(IO_TYPE
="LVCMOS33")
39 cs
="R5", clk
="P6", mosi
="T13", miso
="T6",
40 attrs
=Attrs(IO_TYPE
="LVCMOS33")
44 Connector("j", 3, # J3
45 "- - A13 C13 F8 B12 C12 E11 E10 D10 "
46 "- - F9 C10 E8 E9 E7 D8 D7 C7 "
47 "- - C5 D6 E6 C4 A10 F7 D9 B9 "
48 "- - B6 B7 B5 A5 B4 A4 - A3 "),
49 Connector("j", 4, # J4
50 "- - K12 K13 M14 N14 L14 N16 M15 M16 "
51 "- - L15 L16 K14 K16 K15 J14 H14 J15 "
52 "- - J16 H15 H16 G15 G16 F15 F16 E15 "
53 "- - E16 E14 D16 C15 D14 F14 G14 B16 "),
54 Connector("j", 6, # J6
55 "- - T12 T14 R11 R13 T11 M11 P11 N10 "
56 "- - T10 P10 R9 R10 T9 N9 P9 M8 "
57 "- - T8 L8 P8 M6 R7 R8 P7 T7 "
58 "- - L7 R6 N6 T5 R4 P4 T3 T4 "),
59 Connector("j", 8, # J8
60 "- - H6 N3 M2 M1 L2 L1 L3 L5 "
61 "- - K4 J1 K1 J2 J3 H3 H2 H1 "
62 "- - G2 G1 F2 F1 E2 E1 D2 D1 "
63 "- - C2 C1 G3 B1 D3 E3 F3 F5 "),
66 def toolchain_program(self
, products
, name
):
67 openFPGALoader
= os
.environ
.get("OPENFPGALOADER", "openFPGALoader")
68 with products
.extract("{}.bit".format(name
)) as bitstream_filename
:
69 subprocess
.check_call([openFPGALoader
, bitstream_filename
])
72 if __name__
== "__main__":
73 from .test
.blinky
import *
74 MachXO3SKPlatform().build(Blinky(), do_program
=True)