From 5e8888d5f3f33410bb6407017828d8d7b39146cb Mon Sep 17 00:00:00 2001 From: whitequark Date: Mon, 21 Nov 2016 15:13:55 +0000 Subject: [PATCH] Fully drop AD9858 and kc705-nist_qc1 support (closes #576). --- artiq/gateware/nist_qc1.py | 40 ---------------- artiq/gateware/rtio/phy/dds.py | 5 -- artiq/gateware/targets/kc705.py | 66 ++------------------------- artiq/gateware/targets/pipistrello.py | 13 ------ artiq/runtime.rs/libksupport/api.rs | 11 ----- conda/artiq-kc705-nist_qc1/build.sh | 14 ------ conda/artiq-kc705-nist_qc1/meta.yaml | 27 ----------- doc/manual/core_device.rst | 31 +------------ doc/manual/installing.rst | 5 +- doc/manual/installing_from_source.rst | 2 +- 10 files changed, 9 insertions(+), 205 deletions(-) delete mode 100644 conda/artiq-kc705-nist_qc1/build.sh delete mode 100644 conda/artiq-kc705-nist_qc1/meta.yaml diff --git a/artiq/gateware/nist_qc1.py b/artiq/gateware/nist_qc1.py index 918ac0be9..986aa141f 100644 --- a/artiq/gateware/nist_qc1.py +++ b/artiq/gateware/nist_qc1.py @@ -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")), -] diff --git a/artiq/gateware/rtio/phy/dds.py b/artiq/gateware/rtio/phy/dds.py index c19f3c588..76666f809 100644 --- a/artiq/gateware/rtio/phy/dds.py +++ b/artiq/gateware/rtio/phy/dds.py @@ -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) diff --git a/artiq/gateware/targets/kc705.py b/artiq/gateware/targets/kc705.py index a70e33814..d7672b435 100755 --- a/artiq/gateware/targets/kc705.py +++ b/artiq/gateware/targets/kc705.py @@ -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 diff --git a/artiq/gateware/targets/pipistrello.py b/artiq/gateware/targets/pipistrello.py index 88c5fa017..52fb20046 100755 --- a/artiq/gateware/targets/pipistrello.py +++ b/artiq/gateware/targets/pipistrello.py @@ -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()) diff --git a/artiq/runtime.rs/libksupport/api.rs b/artiq/runtime.rs/libksupport/api.rs index f30b099b0..82448c744 100644 --- a/artiq/runtime.rs/libksupport/api.rs +++ b/artiq/runtime.rs/libksupport/api.rs @@ -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), diff --git a/conda/artiq-kc705-nist_qc1/build.sh b/conda/artiq-kc705-nist_qc1/build.sh deleted file mode 100644 index 855f2bdf3..000000000 --- a/conda/artiq-kc705-nist_qc1/build.sh +++ /dev/null @@ -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 diff --git a/conda/artiq-kc705-nist_qc1/meta.yaml b/conda/artiq-kc705-nist_qc1/meta.yaml deleted file mode 100644 index 2ee0b5b54..000000000 --- a/conda/artiq-kc705-nist_qc1/meta.yaml +++ /dev/null @@ -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' diff --git a/doc/manual/core_device.rst b/doc/manual/core_device.rst index eae66caa2..9f3bf48a7 100644 --- a/doc/manual/core_device.rst +++ b/doc/manual/core_device.rst @@ -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. diff --git a/doc/manual/installing.rst b/doc/manual/installing.rst index c3090337b..ae111a7d9 100644 --- a/doc/manual/installing.rst +++ b/doc/manual/installing.rst @@ -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 `_ board with the NIST adapter to SCSI cables and AD9858 DDS chips. - * ``artiq-kc705-nist_qc1`` for the `KC705 `_ board with the NIST adapter to SCSI cables and AD9858 DDS chips. + * ``artiq-pipistrello-nist_qc1`` for the `Pipistrello `_ 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. diff --git a/doc/manual/installing_from_source.rst b/doc/manual/installing_from_source.rst index c25e74bdf..b2bbe37a2 100644 --- a/doc/manual/installing_from_source.rst +++ b/doc/manual/installing_from_source.rst @@ -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.