forked from M-Labs/artiq-zynq
Compare commits
5 Commits
f4ceca464f
...
04bbe1e4c5
Author | SHA1 | Date |
---|---|---|
mwojcik | 04bbe1e4c5 | |
mwojcik | c45d0c4c53 | |
mwojcik | 07ba15c2f4 | |
mwojcik | 49810da188 | |
mwojcik | e451598a06 |
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,626 @@
|
|||
|
||||
# Autogenerated for the master variant
|
||||
core_addr = "192.168.1.198"
|
||||
|
||||
device_db = {
|
||||
"core": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.core",
|
||||
"class": "Core",
|
||||
"arguments": {"host": core_addr, "ref_period": 1e-09, "target": "cortexa9"},
|
||||
},
|
||||
"core_log": {
|
||||
"type": "controller",
|
||||
"host": "::1",
|
||||
"port": 1068,
|
||||
"command": "aqctl_corelog -p {port} --bind {bind} " + core_addr
|
||||
},
|
||||
"core_moninj": {
|
||||
"type": "controller",
|
||||
"host": "::1",
|
||||
"port_proxy": 1383,
|
||||
"port": 1384,
|
||||
"command": "aqctl_moninj_proxy --port-proxy {port_proxy} --port-control {port} --bind {bind} " + core_addr
|
||||
},
|
||||
"core_cache": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.cache",
|
||||
"class": "CoreCache"
|
||||
},
|
||||
"core_dma": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.dma",
|
||||
"class": "CoreDMA"
|
||||
},
|
||||
|
||||
"satellite_targets": {},
|
||||
|
||||
"i2c_switch0": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.i2c",
|
||||
"class": "I2CSwitch",
|
||||
"arguments": {"address": 0xe0}
|
||||
},
|
||||
"i2c_switch1": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.i2c",
|
||||
"class": "I2CSwitch",
|
||||
"arguments": {"address": 0xe2}
|
||||
},
|
||||
}
|
||||
|
||||
# master peripherals
|
||||
|
||||
device_db["grabber0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.grabber",
|
||||
"class": "Grabber",
|
||||
"arguments": {"channel_base": 0x000000}
|
||||
}
|
||||
|
||||
device_db["ttl0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000002},
|
||||
}
|
||||
|
||||
device_db["ttl1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000003},
|
||||
}
|
||||
|
||||
device_db["ttl2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000004},
|
||||
}
|
||||
|
||||
device_db["ttl3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000005},
|
||||
}
|
||||
|
||||
device_db["ttl4"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000006},
|
||||
}
|
||||
|
||||
device_db["ttl5"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000007},
|
||||
}
|
||||
|
||||
device_db["ttl6"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000008},
|
||||
}
|
||||
|
||||
device_db["ttl7"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000009},
|
||||
}
|
||||
|
||||
device_db["ttl8"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000a},
|
||||
}
|
||||
|
||||
device_db["ttl9"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000b},
|
||||
}
|
||||
|
||||
device_db["ttl10"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000c},
|
||||
}
|
||||
|
||||
device_db["ttl11"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000d},
|
||||
}
|
||||
|
||||
device_db["ttl12"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000e},
|
||||
}
|
||||
|
||||
device_db["ttl13"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000f},
|
||||
}
|
||||
|
||||
device_db["ttl14"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000010},
|
||||
}
|
||||
|
||||
device_db["ttl15"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000011},
|
||||
}
|
||||
|
||||
device_db["eeprom_urukul0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.kasli_i2c",
|
||||
"class": "KasliEEPROM",
|
||||
"arguments": {"port": "EEM3"}
|
||||
}
|
||||
|
||||
device_db["spi_urukul0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x000012}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_io_update"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000013}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_sw0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000014}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_sw1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000015}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_sw2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000016}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_sw3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000017}
|
||||
}
|
||||
|
||||
device_db["urukul0_cpld"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.urukul",
|
||||
"class": "CPLD",
|
||||
"arguments": {
|
||||
"spi_device": "spi_urukul0",
|
||||
"sync_device": None,
|
||||
"io_update_device": "ttl_urukul0_io_update",
|
||||
"refclk": 125000000.0,
|
||||
"clk_sel": 2,
|
||||
"clk_div": 0
|
||||
}
|
||||
}
|
||||
|
||||
device_db["urukul0_ch0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ad9910",
|
||||
"class": "AD9910",
|
||||
"arguments": {
|
||||
"pll_n": 32,
|
||||
"pll_en": 1,
|
||||
"chip_select": 4,
|
||||
"cpld_device": "urukul0_cpld",
|
||||
"sw_device": "ttl_urukul0_sw0"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["urukul0_ch1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ad9910",
|
||||
"class": "AD9910",
|
||||
"arguments": {
|
||||
"pll_n": 32,
|
||||
"pll_en": 1,
|
||||
"chip_select": 5,
|
||||
"cpld_device": "urukul0_cpld",
|
||||
"sw_device": "ttl_urukul0_sw1"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["urukul0_ch2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ad9910",
|
||||
"class": "AD9910",
|
||||
"arguments": {
|
||||
"pll_n": 32,
|
||||
"pll_en": 1,
|
||||
"chip_select": 6,
|
||||
"cpld_device": "urukul0_cpld",
|
||||
"sw_device": "ttl_urukul0_sw2"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["urukul0_ch3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ad9910",
|
||||
"class": "AD9910",
|
||||
"arguments": {
|
||||
"pll_n": 32,
|
||||
"pll_en": 1,
|
||||
"chip_select": 7,
|
||||
"cpld_device": "urukul0_cpld",
|
||||
"sw_device": "ttl_urukul0_sw3"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["spi_zotino0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x000018}
|
||||
}
|
||||
device_db["ttl_zotino0_ldac"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000019}
|
||||
}
|
||||
device_db["ttl_zotino0_clr"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00001a}
|
||||
}
|
||||
device_db["zotino0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.zotino",
|
||||
"class": "Zotino",
|
||||
"arguments": {
|
||||
"spi_device": "spi_zotino0",
|
||||
"ldac_device": "ttl_zotino0_ldac",
|
||||
"clr_device": "ttl_zotino0_clr"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["spi_sampler0_adc"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x00001b}
|
||||
}
|
||||
device_db["spi_sampler0_pgia"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x00001c}
|
||||
}
|
||||
device_db["ttl_sampler0_cnv"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00001d},
|
||||
}
|
||||
device_db["sampler0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.sampler",
|
||||
"class": "Sampler",
|
||||
"arguments": {
|
||||
"spi_adc_device": "spi_sampler0_adc",
|
||||
"spi_pgia_device": "spi_sampler0_pgia",
|
||||
"cnv_device": "ttl_sampler0_cnv",
|
||||
"hw_rev": "v2.2"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["spi_mirny0"]={
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x00001e}
|
||||
}
|
||||
|
||||
device_db["ttl_mirny0_sw0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00001f}
|
||||
}
|
||||
|
||||
device_db["ttl_mirny0_sw1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000020}
|
||||
}
|
||||
|
||||
device_db["ttl_mirny0_sw2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000021}
|
||||
}
|
||||
|
||||
device_db["ttl_mirny0_sw3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000022}
|
||||
}
|
||||
|
||||
device_db["mirny0_ch0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.adf5356",
|
||||
"class": "ADF5356",
|
||||
"arguments": {
|
||||
"channel": 0,
|
||||
"sw_device": "ttl_mirny0_sw0",
|
||||
"cpld_device": "mirny0_cpld",
|
||||
}
|
||||
}
|
||||
|
||||
device_db["mirny0_ch1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.adf5356",
|
||||
"class": "ADF5356",
|
||||
"arguments": {
|
||||
"channel": 1,
|
||||
"sw_device": "ttl_mirny0_sw1",
|
||||
"cpld_device": "mirny0_cpld",
|
||||
}
|
||||
}
|
||||
|
||||
device_db["mirny0_ch2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.adf5356",
|
||||
"class": "ADF5356",
|
||||
"arguments": {
|
||||
"channel": 2,
|
||||
"sw_device": "ttl_mirny0_sw2",
|
||||
"cpld_device": "mirny0_cpld",
|
||||
}
|
||||
}
|
||||
|
||||
device_db["mirny0_ch3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.adf5356",
|
||||
"class": "ADF5356",
|
||||
"arguments": {
|
||||
"channel": 3,
|
||||
"sw_device": "ttl_mirny0_sw3",
|
||||
"cpld_device": "mirny0_cpld",
|
||||
}
|
||||
}
|
||||
|
||||
device_db["mirny0_cpld"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.mirny",
|
||||
"class": "Mirny",
|
||||
"arguments": {
|
||||
"spi_device": "spi_mirny0",
|
||||
"refclk": 125000000.0,
|
||||
"clk_sel": 1
|
||||
},
|
||||
}
|
||||
|
||||
device_db["fastino0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.fastino",
|
||||
"class": "Fastino",
|
||||
"arguments": {"channel": 0x000023, "log2_width": 0}
|
||||
}
|
||||
|
||||
device_db["ttl16"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000024},
|
||||
}
|
||||
|
||||
device_db["ttl17"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000025},
|
||||
}
|
||||
|
||||
device_db["ttl18"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000026},
|
||||
}
|
||||
|
||||
device_db["ttl19"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000027},
|
||||
}
|
||||
|
||||
device_db["ttl20"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000028},
|
||||
}
|
||||
|
||||
device_db["ttl21"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000029},
|
||||
}
|
||||
|
||||
device_db["ttl22"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x00002a},
|
||||
}
|
||||
|
||||
device_db["ttl23"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x00002b},
|
||||
}
|
||||
|
||||
device_db["ttl24"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00002c},
|
||||
}
|
||||
|
||||
device_db["ttl25"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00002d},
|
||||
}
|
||||
|
||||
device_db["ttl26"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00002e},
|
||||
}
|
||||
|
||||
device_db["ttl27"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00002f},
|
||||
}
|
||||
|
||||
device_db["ttl28"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000030},
|
||||
}
|
||||
|
||||
device_db["ttl29"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000031},
|
||||
}
|
||||
|
||||
device_db["ttl30"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000032},
|
||||
}
|
||||
|
||||
device_db["ttl31"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000033},
|
||||
}
|
||||
# DEST#1 peripherals
|
||||
device_db["satellite_targets"][1] = "rv32g"
|
||||
|
||||
device_db["ttl32"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x010000},
|
||||
}
|
||||
|
||||
device_db["ttl33"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x010001},
|
||||
}
|
||||
|
||||
device_db["ttl34"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x010002},
|
||||
}
|
||||
|
||||
device_db["ttl35"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x010003},
|
||||
}
|
||||
|
||||
device_db["ttl36"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010004},
|
||||
}
|
||||
|
||||
device_db["ttl37"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010005},
|
||||
}
|
||||
|
||||
device_db["ttl38"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010006},
|
||||
}
|
||||
|
||||
device_db["ttl39"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010007},
|
||||
}
|
||||
|
||||
device_db["led2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010008}
|
||||
}
|
||||
|
||||
device_db["led3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010009}
|
||||
}
|
|
@ -0,0 +1,626 @@
|
|||
|
||||
# Autogenerated for the master variant
|
||||
core_addr = "192.168.1.198"
|
||||
|
||||
device_db = {
|
||||
"core": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.core",
|
||||
"class": "Core",
|
||||
"arguments": {"host": core_addr, "ref_period": 1e-09, "target": "cortexa9"},
|
||||
},
|
||||
"core_log": {
|
||||
"type": "controller",
|
||||
"host": "::1",
|
||||
"port": 1068,
|
||||
"command": "aqctl_corelog -p {port} --bind {bind} " + core_addr
|
||||
},
|
||||
"core_moninj": {
|
||||
"type": "controller",
|
||||
"host": "::1",
|
||||
"port_proxy": 1383,
|
||||
"port": 1384,
|
||||
"command": "aqctl_moninj_proxy --port-proxy {port_proxy} --port-control {port} --bind {bind} " + core_addr
|
||||
},
|
||||
"core_cache": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.cache",
|
||||
"class": "CoreCache"
|
||||
},
|
||||
"core_dma": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.dma",
|
||||
"class": "CoreDMA"
|
||||
},
|
||||
|
||||
"satellite_targets": {},
|
||||
|
||||
"i2c_switch0": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.i2c",
|
||||
"class": "I2CSwitch",
|
||||
"arguments": {"address": 0xe0}
|
||||
},
|
||||
"i2c_switch1": {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.i2c",
|
||||
"class": "I2CSwitch",
|
||||
"arguments": {"address": 0xe2}
|
||||
},
|
||||
}
|
||||
|
||||
# master peripherals
|
||||
|
||||
device_db["grabber0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.grabber",
|
||||
"class": "Grabber",
|
||||
"arguments": {"channel_base": 0x000000}
|
||||
}
|
||||
|
||||
device_db["ttl0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000002},
|
||||
}
|
||||
|
||||
device_db["ttl1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000003},
|
||||
}
|
||||
|
||||
device_db["ttl2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000004},
|
||||
}
|
||||
|
||||
device_db["ttl3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000005},
|
||||
}
|
||||
|
||||
device_db["ttl4"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000006},
|
||||
}
|
||||
|
||||
device_db["ttl5"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000007},
|
||||
}
|
||||
|
||||
device_db["ttl6"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000008},
|
||||
}
|
||||
|
||||
device_db["ttl7"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000009},
|
||||
}
|
||||
|
||||
device_db["ttl8"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000a},
|
||||
}
|
||||
|
||||
device_db["ttl9"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000b},
|
||||
}
|
||||
|
||||
device_db["ttl10"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000c},
|
||||
}
|
||||
|
||||
device_db["ttl11"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000d},
|
||||
}
|
||||
|
||||
device_db["ttl12"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000e},
|
||||
}
|
||||
|
||||
device_db["ttl13"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00000f},
|
||||
}
|
||||
|
||||
device_db["ttl14"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000010},
|
||||
}
|
||||
|
||||
device_db["ttl15"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000011},
|
||||
}
|
||||
|
||||
device_db["eeprom_urukul0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.kasli_i2c",
|
||||
"class": "KasliEEPROM",
|
||||
"arguments": {"port": "EEM3"}
|
||||
}
|
||||
|
||||
device_db["spi_urukul0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x000012}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_io_update"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000013}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_sw0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000014}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_sw1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000015}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_sw2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000016}
|
||||
}
|
||||
|
||||
device_db["ttl_urukul0_sw3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000017}
|
||||
}
|
||||
|
||||
device_db["urukul0_cpld"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.urukul",
|
||||
"class": "CPLD",
|
||||
"arguments": {
|
||||
"spi_device": "spi_urukul0",
|
||||
"sync_device": None,
|
||||
"io_update_device": "ttl_urukul0_io_update",
|
||||
"refclk": 125000000.0,
|
||||
"clk_sel": 2,
|
||||
"clk_div": 0
|
||||
}
|
||||
}
|
||||
|
||||
device_db["urukul0_ch0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ad9910",
|
||||
"class": "AD9910",
|
||||
"arguments": {
|
||||
"pll_n": 32,
|
||||
"pll_en": 1,
|
||||
"chip_select": 4,
|
||||
"cpld_device": "urukul0_cpld",
|
||||
"sw_device": "ttl_urukul0_sw0"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["urukul0_ch1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ad9910",
|
||||
"class": "AD9910",
|
||||
"arguments": {
|
||||
"pll_n": 32,
|
||||
"pll_en": 1,
|
||||
"chip_select": 5,
|
||||
"cpld_device": "urukul0_cpld",
|
||||
"sw_device": "ttl_urukul0_sw1"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["urukul0_ch2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ad9910",
|
||||
"class": "AD9910",
|
||||
"arguments": {
|
||||
"pll_n": 32,
|
||||
"pll_en": 1,
|
||||
"chip_select": 6,
|
||||
"cpld_device": "urukul0_cpld",
|
||||
"sw_device": "ttl_urukul0_sw2"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["urukul0_ch3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ad9910",
|
||||
"class": "AD9910",
|
||||
"arguments": {
|
||||
"pll_n": 32,
|
||||
"pll_en": 1,
|
||||
"chip_select": 7,
|
||||
"cpld_device": "urukul0_cpld",
|
||||
"sw_device": "ttl_urukul0_sw3"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["spi_zotino0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x000018}
|
||||
}
|
||||
device_db["ttl_zotino0_ldac"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000019}
|
||||
}
|
||||
device_db["ttl_zotino0_clr"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00001a}
|
||||
}
|
||||
device_db["zotino0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.zotino",
|
||||
"class": "Zotino",
|
||||
"arguments": {
|
||||
"spi_device": "spi_zotino0",
|
||||
"ldac_device": "ttl_zotino0_ldac",
|
||||
"clr_device": "ttl_zotino0_clr"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["spi_sampler0_adc"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x00001b}
|
||||
}
|
||||
device_db["spi_sampler0_pgia"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x00001c}
|
||||
}
|
||||
device_db["ttl_sampler0_cnv"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00001d},
|
||||
}
|
||||
device_db["sampler0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.sampler",
|
||||
"class": "Sampler",
|
||||
"arguments": {
|
||||
"spi_adc_device": "spi_sampler0_adc",
|
||||
"spi_pgia_device": "spi_sampler0_pgia",
|
||||
"cnv_device": "ttl_sampler0_cnv",
|
||||
"hw_rev": "v2.2"
|
||||
}
|
||||
}
|
||||
|
||||
device_db["spi_mirny0"]={
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.spi2",
|
||||
"class": "SPIMaster",
|
||||
"arguments": {"channel": 0x00001e}
|
||||
}
|
||||
|
||||
device_db["ttl_mirny0_sw0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00001f}
|
||||
}
|
||||
|
||||
device_db["ttl_mirny0_sw1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000020}
|
||||
}
|
||||
|
||||
device_db["ttl_mirny0_sw2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000021}
|
||||
}
|
||||
|
||||
device_db["ttl_mirny0_sw3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x000022}
|
||||
}
|
||||
|
||||
device_db["mirny0_ch0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.adf5356",
|
||||
"class": "ADF5356",
|
||||
"arguments": {
|
||||
"channel": 0,
|
||||
"sw_device": "ttl_mirny0_sw0",
|
||||
"cpld_device": "mirny0_cpld",
|
||||
}
|
||||
}
|
||||
|
||||
device_db["mirny0_ch1"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.adf5356",
|
||||
"class": "ADF5356",
|
||||
"arguments": {
|
||||
"channel": 1,
|
||||
"sw_device": "ttl_mirny0_sw1",
|
||||
"cpld_device": "mirny0_cpld",
|
||||
}
|
||||
}
|
||||
|
||||
device_db["mirny0_ch2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.adf5356",
|
||||
"class": "ADF5356",
|
||||
"arguments": {
|
||||
"channel": 2,
|
||||
"sw_device": "ttl_mirny0_sw2",
|
||||
"cpld_device": "mirny0_cpld",
|
||||
}
|
||||
}
|
||||
|
||||
device_db["mirny0_ch3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.adf5356",
|
||||
"class": "ADF5356",
|
||||
"arguments": {
|
||||
"channel": 3,
|
||||
"sw_device": "ttl_mirny0_sw3",
|
||||
"cpld_device": "mirny0_cpld",
|
||||
}
|
||||
}
|
||||
|
||||
device_db["mirny0_cpld"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.mirny",
|
||||
"class": "Mirny",
|
||||
"arguments": {
|
||||
"spi_device": "spi_mirny0",
|
||||
"refclk": 125000000.0,
|
||||
"clk_sel": 1
|
||||
},
|
||||
}
|
||||
|
||||
device_db["fastino0"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.fastino",
|
||||
"class": "Fastino",
|
||||
"arguments": {"channel": 0x000023, "log2_width": 0}
|
||||
}
|
||||
|
||||
device_db["ttl16"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000024},
|
||||
}
|
||||
|
||||
device_db["ttl17"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000025},
|
||||
}
|
||||
|
||||
device_db["ttl18"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000026},
|
||||
}
|
||||
|
||||
device_db["ttl19"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000027},
|
||||
}
|
||||
|
||||
device_db["ttl20"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000028},
|
||||
}
|
||||
|
||||
device_db["ttl21"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000029},
|
||||
}
|
||||
|
||||
device_db["ttl22"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x00002a},
|
||||
}
|
||||
|
||||
device_db["ttl23"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x00002b},
|
||||
}
|
||||
|
||||
device_db["ttl24"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00002c},
|
||||
}
|
||||
|
||||
device_db["ttl25"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00002d},
|
||||
}
|
||||
|
||||
device_db["ttl26"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00002e},
|
||||
}
|
||||
|
||||
device_db["ttl27"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x00002f},
|
||||
}
|
||||
|
||||
device_db["ttl28"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000030},
|
||||
}
|
||||
|
||||
device_db["ttl29"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000031},
|
||||
}
|
||||
|
||||
device_db["ttl30"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000032},
|
||||
}
|
||||
|
||||
device_db["ttl31"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x000033},
|
||||
}
|
||||
# DEST#1 peripherals
|
||||
device_db["satellite_targets"][1] = "rv32g"
|
||||
|
||||
device_db["ttl32"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x010000},
|
||||
}
|
||||
|
||||
device_db["ttl33"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x010001},
|
||||
}
|
||||
|
||||
device_db["ttl34"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x010002},
|
||||
}
|
||||
|
||||
device_db["ttl35"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLInOut",
|
||||
"arguments": {"channel": 0x010003},
|
||||
}
|
||||
|
||||
device_db["ttl36"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010004},
|
||||
}
|
||||
|
||||
device_db["ttl37"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010005},
|
||||
}
|
||||
|
||||
device_db["ttl38"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010006},
|
||||
}
|
||||
|
||||
device_db["ttl39"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010007},
|
||||
}
|
||||
|
||||
device_db["led2"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010008}
|
||||
}
|
||||
|
||||
device_db["led3"] = {
|
||||
"type": "local",
|
||||
"module": "artiq.coredevice.ttl",
|
||||
"class": "TTLOut",
|
||||
"arguments": {"channel": 0x010009}
|
||||
}
|
|
@ -338,18 +338,22 @@
|
|||
} //
|
||||
(build { target = "zc706"; variant = "nist_clock"; }) //
|
||||
(build { target = "zc706"; variant = "nist_clock_master"; }) //
|
||||
(build { target = "zc706"; variant = "nist_clock_master_100mhz"; }) //
|
||||
(build { target = "zc706"; variant = "nist_clock_satellite"; }) //
|
||||
(build { target = "zc706"; variant = "nist_clock_satellite_100mhz"; }) //
|
||||
(build { target = "zc706"; variant = "nist_qc2"; }) //
|
||||
(build { target = "zc706"; variant = "nist_qc2_master"; }) //
|
||||
(build { target = "zc706"; variant = "nist_qc2_master_100mhz"; }) //
|
||||
(build { target = "zc706"; variant = "nist_qc2_satellite"; }) //
|
||||
(build { target = "zc706"; variant = "nist_qc2_satellite_100mhz"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_clock"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_clock_master"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_clock_master_100mhz"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_clock_satellite"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_clock_satellite_100mhz"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_qc2"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_qc2_master"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_qc2_master_100mhz"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_qc2_satellite"; }) //
|
||||
(build { target = "zc706"; variant = "acpki_nist_qc2_satellite_100mhz"; }) //
|
||||
(build { target = "kasli_soc"; variant = "demo"; json = ./demo.json; }) //
|
||||
|
|
|
@ -61,24 +61,48 @@ class SMAClkinForward(Module):
|
|||
]
|
||||
|
||||
|
||||
class GTP125BootstrapClock(Module):
|
||||
def __init__(self, platform):
|
||||
class GTPBootstrapClock(Module):
|
||||
def __init__(self, platform, freq=125e6):
|
||||
self.clock_domains.cd_bootstrap = ClockDomain(reset_less=True)
|
||||
self.cd_bootstrap.clk.attr.add("keep")
|
||||
|
||||
bootstrap_125 = platform.request("clk125_gtp")
|
||||
bootstrap = platform.request("clk125_gtp")
|
||||
bootstrap_se = Signal()
|
||||
platform.add_period_constraint(bootstrap_125.p, 8.0)
|
||||
|
||||
clk_out = Signal()
|
||||
platform.add_period_constraint(bootstrap.p, 8.0)
|
||||
self.specials += [
|
||||
Instance("IBUFDS_GTE2",
|
||||
i_CEB=0,
|
||||
i_I=bootstrap_125.p, i_IB=bootstrap_125.n,
|
||||
i_I=bootstrap.p, i_IB=bootstrap.n,
|
||||
o_O=bootstrap_se,
|
||||
p_CLKCM_CFG="TRUE",
|
||||
p_CLKRCV_TRST="TRUE",
|
||||
p_CLKSWING_CFG=3),
|
||||
Instance("BUFG", i_I=bootstrap_se, o_O=self.cd_bootstrap.clk)
|
||||
Instance("BUFG", i_I=bootstrap_se, o_O=clk_out)
|
||||
]
|
||||
if freq == 125e6:
|
||||
self.comb += self.cd_bootstrap.clk.eq(clk_out)
|
||||
elif freq == 100e6:
|
||||
pll_fb = Signal()
|
||||
pll_out = Signal()
|
||||
self.specials += [
|
||||
Instance("PLLE2_BASE",
|
||||
p_CLKIN1_PERIOD=8.0,
|
||||
i_CLKIN1=clk_out,
|
||||
i_CLKFBIN=pll_fb,
|
||||
o_CLKFBOUT=pll_fb,
|
||||
|
||||
# VCO @ 1GHz
|
||||
p_CLKFBOUT_MULT=8, p_DIVCLK_DIVIDE=1,
|
||||
|
||||
# 100MHz for bootstrap
|
||||
p_CLKOUT1_DIVIDE=10, p_CLKOUT1_PHASE=0.0, o_CLKOUT1=pll_out,
|
||||
),
|
||||
Instance("BUFG", i_I=pll_out, o_O=self.cd_bootstrap.clk)
|
||||
]
|
||||
else:
|
||||
raise ValueError("Bootstrap frequency must be 100 or 125MHz")
|
||||
|
||||
|
||||
class GenericStandalone(SoCCore):
|
||||
|
@ -95,6 +119,7 @@ class GenericStandalone(SoCCore):
|
|||
SoCCore.__init__(self, platform=platform, csr_data_width=32, ident=ident, ps_cd_sys=False)
|
||||
|
||||
self.config["HW_REV"] = description["hw_rev"]
|
||||
|
||||
|
||||
self.submodules += SMAClkinForward(self.platform)
|
||||
|
||||
|
@ -109,8 +134,7 @@ class GenericStandalone(SoCCore):
|
|||
p_DIFF_TERM="TRUE", p_IBUF_LOW_PWR="FALSE",
|
||||
i_I=clk_synth.p, i_IB=clk_synth.n, o_O=clk_synth_se)
|
||||
fix_serdes_timing_path(platform)
|
||||
self.submodules.bootstrap = GTP125BootstrapClock(self.platform)
|
||||
|
||||
self.submodules.bootstrap = GTPBootstrapClock(self.platform, description["rtio_frequency"])
|
||||
|
||||
self.submodules.sys_crg = zynq_clocking.SYSCRG(self.platform, self.ps7, clk_synth_se)
|
||||
platform.add_false_path_constraints(
|
||||
|
@ -203,7 +227,7 @@ class GenericMaster(SoCCore):
|
|||
gtx0 = self.gt_drtio.gtxs[0]
|
||||
self.specials += Instance("BUFG", i_I=gtx0.txoutclk, o_O=txout_buf)
|
||||
|
||||
self.submodules.bootstrap = GTP125BootstrapClock(self.platform)
|
||||
self.submodules.bootstrap = GTPBootstrapClock(self.platform, clk_freq)
|
||||
self.submodules.sys_crg = zynq_clocking.SYSCRG(
|
||||
self.platform,
|
||||
self.ps7,
|
||||
|
@ -344,7 +368,7 @@ class GenericSatellite(SoCCore):
|
|||
gtx0 = self.gt_drtio.gtxs[0]
|
||||
self.specials += Instance("BUFG", i_I=gtx0.txoutclk, o_O=txout_buf)
|
||||
|
||||
self.submodules.bootstrap = GTP125BootstrapClock(self.platform)
|
||||
self.submodules.bootstrap = GTPBootstrapClock(self.platform, clk_freq)
|
||||
self.submodules.sys_crg = zynq_clocking.SYSCRG(
|
||||
self.platform,
|
||||
self.ps7,
|
||||
|
|
|
@ -76,7 +76,7 @@ fn init_rtio(timer: &mut GlobalTimer) {
|
|||
}
|
||||
// if it's not locked, it will hang at the CSR.
|
||||
|
||||
timer.delay_ms(20); // wait for CPLL/QPLL/SYS PLL lock
|
||||
timer.delay_ms(50); // wait for CPLL/QPLL/SYS PLL lock
|
||||
let clk = unsafe { pl::csr::sys_crg::current_clock_read() };
|
||||
if clk == 1 {
|
||||
info!("SYS CLK switched successfully");
|
||||
|
@ -95,7 +95,7 @@ fn init_drtio(timer: &mut GlobalTimer) {
|
|||
pl::csr::gt_drtio::stable_clkin_write(1);
|
||||
}
|
||||
|
||||
timer.delay_ms(20); // wait for CPLL/QPLL/SYS PLL lock
|
||||
timer.delay_ms(50); // wait for CPLL/QPLL/SYS PLL lock
|
||||
let clk = unsafe { pl::csr::sys_crg::current_clock_read() };
|
||||
if clk == 1 {
|
||||
info!("SYS CLK switched successfully");
|
||||
|
@ -264,7 +264,10 @@ pub fn init(timer: &mut GlobalTimer, cfg: &Config) {
|
|||
{
|
||||
let i2c = unsafe { (&mut i2c::I2C_BUS).as_mut().unwrap() };
|
||||
match clk {
|
||||
RtioClock::Ext0_Bypass => si5324::bypass(i2c, SI5324_EXT_INPUT, timer).expect("cannot bypass Si5324"),
|
||||
RtioClock::Ext0_Bypass => {
|
||||
info!("bypassing the PLL for RTIO clock");
|
||||
si5324::bypass(i2c, SI5324_EXT_INPUT, timer).expect("cannot bypass Si5324")
|
||||
},
|
||||
_ => setup_si5324(i2c, timer, clk),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -124,51 +124,51 @@ fn process_aux_packet(
|
|||
#[cfg(not(has_drtio_routing))]
|
||||
let hop = 0;
|
||||
|
||||
if let Some(status) = dma_manager.check_state() {
|
||||
info!(
|
||||
"playback done, error: {}, channel: {}, timestamp: {}",
|
||||
status.error, status.channel, status.timestamp
|
||||
);
|
||||
return drtioaux::send(
|
||||
0,
|
||||
&drtioaux::Packet::DmaPlaybackStatus {
|
||||
destination: *_rank,
|
||||
id: status.id,
|
||||
error: status.error,
|
||||
channel: status.channel,
|
||||
timestamp: status.timestamp,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
if hop == 0 {
|
||||
let errors;
|
||||
unsafe {
|
||||
errors = csr::drtiosat::rtio_error_read();
|
||||
}
|
||||
if errors & 1 != 0 {
|
||||
let channel;
|
||||
unsafe {
|
||||
channel = csr::drtiosat::sequence_error_channel_read();
|
||||
csr::drtiosat::rtio_error_write(1);
|
||||
}
|
||||
drtioaux::send(0, &drtioaux::Packet::DestinationSequenceErrorReply { channel })?;
|
||||
} else if errors & 2 != 0 {
|
||||
let channel;
|
||||
unsafe {
|
||||
channel = csr::drtiosat::collision_channel_read();
|
||||
csr::drtiosat::rtio_error_write(2);
|
||||
}
|
||||
drtioaux::send(0, &drtioaux::Packet::DestinationCollisionReply { channel })?;
|
||||
} else if errors & 4 != 0 {
|
||||
let channel;
|
||||
unsafe {
|
||||
channel = csr::drtiosat::busy_channel_read();
|
||||
csr::drtiosat::rtio_error_write(4);
|
||||
}
|
||||
drtioaux::send(0, &drtioaux::Packet::DestinationBusyReply { channel })?;
|
||||
if let Some(status) = dma_manager.check_state() {
|
||||
info!(
|
||||
"playback done, error: {}, channel: {}, timestamp: {}",
|
||||
status.error, status.channel, status.timestamp
|
||||
);
|
||||
drtioaux::send(
|
||||
0,
|
||||
&drtioaux::Packet::DmaPlaybackStatus {
|
||||
destination: _destination,
|
||||
id: status.id,
|
||||
error: status.error,
|
||||
channel: status.channel,
|
||||
timestamp: status.timestamp,
|
||||
},
|
||||
)?;
|
||||
} else {
|
||||
drtioaux::send(0, &drtioaux::Packet::DestinationOkReply)?;
|
||||
let errors;
|
||||
unsafe {
|
||||
errors = csr::drtiosat::rtio_error_read();
|
||||
}
|
||||
if errors & 1 != 0 {
|
||||
let channel;
|
||||
unsafe {
|
||||
channel = csr::drtiosat::sequence_error_channel_read();
|
||||
csr::drtiosat::rtio_error_write(1);
|
||||
}
|
||||
drtioaux::send(0, &drtioaux::Packet::DestinationSequenceErrorReply { channel })?;
|
||||
} else if errors & 2 != 0 {
|
||||
let channel;
|
||||
unsafe {
|
||||
channel = csr::drtiosat::collision_channel_read();
|
||||
csr::drtiosat::rtio_error_write(2);
|
||||
}
|
||||
drtioaux::send(0, &drtioaux::Packet::DestinationCollisionReply { channel })?;
|
||||
} else if errors & 4 != 0 {
|
||||
let channel;
|
||||
unsafe {
|
||||
channel = csr::drtiosat::busy_channel_read();
|
||||
csr::drtiosat::rtio_error_write(4);
|
||||
}
|
||||
drtioaux::send(0, &drtioaux::Packet::DestinationBusyReply { channel })?;
|
||||
} else {
|
||||
drtioaux::send(0, &drtioaux::Packet::DestinationOkReply)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
from artiq.experiment import *
|
||||
|
||||
|
||||
class DMAPulses(EnvExperiment):
|
||||
def build(self):
|
||||
self.setattr_device("core")
|
||||
self.setattr_device("ttl4")
|
||||
self.setattr_device("led2")
|
||||
self.setattr_device("led3")
|
||||
|
||||
@subkernel(destination=1)
|
||||
def simple_return() -> TInt32:
|
||||
a = 0xdeadbeef
|
||||
b = 1512
|
||||
c = a + b
|
||||
return c
|
||||
|
||||
@subkernel(destination=1)
|
||||
def simple_args(self, a: TInt32, b: TInt32) -> TInt32:
|
||||
return a + b + self.simple_self()
|
||||
|
||||
@subkernel(destination=1)
|
||||
def simple_self(self) -> TInt32:
|
||||
self.core.break_realtime()
|
||||
self.led2.pulse(1000*ms)
|
||||
return 15
|
||||
|
||||
@subkernel(destination=1)
|
||||
def simple_self_too(self) -> TNone:
|
||||
self.core.break_realtime()
|
||||
self.led3.pulse(1000*ms)
|
||||
|
||||
@kernel
|
||||
def run(self):
|
||||
subkernel_preload(self.simple_args)
|
||||
self.core.reset()
|
||||
self.core.break_realtime()
|
||||
self.simple_args(0xdead, 0xbeef0000)
|
||||
val = subkernel_await(self.simple_args)
|
||||
print(val)
|
||||
self.simple_return()
|
||||
val = subkernel_await(self.simple_return, 1000)
|
||||
print(val)
|
||||
self.simple_self_too()
|
||||
delay(3000*ms)
|
||||
self.ttl4.pulse(1000*ms)
|
||||
delay(1000*ms)
|
Loading…
Reference in New Issue