#!/usr/bin/env python
"""
acq2106_wrpg_clkout_demo.py ... configure demo clock output on SYNC_OUT CLK
"""
import argparse
import math
import time
import acq400_hapi
[docs]def wrpg_clkout_demo(args):
uut = acq400_hapi.Acq2106(args.uut[0])
uut.s0.SIG_SYNC_OUT_CLK = 'CLK'
uut.s0.SIG_SYNC_OUT_CLK_DX = 'd6'
uut.s5.CLK = 'external'
uut.s5.CLK_DX = 'd1'
uut.s5.CLKDIV = args.clkdiv
fset = acq400_hapi.freq(uut.s0.SIG_CLK_MB_FREQ)/args.clkdiv
converged = False
while not converged:
fout = acq400_hapi.freq(uut.s0.SIG_CLK_S5_FREQ)
converged = (fset/fout if fset < fout else fout/fset) > 0.95
print("set {:.0f} fout {:.0f} {}".\
format(fset, fout, "OK" if converged else "waiting.."))
if args.loopback:
uut.s0.SIG_SRC_CLK_0 = 'HDMI'
if not uut.s0.SIG_SYNC_BUS_OUT_CABLE_DET:
print("ERROR cable not connected")
return
converged = False
while not converged:
fin = acq400_hapi.freq(uut.s0.SIG_CLK_EXT_FREQ)
converged = (fin/fout if fin < fout else fout/fin) > 0.95
print("out {:.0f} back {:.0f} {}".\
format(fout, fin, "OK" if converged else "waiting.."))
[docs]def get_parser():
parser = argparse.ArgumentParser(description=" wrpg clkout demo")
parser.add_argument('--loopback', default=0, type=int, help="use loopback cable")
parser.add_argument('--clkdiv', default=20, type=int, help="clock divider value")
parser.add_argument('uut', nargs=1, help='uut')
return parser
if __name__ == '__main__':
wrpg_clkout_demo(get_parser().parse_args())