Пример #1
0
    def _connect_to_adcs(self):
        """
        Populate the self.adcs attribute.

        Attempt to connect to ADCs on multiple FMC ports,
        by reading the reset register on each of the ADC board's
        ADS5296 chips. If any of the chips associated with an FMC
        port responds, consider this FMC port populated with an ADC,
        and add it to the self.adcs list.
        """
        for fmc in range(NFMCS):
            adc = ads5296.ADS5296fw(self.host, fmc)
            try:
                connected_chips = adc.is_connected()
            except:
                self._error("Failed to check ADC control register on fmc %d" %
                            fmc)
                continue
            if np.any(connected_chips):
                self._info("Detected FMC ADC board on port %d" % fmc)
                if not np.all(connected_chips):
                    self._warning("Not all chips responded on port %d" % fmc)
                self.adcs += [adc]
            else:
                self._warning("Did not detect FMC ADC board on port %d" % fmc)
Пример #2
0
                        help="Strobe ADC sync line")
    parser.add_argument("--diagram",
                        action="store_true",
                        help="Print ASCII waveforms")
    parser.add_argument("--loop",
                        action="store_true",
                        help="Loop through ADCs forever")
    args = parser.parse_args()

    print("Connecting to %s" % args.host)
    s = casperfpga.CasperFpga(args.host, transport=casperfpga.TapcpTransport)

    fmcs = []
    if args.fmcA:
        print("Using FMC 0 (A; right hand side)")
        fmcs += [ads5296.ADS5296fw(s, 0)]
    if args.fmcB:
        print("Using FMC 1 (B; left hand side)")
        fmcs += [ads5296.ADS5296fw(s, 1)]

    if len(fmcs) == 0:
        print("Use --fmcA or --fmcB to select one or both FMC ports")
        exit()

    while (True):
        for fn, f in enumerate(fmcs):
            if args.reset:
                print("Reseting ADCs on FMC %d" % fn)
                for cs in range(args.csstart, args.csstop + 1):
                    f.reset(cs)
            if args.sync:
Пример #3
0
    if args.check_errors and not args.use_ramp:
        logger.warning(
            "WARNING: --check_errors will only produce meaningful results in --use_ramp mode"
        )

    logger.info("Connecting to %s" % args.host)
    s = casperfpga.CasperFpga(args.host, transport=casperfpga.TapcpTransport)

    if args.program:
        logger.info("Reprogramming from flash address 0")
        s.transport.progdev(0)

    fmcs = []
    if args.fmcA:
        logger.info("Using FMC 0 (A; right hand side)")
        fmcs += [ads5296.ADS5296fw(s, 0, logger=logger)]
    if args.fmcB:
        logger.info("Using FMC 1 (B; left hand side)")
        fmcs += [ads5296.ADS5296fw(s, 1, logger=logger)]

    if len(fmcs) == 0:
        logger.error("Use --fmcA or --fmcB to select one or both FMC ports")
        exit()

    for adc in fmcs:
        logger.info("FMC %d firmware has pinout version %d" %
                    (adc.fmc, adc.get_version()))

    #for fmc in fmcs:
    #    fmc.quiet = False