forked from M-Labs/artiq
Fully drop AD9858 and kc705-nist_qc1 support (closes #576).
This commit is contained in:
parent
f4b7666768
commit
5e8888d5f3
|
@ -52,43 +52,3 @@ papilio_adapter_io = [
|
|||
Subsignal("rst_n", Pins("A:3")),
|
||||
IOStandard("LVTTL")),
|
||||
]
|
||||
|
||||
|
||||
fmc_adapter_io = [
|
||||
("pmt", 0, Pins("LPC:LA20_N"), IOStandard("LVTTL")),
|
||||
("pmt", 1, Pins("LPC:LA24_P"), IOStandard("LVTTL")),
|
||||
|
||||
("ttl", 0, Pins("LPC:LA21_P"), IOStandard("LVTTL")),
|
||||
("ttl", 1, Pins("LPC:LA25_P"), IOStandard("LVTTL")),
|
||||
("ttl", 2, Pins("LPC:LA21_N"), IOStandard("LVTTL")),
|
||||
("ttl", 3, Pins("LPC:LA25_N"), IOStandard("LVTTL")),
|
||||
("ttl", 4, Pins("LPC:LA22_P"), IOStandard("LVTTL")),
|
||||
("ttl", 5, Pins("LPC:LA26_P"), IOStandard("LVTTL")),
|
||||
("ttl", 6, Pins("LPC:LA22_N"), IOStandard("LVTTL")),
|
||||
("ttl", 7, Pins("LPC:LA26_N"), IOStandard("LVTTL")),
|
||||
("ttl", 8, Pins("LPC:LA23_P"), IOStandard("LVTTL")),
|
||||
("ttl", 9, Pins("LPC:LA27_P"), IOStandard("LVTTL")),
|
||||
("ttl", 10, Pins("LPC:LA23_N"), IOStandard("LVTTL")),
|
||||
("ttl", 11, Pins("LPC:LA27_N"), IOStandard("LVTTL")),
|
||||
("ttl", 12, Pins("LPC:LA00_CC_P"), IOStandard("LVTTL")),
|
||||
("ttl", 13, Pins("LPC:LA10_P"), IOStandard("LVTTL")),
|
||||
("ttl", 14, Pins("LPC:LA00_CC_N"), IOStandard("LVTTL")),
|
||||
("ttl", 15, Pins("LPC:LA10_N"), IOStandard("LVTTL")),
|
||||
("ttl_l_tx_en", 0, Pins("LPC:LA11_P"), IOStandard("LVTTL")),
|
||||
("ttl_h_tx_en", 0, Pins("LPC:LA01_CC_P"), IOStandard("LVTTL")),
|
||||
|
||||
("dds", 0,
|
||||
Subsignal("a", Pins("LPC:LA04_N LPC:LA14_N LPC:LA05_P LPC:LA15_P "
|
||||
"LPC:LA05_N LPC:LA15_N")),
|
||||
Subsignal("d", Pins("LPC:LA06_P LPC:LA16_P LPC:LA06_N LPC:LA16_N "
|
||||
"LPC:LA07_P LPC:LA17_CC_P LPC:LA07_N "
|
||||
"LPC:LA17_CC_N")),
|
||||
Subsignal("sel", Pins("LPC:LA12_N LPC:LA03_P LPC:LA13_P LPC:LA03_N "
|
||||
"LPC:LA13_N")),
|
||||
Subsignal("p", Pins("LPC:LA11_N LPC:LA02_P")),
|
||||
Subsignal("fud_n", Pins("LPC:LA14_P")),
|
||||
Subsignal("wr_n", Pins("LPC:LA04_P")),
|
||||
Subsignal("rd_n", Pins("LPC:LA02_N")),
|
||||
Subsignal("rst_n", Pins("LPC:LA12_P")),
|
||||
IOStandard("LVTTL")),
|
||||
]
|
||||
|
|
|
@ -56,11 +56,6 @@ class _AD9xxx(Module):
|
|||
for c, (probe, ftw) in enumerate(zip(self.probes, ftws))])
|
||||
|
||||
|
||||
class AD9858(_AD9xxx):
|
||||
def __init__(self, *args, **kwargs):
|
||||
_AD9xxx.__init__(self, 0x0a, *args, **kwargs)
|
||||
|
||||
|
||||
class AD9914(_AD9xxx):
|
||||
def __init__(self, *args, **kwargs):
|
||||
_AD9xxx.__init__(self, 0x2d, *args, **kwargs)
|
||||
|
|
|
@ -17,7 +17,7 @@ from misoc.targets.kc705 import MiniSoC, soc_kc705_args, soc_kc705_argdict
|
|||
from misoc.integration.builder import builder_args, builder_argdict
|
||||
|
||||
from artiq.gateware.soc import AMPSoC, build_artiq_soc
|
||||
from artiq.gateware import rtio, nist_qc1, nist_clock, nist_qc2
|
||||
from artiq.gateware import rtio, nist_clock, nist_qc2
|
||||
from artiq.gateware.rtio.phy import ttl_simple, ttl_serdes_7series, dds, spi
|
||||
from artiq import __version__ as artiq_version
|
||||
|
||||
|
@ -158,62 +158,6 @@ class _NIST_Ions(MiniSoC, AMPSoC):
|
|||
self.csr_devices.append("rtio_analyzer")
|
||||
|
||||
|
||||
class NIST_QC1(_NIST_Ions):
|
||||
"""
|
||||
NIST QC1 hardware, as used in the Penning lab, with FMC to SCSI cables
|
||||
adapter.
|
||||
"""
|
||||
def __init__(self, cpu_type="or1k", **kwargs):
|
||||
_NIST_Ions.__init__(self, cpu_type, **kwargs)
|
||||
|
||||
platform = self.platform
|
||||
platform.add_extension(nist_qc1.fmc_adapter_io)
|
||||
|
||||
self.comb += [
|
||||
platform.request("ttl_l_tx_en").eq(1),
|
||||
platform.request("ttl_h_tx_en").eq(1)
|
||||
]
|
||||
|
||||
rtio_channels = []
|
||||
for i in range(2):
|
||||
phy = ttl_serdes_7series.Inout_8X(platform.request("pmt", i))
|
||||
self.submodules += phy
|
||||
rtio_channels.append(rtio.Channel.from_phy(phy, ififo_depth=512))
|
||||
for i in range(15):
|
||||
phy = ttl_serdes_7series.Output_8X(platform.request("ttl", i))
|
||||
self.submodules += phy
|
||||
rtio_channels.append(rtio.Channel.from_phy(phy))
|
||||
|
||||
phy = ttl_serdes_7series.Inout_8X(platform.request("user_sma_gpio_n_33"))
|
||||
self.submodules += phy
|
||||
rtio_channels.append(rtio.Channel.from_phy(phy, ififo_depth=512))
|
||||
phy = ttl_simple.Output(platform.request("user_led", 2))
|
||||
self.submodules += phy
|
||||
rtio_channels.append(rtio.Channel.from_phy(phy))
|
||||
self.config["RTIO_REGULAR_TTL_COUNT"] = len(rtio_channels)
|
||||
|
||||
phy = ttl_simple.ClockGen(platform.request("ttl", 15))
|
||||
self.submodules += phy
|
||||
rtio_channels.append(rtio.Channel.from_phy(phy))
|
||||
|
||||
self.config["RTIO_FIRST_DDS_CHANNEL"] = len(rtio_channels)
|
||||
self.config["RTIO_DDS_COUNT"] = 1
|
||||
self.config["DDS_CHANNELS_PER_BUS"] = 8
|
||||
self.config["DDS_AD9858"] = None
|
||||
phy = dds.AD9858(platform.request("dds"), 8)
|
||||
self.submodules += phy
|
||||
rtio_channels.append(rtio.Channel.from_phy(phy,
|
||||
ofifo_depth=512,
|
||||
ififo_depth=4))
|
||||
|
||||
self.config["RTIO_LOG_CHANNEL"] = len(rtio_channels)
|
||||
rtio_channels.append(rtio.LogChannel())
|
||||
|
||||
self.add_rtio(rtio_channels)
|
||||
assert self.rtio.fine_ts_width <= 3
|
||||
self.config["DDS_RTIO_CLK_RATIO"] = 8 >> self.rtio.fine_ts_width
|
||||
|
||||
|
||||
class NIST_CLOCK(_NIST_Ions):
|
||||
"""
|
||||
NIST clock hardware, with old backplane and 11 DDS channels
|
||||
|
@ -372,19 +316,17 @@ class NIST_QC2(_NIST_Ions):
|
|||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="ARTIQ core device builder / KC705 "
|
||||
"+ NIST Ions QC1/CLOCK/QC2 hardware adapters")
|
||||
"+ NIST Ions CLOCK/QC2 hardware adapters")
|
||||
builder_args(parser)
|
||||
soc_kc705_args(parser)
|
||||
parser.add_argument("-H", "--hw-adapter", default="nist_clock",
|
||||
help="hardware adapter type: "
|
||||
"nist_qc1/nist_clock/nist_qc2 "
|
||||
"nist_clock/nist_qc2 "
|
||||
"(default: %(default)s)")
|
||||
args = parser.parse_args()
|
||||
|
||||
hw_adapter = args.hw_adapter.lower()
|
||||
if hw_adapter == "nist_qc1":
|
||||
cls = NIST_QC1
|
||||
elif hw_adapter == "nist_clock":
|
||||
if hw_adapter == "nist_clock":
|
||||
cls = NIST_CLOCK
|
||||
elif hw_adapter == "nist_qc2":
|
||||
cls = NIST_QC2
|
||||
|
|
|
@ -206,19 +206,6 @@ trce -v 12 -fastpaths -tsi {build_name}.tsi -o {build_name}.twr {build_name}.ncd
|
|||
rtio_channels.append(rtio.Channel.from_phy(
|
||||
phy, ofifo_depth=64, ififo_depth=64))
|
||||
|
||||
self.config["HAS_DDS"] = None
|
||||
self.config["RTIO_FIRST_DDS_CHANNEL"] = len(rtio_channels)
|
||||
self.config["RTIO_DDS_COUNT"] = 1
|
||||
self.config["DDS_CHANNELS_PER_BUS"] = 8
|
||||
self.config["DDS_AD9858"] = None
|
||||
dds_pins = platform.request("dds")
|
||||
self.comb += dds_pins.p.eq(0)
|
||||
phy = dds.AD9858(dds_pins, 8)
|
||||
self.submodules += phy
|
||||
rtio_channels.append(rtio.Channel.from_phy(phy,
|
||||
ofifo_depth=128,
|
||||
ififo_depth=4))
|
||||
|
||||
self.config["RTIO_LOG_CHANNEL"] = len(rtio_channels)
|
||||
rtio_channels.append(rtio.LogChannel())
|
||||
|
||||
|
|
|
@ -105,17 +105,6 @@ static mut API: &'static [(&'static str, *const ())] = &[
|
|||
api!(rtio_input_timestamp),
|
||||
api!(rtio_input_data),
|
||||
|
||||
#[cfg(has_dds)]
|
||||
api!(dds_init),
|
||||
#[cfg(has_dds)]
|
||||
api!(dds_init_sync),
|
||||
#[cfg(has_dds)]
|
||||
api!(dds_batch_enter),
|
||||
#[cfg(has_dds)]
|
||||
api!(dds_batch_exit),
|
||||
#[cfg(has_dds)]
|
||||
api!(dds_set),
|
||||
|
||||
api!(i2c_init),
|
||||
api!(i2c_start),
|
||||
api!(i2c_stop),
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
BUILD_SETTINGS_FILE=$HOME/.m-labs/build_settings.sh
|
||||
[ -f $BUILD_SETTINGS_FILE ] && . $BUILD_SETTINGS_FILE
|
||||
|
||||
SOC_PREFIX=$PREFIX/lib/python3.5/site-packages/artiq/binaries/kc705-nist_qc1
|
||||
mkdir -p $SOC_PREFIX
|
||||
|
||||
$PYTHON -m artiq.gateware.targets.kc705 -H nist_qc1 --toolchain vivado $MISOC_EXTRA_VIVADO_CMDLINE
|
||||
cp misoc_nist_qc1_kc705/gateware/top.bit $SOC_PREFIX
|
||||
cp misoc_nist_qc1_kc705/software/bios/bios.bin $SOC_PREFIX
|
||||
cp misoc_nist_qc1_kc705/software/runtime/runtime.fbi $SOC_PREFIX
|
||||
|
||||
wget -P $SOC_PREFIX https://raw.githubusercontent.com/jordens/bscan_spi_bitstreams/master/bscan_spi_xc7k325t.bit
|
|
@ -1,27 +0,0 @@
|
|||
package:
|
||||
name: artiq-kc705-nist_qc1
|
||||
version: {{ environ.get("GIT_DESCRIBE_TAG", "") }}
|
||||
|
||||
source:
|
||||
git_url: ../..
|
||||
|
||||
build:
|
||||
noarch_python: true
|
||||
number: {{ environ.get("GIT_DESCRIBE_NUMBER", 0) }}
|
||||
string: py_{{ environ.get("GIT_DESCRIBE_NUMBER", 0) }}+git{{ environ.get("GIT_DESCRIBE_HASH", "")[1:] }}
|
||||
|
||||
requirements:
|
||||
build:
|
||||
- migen 0.5.dev
|
||||
- misoc 0.5.dev
|
||||
- llvm-or1k
|
||||
- binutils-or1k-linux >=2.27
|
||||
- rust-core-or1k
|
||||
- cargo
|
||||
run:
|
||||
- artiq {{ "{tag} py_{number}+git{hash}".format(tag=environ.get("GIT_DESCRIBE_TAG"), number=environ.get("GIT_DESCRIBE_NUMBER"), hash=environ.get("GIT_DESCRIBE_HASH")[1:]) if "GIT_DESCRIBE_TAG" in environ else "" }}
|
||||
|
||||
about:
|
||||
home: https://m-labs.hk/artiq
|
||||
license: GPL
|
||||
summary: 'Bitstream, BIOS and runtime for NIST_QC1 on the KC705 board'
|
|
@ -29,13 +29,13 @@ All boards have a serial interface running at 115200bps 8-N-1 that can be used f
|
|||
KC705
|
||||
-----
|
||||
|
||||
The main target board for the ARTIQ core device is the KC705 development board from Xilinx. It supports the NIST QC1 hardware via an adapter, and the NIST CLOCK and QC2 hardware (FMC).
|
||||
The main target board for the ARTIQ core device is the KC705 development board from Xilinx. It supports the NIST CLOCK and QC2 hardware (FMC).
|
||||
|
||||
Common problems
|
||||
+++++++++++++++
|
||||
|
||||
* The SW13 switches on the board need to be set to 00001.
|
||||
* When connected, QC1 and CLOCK adapters break the JTAG chain due to TDI not being connect to TDO on the FMC mezzanine.
|
||||
* When connected, CLOCK adapter breaks the JTAG chain due to TDI not being connect to TDO on the FMC mezzanine.
|
||||
* On some boards, the JTAG USB connector is not correctly soldered.
|
||||
|
||||
VADJ
|
||||
|
@ -44,31 +44,6 @@ VADJ
|
|||
With the NIST CLOCK and QC2 adapters, for safe operation of the DDS buses (to prevent damage to the IO banks of the FPGA), the FMC VADJ rail of the KC705 should be changed to 3.3V. Plug the Texas Instruments USB-TO-GPIO PMBus adapter into the PMBus connector in the corner of the KC705 and use the Fusion Digital Power Designer software to configure (requires Windows). Write to chip number U55 (address 52), channel 4, which is the VADJ rail, to make it 3.3V instead of 2.5V. Power cycle the KC705 board to check that the startup voltage on the VADJ rail is now 3.3V.
|
||||
|
||||
|
||||
NIST QC1
|
||||
++++++++
|
||||
|
||||
With the QC1 hardware, the TTL lines are mapped as follows:
|
||||
|
||||
+--------------+------------+--------------+
|
||||
| RTIO channel | TTL line | Capability |
|
||||
+==============+============+==============+
|
||||
| 0 | PMT0 | Input |
|
||||
+--------------+------------+--------------+
|
||||
| 1 | PMT1 | Input |
|
||||
+--------------+------------+--------------+
|
||||
| 2-16 | TTL0-14 | Output |
|
||||
+--------------+------------+--------------+
|
||||
| 17 | SMA_GPIO_N | Input+Output |
|
||||
+--------------+------------+--------------+
|
||||
| 18 | LED | Output |
|
||||
+--------------+------------+--------------+
|
||||
| 19 | TTL15 | Clock |
|
||||
+--------------+------------+--------------+
|
||||
|
||||
There are no SPI channels.
|
||||
|
||||
The DDS bus is on channel 20.
|
||||
|
||||
NIST CLOCK
|
||||
++++++++++
|
||||
|
||||
|
@ -202,5 +177,3 @@ Interface Type 2 (SPI) and 2A (expanded SPI):
|
|||
+==============+========+========+========+========+
|
||||
| 23 | PMOD_0 | PMOD_1 | PMOD_2 | PMOD_3 |
|
||||
+--------------+--------+--------+--------+--------+
|
||||
|
||||
The DDS bus is on channel 24.
|
||||
|
|
|
@ -43,8 +43,7 @@ Then prepare to create a new conda environment with the ARTIQ package and the ma
|
|||
choose a suitable name for the environment, for example ``artiq-main`` if you intend to track the main label or ``artiq-2016-04-01`` if you consider the environment a snapshot of ARTIQ on 2016-04-01.
|
||||
Choose the package containing the binaries for your hardware:
|
||||
|
||||
* ``artiq-pipistrello-nist_qc1`` for the `Pipistrello <http://pipistrello.saanlima.com/>`_ board with the NIST adapter to SCSI cables and AD9858 DDS chips.
|
||||
* ``artiq-kc705-nist_qc1`` for the `KC705 <http://www.xilinx.com/products/boards-and-kits/ek-k7-kc705-g.html>`_ board with the NIST adapter to SCSI cables and AD9858 DDS chips.
|
||||
* ``artiq-pipistrello-nist_qc1`` for the `Pipistrello <http://pipistrello.saanlima.com/>`_ board with the NIST adapter to SCSI cables; AD9858 DDS chips are not supported anymore.
|
||||
* ``artiq-kc705-nist_clock`` for the KC705 board with the NIST "clock" FMC backplane and AD9914 DDS chips.
|
||||
* ``artiq-kc705-nist_qc2`` for the KC705 board with the NIST QC2 FMC backplane and AD9914 DDS chips.
|
||||
|
||||
|
@ -136,7 +135,7 @@ Then, you can flash the board:
|
|||
|
||||
* For the KC705 board (selecting the appropriate hardware peripheral)::
|
||||
|
||||
$ artiq_flash -t kc705 -m [nist_qc1/nist_clock/nist_qc2]
|
||||
$ artiq_flash -t kc705 -m [nist_clock/nist_qc2]
|
||||
|
||||
The SW13 switches also need to be set to 00001.
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ These steps are required to generate gateware bitstream (``.bit``) files, build
|
|||
|
||||
* For KC705::
|
||||
|
||||
$ python3.5 -m artiq.gateware.targets.kc705 -H nist_qc1 # or nist_qc2
|
||||
$ python3.5 -m artiq.gateware.targets.kc705 -H nist_clock # or nist_qc2
|
||||
|
||||
.. note:: Add ``--toolchain ise`` if you wish to use ISE instead of Vivado.
|
||||
|
||||
|
|
Loading…
Reference in New Issue