re-bba-rb/re-bba/ReBba/amaranth_boards/nandland_go.py

51 lines
1.4 KiB
Python

import os
import subprocess
from amaranth.build import *
from amaranth.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", invert=True),
Display7SegResource(1,
a="100", b="99", c="97", d="95", e="94", f="8", g="96", invert=True),
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)