Source code for acq1001_awg_demo

#!/usr/bin/env python

"""
upload to AWG and optionally run a capture.
data for upload is either File (host-local data file) or Rainbow, a test pattern.
assumes that clocking has been pre-assigned.

usage: acq1001_awg_demo.py [-h] [--files FILES] [--loop LOOP]
                           [--capture CAPTURE] [--nchan NCHAN]
                           [--awglen AWGLEN] [--post POST] [--trg TRG]
                           uuts

acq1001 awg demo

positional arguments:
  uuts               uut

optional arguments:
  -h, --help         show this help message and exit
  --files FILES      list of files to load
  --loop LOOP        loop count
  --capture CAPTURE  run a capture (assumes ADC present)
  --nchan NCHAN      channel count for pattern
  --awglen AWGLEN    samples in AWG waveform
  --post POST        samples in ADC waveform
  --trg TRG          trg "int|ext rising|falling"
"""



import sys
import acq400_hapi
from acq400_hapi import awg_data
import argparse
from future import builtins
from builtins import input

        
[docs]def run_shots(args): uut = acq400_hapi.Acq400(args.uuts[0]) acq400_hapi.cleanup.init() if args.capture > 0: uut.s0.transient = 'POST=%d SOFT_TRIGGER=%d' % \ (args.post, 1 if args.trg == 'int' else 0) shot_controller = acq400_hapi.ShotController([uut]) for sx in uut.modules: uut.modules[sx].trg = '1,1,1' if args.trg == 'int' else '1,0,1' if args.files == "@ALLFULLSCALE": work = awg_data.AllFullScale(uut, args.nchan, args.awglen) elif args.files != "": work = awg_data.RunsFiles(uut, args.files.split(',')) else: work = awg_data.RainbowGen(uut, args.nchan, args.awglen) for ii in range(0, args.loop): print("shot: %d" % (ii)) for f in work.load(): print("Loaded %s" % (f)) if args.capture > 0: shot_controller.run_shot(soft_trigger= True if args.trg=='int' else False) else: input("hit return when done")
[docs]def run_main(): parser = argparse.ArgumentParser(description='acq1001 awg demo') parser.add_argument('--files', default="", help="list of files to load") parser.add_argument('--loop', type=int, default=1, help="loop count") parser.add_argument('--capture', type=int, default=0, help="run a capture (assumes ADC present)") parser.add_argument('--nchan', type=int, default=32, help='channel count for pattern') parser.add_argument('--awglen', type=int, default=2048, help='samples in AWG waveform') parser.add_argument('--post', type=int, default=100000, help='samples in ADC waveform') parser.add_argument('--trg', default="int", help='trg "int|ext rising|falling"') parser.add_argument('uuts', nargs=1, help="uut ") run_shots(parser.parse_args())
# execution starts here if __name__ == '__main__': run_main()