-
Notifications
You must be signed in to change notification settings - Fork 109
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
609a65c
commit 3891a06
Showing
1 changed file
with
127 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
import os | ||
import subprocess | ||
|
||
from amaranth.build import * | ||
from amaranth.vendor.lattice_machxo_2_3l import * | ||
from .resources import * | ||
|
||
|
||
__all__ = ["MachXO2_7000HE_BreakoutPlatform", "MachXO2_1200ZE_BreakoutPlatform"] | ||
|
||
|
||
# https://www.latticesemi.com/Products/DevelopmentBoardsAndKits/MachXO2BreakoutBoard | ||
class MachXO2_7000HE_BreakoutPlatform(LatticeMachXO2Platform): | ||
device = "LCMXO2-7000HE" | ||
package = "TG144" | ||
default_clk = "OSCH" | ||
osch_frequency = 2.08 # documented default; see amaranth.vendor.lattice_machxo_2_3l for more options | ||
speed = "4" | ||
resources = [ | ||
*LEDResources(pins="97 98 99 100 104 105 106 107", invert=True), | ||
|
||
# Connectable to the FTDI UART but disconnected by default. Populate R14-R21 to connect. | ||
UARTResource(0, rx="73", tx="74", rts="75", cts="76", dtr="81", dsr="77", dcd="78", role="dte"), | ||
] | ||
connectors = [ | ||
Connector("j", 2, # J2 | ||
"- - " | ||
"109 - " # 110: INITn | ||
"111 112 " | ||
"- - " | ||
"113 114 " | ||
"115 117 " | ||
"119 120 " | ||
"- - " | ||
"121 122 " | ||
"125 126 " | ||
"127 128 " | ||
"- - " | ||
"- - " # 130: TMS, 131: TCK | ||
"132 133 " | ||
"- - " # 136: TDI, 137: TDO | ||
"- - " | ||
"138 139 " | ||
"140 141 " | ||
"142 143 " | ||
"- - "), | ||
Connector("j", 3, # J3 | ||
"- - " | ||
"- - " | ||
"74 73 " | ||
"76 75 " | ||
"- - " | ||
"78 77 " | ||
"82 81 " | ||
"- - " | ||
"84 83 " | ||
"86 85 " | ||
"- - " | ||
"92 91 " | ||
"94 93 " | ||
"- - " | ||
"96 95 " | ||
"98 97 " | ||
"- - " | ||
"100 99 " | ||
"105 104 " | ||
"107 106 "), | ||
Connector("j", 4, # J4 | ||
"- - " | ||
"- - " | ||
"1 2 " | ||
"3 4 " | ||
"5 6 " | ||
"9 10 " | ||
"- - " | ||
"11 12 " | ||
"13 14 " | ||
"- - " | ||
"19 20 " | ||
"21 22 " | ||
"- - " | ||
"23 24 " | ||
"25 26 " | ||
"- - " | ||
"27 28 " | ||
"- - " | ||
"32 33 " | ||
"34 35 "), | ||
Connector("j", 5, # J5 | ||
"- - " | ||
"71 69 " | ||
"70 68 " | ||
"67 62 " | ||
"65 61 " | ||
"- - " | ||
"60 58 " | ||
"59 57 " | ||
"- - " | ||
"56 54 " | ||
"55 52 " | ||
"- - " | ||
"50 48 " | ||
"49 47 " | ||
"- - " | ||
"45 43 " | ||
"44 42 " | ||
"- - " | ||
"41 39 " | ||
"40 38 "), | ||
] | ||
|
||
def toolchain_program(self, products, name): | ||
tool = os.environ.get("OPENFPGALOADER", "openFPGALoader") | ||
with products.extract("{}.bit".format(name)) as bitstream_filename: | ||
subprocess.check_call([tool, "-b", "machXO2EVN", "-m", bitstream_filename]) | ||
|
||
|
||
# This is an older version of the board, that has an FPGA with less logic | ||
# resources. It is otherwise the same. | ||
class MachXO2_1200ZE_BreakoutPlatform(MachXO2_7000HE_BreakoutPlatform): | ||
device = "LCMXO2-1200ZE" | ||
speed = "1" | ||
|
||
|
||
if __name__ == "__main__": | ||
from .test.blinky import * | ||
MachXO2_7000HE_BreakoutPlatform().build(Blinky(), do_program=True) |