51 lines
1.4 KiB
Python
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)
|