aboutsummaryrefslogtreecommitdiff
path: root/nmigen_boards/nandland_go.py
blob: 4cece473962cc4da25d1bd778992c4202ae6caab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import os
import subprocess

from nmigen.build import *
from nmigen.vendor.lattice_ice40 import *
from .resources import *


__all__ = ["NandlandGoPlatform"]


class NandlandGoPlatform(LatticeICE40Platform):
    device      = "iCE40HX1K"
    package     = "VQ100"
    default_clk = "clk25"
    resources = [
        Resource("clk25", 0, Pins("15", dir="i"),
            Clock(25e6)),

        *LEDResources(pins="56 57 59 60"),
        *ButtonResources(pins="53 51 54 52"),

        Display7SegResource(0,
            a="3", b="4", c="93", d="91", e="90", f="1", g="2"),
        Display7SegResource(1,
            a="100", b="99", c="97", d="95", e="94", f="8", g="96"),

        UARTResource(0, rx="73", tx="74"),

        *SPIFlashResources(0, cs_n="49", clk="48", copi="45", cipo="46"),

        VGAResource(0,
            r="36 37 40",
            g="29 30 33",
            b="28 41 42",
            hs="26", vs="27"),
    ]
    connectors = [
        Connector("pmod", 0, "65 64 63 62 - - 78 79 80 81 - -"),
    ]

    def toolchain_program(self, products, name):
        iceprog = os.environ.get("ICEPROG", "iceprog")
        with products.extract("{}.bin".format(name)) as bitstream_filename:
            subprocess.check_call([iceprog, bitstream_filename])


if __name__ == "__main__":
    from .test.blinky import *
    NandlandGoPlatform().build(Blinky(), do_program=True)