artiq/artiq/gateware/nist_qc2.py

74 lines
2.8 KiB
Python

import itertools
from migen.build.generic_platform import *
__all__ = ["fmc_adapter_io"]
ttl_pins = [
"LA00_CC_P", "LA02_P", "LA00_CC_N", "LA02_N", "LA01_CC_P", "LA01_CC_N", "LA06_P", "LA06_N",
"LA05_P", "LA05_N", "LA10_P", "LA09_P", "LA10_N", "LA09_N", "LA13_P", "LA14_P",
"LA13_N", "LA14_N", "LA17_CC_P", "LA17_CC_N"
]
def get_fmc_adapter_io():
ttl = itertools.count()
dds = itertools.count()
i2c_fmc = itertools.count()
spi = itertools.count()
clkout = itertools.count()
r = []
for connector in "LPC", "HPC":
for ttl_pin in ttl_pins:
r.append(("ttl", next(ttl),
Pins(connector + ":" + ttl_pin), IOStandard("LVTTL")))
def FPins(s):
return Pins(s.replace("FMC:", connector + ":"))
r += [
("dds", next(dds),
Subsignal("a", FPins("FMC:LA22_N FMC:LA21_P FMC:LA22_P FMC:LA19_N "
"FMC:LA20_N FMC:LA19_P FMC:LA20_P")),
Subsignal("d", FPins("FMC:LA15_N FMC:LA16_N FMC:LA15_P FMC:LA16_P "
"FMC:LA11_N FMC:LA12_N FMC:LA11_P FMC:LA12_P "
"FMC:LA07_N FMC:LA08_N FMC:LA07_P FMC:LA08_P "
"FMC:LA04_N FMC:LA03_N FMC:LA04_P FMC:LA03_P")),
Subsignal("sel_n", FPins("FMC:LA24_N FMC:LA29_P FMC:LA28_P FMC:LA29_N "
"FMC:LA28_N FMC:LA31_P FMC:LA30_P FMC:LA31_N "
"FMC:LA30_N FMC:LA33_P FMC:LA33_N FMC:LA32_P")),
Subsignal("fud", FPins("FMC:LA21_N")),
Subsignal("wr_n", FPins("FMC:LA24_P")),
Subsignal("rd_n", FPins("FMC:LA25_N")),
Subsignal("rst", FPins("FMC:LA25_P")),
IOStandard("LVTTL"), Misc("DRIVE=24")),
("i2c_fmc", next(i2c_fmc),
Subsignal("scl", FPins("FMC:IIC_SCL")),
Subsignal("sda", FPins("FMC:IIC_SDA")),
IOStandard("LVCMOS25")),
("clkout", next(clkout), FPins("FMC:CLK1_M2C_P"),
IOStandard("LVTTL")),
("spi", next(spi),
Subsignal("clk", FPins("FMC:LA18_CC_P")),
Subsignal("mosi", FPins("FMC:LA18_CC_N")),
Subsignal("miso", FPins("FMC:LA23_P")),
Subsignal("cs_n", FPins("FMC:LA23_N")),
IOStandard("LVTTL")),
("spi", next(spi),
Subsignal("clk", FPins("FMC:LA27_P")),
Subsignal("mosi", FPins("FMC:LA26_P")),
Subsignal("miso", FPins("FMC:LA27_N")),
Subsignal("cs_n", FPins("FMC:LA26_N")),
IOStandard("LVTTL")),
]
return r
fmc_adapter_io = get_fmc_adapter_io()