Skip to content

Commit 632a2d0

Browse files
committed
Adding alinx ax7325b
1 parent c26a72e commit 632a2d0

File tree

1 file changed

+210
-0
lines changed

1 file changed

+210
-0
lines changed

amaranth_boards/alinx_ax7325b.py

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
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("sodimm",
64+
rst_n="F17",
65+
clk_p="D17 E19",
66+
clk_n="D18 D19",
67+
clk_en="L17 G17",
68+
cs_n="F22 C21",
69+
we_n="H21",
70+
ras_n="G20",
71+
cas_n="K20",
72+
a="F21 D21 E21 F18 H17 B17 J19 C17 J18 C16 K19 G18 K18 G22 D16 L18",
73+
ba="H19 H20 J17",
74+
dqs_p="L12 J16 C12 D14 F25 B28 C29 G27",
75+
dqs_n="L13 H16 B12 C14 E25 A28 B29 F27",
76+
dq="""L15 K14 J14 L11 K15 L16 J13 K16
77+
J12 J11 H15 G14 H11 H12 G13 G15
78+
D12 A11 D13 E13 F11 E11 A12 F12
79+
B13 A13 B15 C15 B14 A15 E15 F15
80+
A23 D24 E24 E26 E23 B23 D23 G23
81+
B24 C24 C26 A27 A25 A26 B27 D26
82+
D27 A30 C30 D29 C27 B30 E29 E28
83+
F28 F30 H30 G28 H24 G29 H27 H26""",
84+
dm="K13 H14 D11 E14 F26 C25 D28 G30",
85+
odt="D22 H22",
86+
diff_attrs=Attrs(IOSTANDARD="LVDS"),
87+
attrs=Attrs(IOSTANDARD="LVCMOS15")),
88+
# TODO QSPI Flash
89+
# CCLK B10
90+
# CE_B U19
91+
# D0 P24
92+
# D1 R25
93+
# D2 R20
94+
# D3 R21
95+
# *SPIFlashResources(0,
96+
# cs_n="", clk="", copi="", cipo="", wp_n="", hold_n="",
97+
# attrs=Attrs(IOSTANDARD="LVCMOS33")
98+
# ),
99+
UARTResource(0,
100+
rx="AJ26", tx="AK26",
101+
attrs=Attrs(IOSTANDARD="LVCMOS33")
102+
),
103+
# TODO: 4x SFP
104+
# SFP1_TX_P K2
105+
# SFP1_TX_N K1
106+
# SFP1_RX_P K6
107+
# SFP1_RX_P K5
108+
# SFP1_TX_DIS T28
109+
# SFP1_LOSS R28
110+
# SFP2_TX_P J4
111+
# SFP2_TX_N J3
112+
# SFP2_RX_P H6
113+
# SFP2_RX_P H5
114+
# SFP2_TX_DIS T28
115+
# SFP2_LOSS T26
116+
# SFP3_TX_P H2
117+
# SFP3_TX_N H1
118+
# SFP3_RX_P G4
119+
# SFP3_RX_P G3
120+
# SFP3_TX_DIS U28
121+
# SFP3_LOSS U27
122+
# SFP4_TX_P F2
123+
# SFP4_TX_N F1
124+
# SFP4_RX_P F6
125+
# SFP4_RX_P F5
126+
# SFP4_TX_DIS U25
127+
# SFP4_LOSS A18
128+
# TODO: QSFP
129+
# QSFP1_TX_P D2
130+
# QSFP1_TX_N D1
131+
# QSFP2_TX_P B2
132+
# QSFP2_TX_N B1
133+
# QSFP3_TX_P C4
134+
# QSFP3_TX_N C3
135+
# QSFP4_TX_P A4
136+
# QSFP4_TX_N A3
137+
# QSFP1_RX_P E4
138+
# QSFP1_RX_N E3
139+
# QSFP2_RX_P B6
140+
# QSFP2_RX_N B5
141+
# QSFP3_RX_P D6
142+
# QSFP3_RX_N D5
143+
# QSFP4_RX_P A8
144+
# QSFP4_RX_N A7
145+
# QSFP_MODSELL R30
146+
# QSFP_RESETL U30
147+
# QSFP_MMODPRSL U22
148+
# QSFP_INTL R24
149+
# QSFP_LPMODE V26
150+
# QSFP_SCL A20
151+
# QSFP_SDA A21
152+
# TODO: PCIe x8
153+
# PCIE_RX0_P M6
154+
# PCIE_RX0_N M5
155+
# PCIE_RX1_P P6
156+
# PCIE_RX1_N P5
157+
# PCIE_RX2_P R4
158+
# PCIE_RX2_N R3
159+
# PCIE_RX3_P T6
160+
# PCIE_RX3_N T5
161+
# PCIE_RX4_P V6
162+
# PCIE_RX4_N V5
163+
# PCIE_RX5_P W4
164+
# PCIE_RX5_N W3
165+
# PCIE_RX6_P Y6
166+
# PCIE_RX6_N Y5
167+
# PCIE_RX7_P AA4
168+
# PCIE_RX7_N AA3
169+
# PCIE_TX0_P L4
170+
# PCIE_TX0_N L3
171+
# PCIE_TX1_P M2
172+
# PCIE_TX1_N M1
173+
# PCIE_TX2_P N4
174+
# PCIE_TX2_N N3
175+
# PCIE_TX3_P P2
176+
# PCIE_TX3_N P1
177+
# PCIE_TX4_P T2
178+
# PCIE_TX4_N T1
179+
# PCIE_TX5_P U4
180+
# PCIE_TX5_N U3
181+
# PCIE_TX6_P V2
182+
# PCIE_TX6_N V1
183+
# PCIE_TX7_P Y2
184+
# PCIE_TX7_N Y1
185+
# PCIE_PERST B18
186+
Resource("temperature", 0,
187+
Subsignal("scl", Pins("P23", dir="i")),
188+
Subsignal("sda", Pins("N25", dir="i")),
189+
Attrs(IOSTANDARD="LVCMOS33")
190+
),
191+
*SDCardResources(0, clk="AH21", cmd="AJ21", dat0="AJ22", dat1="AJ23",
192+
dat2="AG20", dat3="AH20", cd="AE20",
193+
attrs=Attrs(IOSTANDARD="LVCMOS33")),
194+
# TODO: FMC
195+
# TODO: J16 Expansion Header
196+
*ButtonResources(pins="AG27 AG28", attrs=Attrs(IOSTANDARD="LVCMOS33")),
197+
]
198+
connectors = []
199+
200+
def toolchain_program(self, product, name):
201+
# openfpgaloader
202+
openfpgaloader = os.environ.get("OPENFPGALOADER", "openFPGALoader")
203+
with product.extract("{}.bin".format(name)) as fn:
204+
# TODO: @timkpaine has digilent_hs3 cable
205+
subprocess.check_call([openfpgaloader, "-c", "digilent_hs3", fn])
206+
207+
208+
if __name__ == "__main__":
209+
from .test.blinky import *
210+
AX7325BPlatform().build(Blinky(), do_program=True)

0 commit comments

Comments
 (0)