def main(): parser = argparse.ArgumentParser( description='Program the FPGA on Basys 2.') parser.add_argument('--device', type=int, help='Device index', default=0) parser.add_argument('map_ids', type=str, nargs='+') args = parser.parse_args() # without with-as so the port is available when executing with python -i with usb1.USBContext() as ctx: devs = get_devices(ctx) if args.device >= len(devs): if not devs: print('No devices found.') else: print('Invalid device index (max is {})'.format(len(devs) - 1)) sys.exit(1) dev = devs[args.device] dev.start() port = dev.depp_ports[0] port.enable() # load & upload the maps maps = list(map(load_map, args.map_ids)) if len(maps) > MAX_MAPS: print('ERROR: max allowed maps is {}, got {}'.format( MAX_MAPS, len(maps))) sys.exit(1) upload_maps(port, maps)
#!/usr/bin/env python3 import usb1 from adepttool.device import get_devices from adepttool.jtag import Chain with usb1.USBContext() as ctx: devs = get_devices(ctx) for i, dev in enumerate(devs): print('DEVICE:') print('\tPN {dev.product_name}'.format(dev=dev)) print('\tUN {dev.user_name}'.format(dev=dev)) print('\tSN {dev.serial_number}'.format(dev=dev)) print('\tFW {dev.fw_version:04x}'.format(dev=dev)) print('\tCAPS {dev.caps:016x}'.format(dev=dev)) print('\tPI {dev.product_id:08x}'.format(dev=dev)) dev.start() print('\tDMGT CAPS: {dev.dmgt.caps:08x}'.format(dev=dev)) for port in dev.djtg_ports: port.enable() print( '\tDJTG PORT {port.idx}: {port.caps:08x} speed {speed}'.format( port=port, speed=port.get_speed())) port.disable() chain = Chain(port) chain.init() for jdev in chain.devices: print('\t\tJTAG IDCODE {jdev.idcode:08x} [{jdev.name}]'.format( jdev=jdev)) chain.close() for port in dev.depp_ports: