Skip to content

Commit 4cd644b

Browse files
committed
Adding alinx ax7325b
1 parent c26a72e commit 4cd644b

File tree

1 file changed

+216
-0
lines changed

1 file changed

+216
-0
lines changed

amaranth_boards/alinx_ax7325b.py

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
import os
2+
import subprocess
3+
4+
from amaranth.build import *
5+
from amaranth.vendor import XilinxPlatform
6+
from .resources import *
7+
8+
9+
__all__ = ["AX7325BPlatform"]
10+
11+
12+
class AX7325BPlatform(XilinxPlatform):
13+
"""
14+
https://www.en.alinx.com/Product/FPGA-Development-Boards/Kintex-7/AX7325B.html
15+
16+
Power Supply Function
17+
18+
POWER
19+
+1.0V FPGA core voltage
20+
+3.3V FPGA Bank0, Bank14, Bank15, QSIP FLASH, Clock Crystal, SD Card, SFP Optical Module
21+
+1.8V Gigabit Ethernet, HDMI, USB
22+
+1.5V DDR3, SODIMM, FPGA Bank33, Bank34, Bank35, VADJ(+2.5V) FPGA Bank12, Bank13, FMC
23+
VREF, VTT (+0.75V) DDR3, SODIMM
24+
MGTAVCC(+1.0V) FPGA Bank115, Bank116, Bank117, Bank118
25+
MGTAVTT(+1.2V) FPGA Bank115, Bank116, Bank117, Bank118
26+
MGT_1.8V (+1.2V) FPGA GTX auxiliary voltage
27+
"""
28+
device = "xc7k325t"
29+
package = "ffg900"
30+
speed = "2"
31+
default_clk = "clk"
32+
resources = [
33+
Resource("clk", 0, DiffPairs("AE10", "AF10", dir="i"), Clock(200e6), Attrs(IOSTANDARD="LVDS")),
34+
Resource("clk0", 0, DiffPairs("F20", "E20", dir="i"), Clock(200e6), Attrs(IOSTANDARD="LVDS")),
35+
Resource("clk_sfp", 0, DiffPairs("G8", "G7", dir="i"), Clock(156e6), Attrs(IOSTANDARD="LVDS")),
36+
Resource("clk_qsfp", 0, DiffPairs("C8", "C7", dir="i"), Clock(125e6), Attrs(IOSTANDARD="LVDS")),
37+
*LEDResources(pins="A22 C19 B19 E18", attrs=Attrs(IOSTANDARD="LVCMOS33")),
38+
DDR3Resource(0,
39+
rst_n="Y11",
40+
clk_p="AG10",
41+
clk_n="AH10",
42+
clk_en="AD12",
43+
cs_n="AF11",
44+
we_n="AD9",
45+
ras_n="AE9",
46+
cas_n="AE11",
47+
a="AB12 AA8 AB9 AC9 AB13 Y10 AA11 AA10 AA13 AD8 AB10 AC10 AJ9",
48+
ba="AE8 AC12 AC11",
49+
dqs_p="Y19 AJ18 AH16 AC16 AH7 AG4 AG2 AD2",
50+
dqs_n="Y18 AK18 AJ16 AC15 AJ7 AG3 AH1 AD1",
51+
dq="""AD18 AB18 AD17 AB19 AD16 AC19 AE18 AB17
52+
AG19 AK19 AD19 AJ19 AF18 AH19 AE19 AG18
53+
AK15 AJ17 AH15 AF15 AG14 AH17 AG15 AK16
54+
AE15 Y16 AC14 AA15 AA17 AD14 AA16 AB15
55+
AK6 AJ8 AJ6 AF8 AK4 AK8 AK5 AG7
56+
AE4 AF1 AE5 AE1 AF6 AE3 AF5 AF2
57+
AH4 AJ2 AH5 AJ4 AH2 AK1 AH6 AJ1
58+
AC2 AC5 AD3 AC7 AE6 AD6 AC1 AC4""",
59+
dm="AA18 AF17 AE16 Y15 AF7 AF3 AJ3 AD4",
60+
odt="AD11",
61+
diff_attrs=Attrs(IOSTANDARD="LVDS"),
62+
attrs=Attrs(IOSTANDARD="LVCMOS15")),
63+
DDR3Resource(1,
64+
# "sodimm",
65+
rst_n="F17",
66+
#clk_p="D17 E19",
67+
clk_p="D17",
68+
#clk_n="D18 D19",
69+
clk_n="D18",
70+
#clk_en="L17 G17",
71+
clk_en="L17",
72+
#cs_n="F22 C21",
73+
cs_n="F22",
74+
we_n="H21",
75+
ras_n="G20",
76+
cas_n="K20",
77+
a="F21 D21 E21 F18 H17 B17 J19 C17 J18 C16 K19 G18 K18 G22 D16 L18",
78+
ba="H19 H20 J17",
79+
dqs_p="L12 J16 C12 D14 F25 B28 C29 G27",
80+
dqs_n="L13 H16 B12 C14 E25 A28 B29 F27",
81+
dq="""L15 K14 J14 L11 K15 L16 J13 K16
82+
J12 J11 H15 G14 H11 H12 G13 G15
83+
D12 A11 D13 E13 F11 E11 A12 F12
84+
B13 A13 B15 C15 B14 A15 E15 F15
85+
A23 D24 E24 E26 E23 B23 D23 G23
86+
B24 C24 C26 A27 A25 A26 B27 D26
87+
D27 A30 C30 D29 C27 B30 E29 E28
88+
F28 F30 H30 G28 H24 G29 H27 H26""",
89+
dm="K13 H14 D11 E14 F26 C25 D28 G30",
90+
#odt="D22 H22",
91+
odt="D22",
92+
diff_attrs=Attrs(IOSTANDARD="LVDS"),
93+
attrs=Attrs(IOSTANDARD="LVCMOS15")),
94+
# TODO QSPI Flash
95+
# CCLK B10
96+
# CE_B U19
97+
# D0 P24
98+
# D1 R25
99+
# D2 R20
100+
# D3 R21
101+
# *SPIFlashResources(0,
102+
# cs_n="", clk="", copi="", cipo="", wp_n="", hold_n="",
103+
# attrs=Attrs(IOSTANDARD="LVCMOS33")
104+
# ),
105+
UARTResource(0,
106+
rx="AJ26", tx="AK26",
107+
attrs=Attrs(IOSTANDARD="LVCMOS33")
108+
),
109+
# TODO: 4x SFP
110+
# SFP1_TX_P K2
111+
# SFP1_TX_N K1
112+
# SFP1_RX_P K6
113+
# SFP1_RX_P K5
114+
# SFP1_TX_DIS T28
115+
# SFP1_LOSS R28
116+
# SFP2_TX_P J4
117+
# SFP2_TX_N J3
118+
# SFP2_RX_P H6
119+
# SFP2_RX_P H5
120+
# SFP2_TX_DIS T28
121+
# SFP2_LOSS T26
122+
# SFP3_TX_P H2
123+
# SFP3_TX_N H1
124+
# SFP3_RX_P G4
125+
# SFP3_RX_P G3
126+
# SFP3_TX_DIS U28
127+
# SFP3_LOSS U27
128+
# SFP4_TX_P F2
129+
# SFP4_TX_N F1
130+
# SFP4_RX_P F6
131+
# SFP4_RX_P F5
132+
# SFP4_TX_DIS U25
133+
# SFP4_LOSS A18
134+
# TODO: QSFP
135+
# QSFP1_TX_P D2
136+
# QSFP1_TX_N D1
137+
# QSFP2_TX_P B2
138+
# QSFP2_TX_N B1
139+
# QSFP3_TX_P C4
140+
# QSFP3_TX_N C3
141+
# QSFP4_TX_P A4
142+
# QSFP4_TX_N A3
143+
# QSFP1_RX_P E4
144+
# QSFP1_RX_N E3
145+
# QSFP2_RX_P B6
146+
# QSFP2_RX_N B5
147+
# QSFP3_RX_P D6
148+
# QSFP3_RX_N D5
149+
# QSFP4_RX_P A8
150+
# QSFP4_RX_N A7
151+
# QSFP_MODSELL R30
152+
# QSFP_RESETL U30
153+
# QSFP_MMODPRSL U22
154+
# QSFP_INTL R24
155+
# QSFP_LPMODE V26
156+
# QSFP_SCL A20
157+
# QSFP_SDA A21
158+
# TODO: PCIe x8
159+
# PCIE_RX0_P M6
160+
# PCIE_RX0_N M5
161+
# PCIE_RX1_P P6
162+
# PCIE_RX1_N P5
163+
# PCIE_RX2_P R4
164+
# PCIE_RX2_N R3
165+
# PCIE_RX3_P T6
166+
# PCIE_RX3_N T5
167+
# PCIE_RX4_P V6
168+
# PCIE_RX4_N V5
169+
# PCIE_RX5_P W4
170+
# PCIE_RX5_N W3
171+
# PCIE_RX6_P Y6
172+
# PCIE_RX6_N Y5
173+
# PCIE_RX7_P AA4
174+
# PCIE_RX7_N AA3
175+
# PCIE_TX0_P L4
176+
# PCIE_TX0_N L3
177+
# PCIE_TX1_P M2
178+
# PCIE_TX1_N M1
179+
# PCIE_TX2_P N4
180+
# PCIE_TX2_N N3
181+
# PCIE_TX3_P P2
182+
# PCIE_TX3_N P1
183+
# PCIE_TX4_P T2
184+
# PCIE_TX4_N T1
185+
# PCIE_TX5_P U4
186+
# PCIE_TX5_N U3
187+
# PCIE_TX6_P V2
188+
# PCIE_TX6_N V1
189+
# PCIE_TX7_P Y2
190+
# PCIE_TX7_N Y1
191+
# PCIE_PERST B18
192+
Resource("temperature", 0,
193+
Subsignal("scl", Pins("P23", dir="i")),
194+
Subsignal("sda", Pins("N25", dir="i")),
195+
Attrs(IOSTANDARD="LVCMOS33")
196+
),
197+
*SDCardResources(0, clk="AH21", cmd="AJ21", dat0="AJ22", dat1="AJ23",
198+
dat2="AG20", dat3="AH20", cd="AE20",
199+
attrs=Attrs(IOSTANDARD="LVCMOS33")),
200+
# TODO: FMC
201+
# TODO: J16 Expansion Header
202+
*ButtonResources(pins="AG27 AG28", attrs=Attrs(IOSTANDARD="LVCMOS33")),
203+
]
204+
connectors = []
205+
206+
def toolchain_program(self, product, name):
207+
# openfpgaloader
208+
openfpgaloader = os.environ.get("OPENFPGALOADER", "openFPGALoader")
209+
with product.extract("{}.bin".format(name)) as fn:
210+
# included with board
211+
subprocess.check_call([openfpgaloader, "-c", "ft232", fn])
212+
213+
214+
if __name__ == "__main__":
215+
from .test.blinky import *
216+
AX7325BPlatform().build(Blinky(), do_program=True)

0 commit comments

Comments
 (0)