#!/usr/bin/python #from katcp import BlockingClient, Message #import pylab,struct,stats,time import pylab,struct,time import corr,katcp,numpy,sys,logging,socket #device_host = "192.168.100.72" device_port = 7147 #my_corr=corr.katcp_wrapper.FpgaClient(device_host) if __name__ == '__main__': from optparse import OptionParser p = OptionParser() p.set_usage('[TUT7_PYSCRIPT_FILE] [options]') # p.set_usage('wb_poco_dly_config.py [options]') p.set_description(__doc__) p.add_option('-b', action='store', type='string',dest='file_name', default="tut7_coarse_delay_blk_2011_Sep_26_1250.bof", help='''Specify the .bof file''') p.add_option('-d', action='store', type='int',dest='dly', default=0, help='''Sets Integer delay in terms of integer clock cycles (0 to 2k)''') opts, args = p.parse_args(sys.argv[1:]) if args==[]: print 'Please specify a ROACH board. \nExiting.' exit() else: roach = args[0] my_corr=corr.katcp_wrapper.FpgaClient(roach,device_port) (opts, args) = p.parse_args() if (opts.file_name==None): print "Please specify the .bof to Program the ROACH board" exit() while not (my_corr.is_connected()): pass print "Connected Successfully...!!!!" print "Programming FPGA" my_corr.progdev(opts.file_name) print "Programming Done.......>!!!" time.sleep(2) my_corr.write_int("sync",0) my_corr.write_int("delay",opts.dly) my_corr.write_int("sync",1) time.sleep(5) my_corr.write_int("snap64_ctrl",0) my_corr.write_int("snap64_ctrl",1) #int data_in0,data_in1,data_in2,data_in3 a=my_corr.read("snap64_bram_lsb",2048) b=my_corr.read("snap64_bram_msb",2048) datain=list(struct.unpack('>%iI'%(512), a)) dataout=list(struct.unpack('>%iI'%(512), b)) data_ina=[] data_inb=[] data_inc=[] data_ind=[] data_outa=[] data_outb=[] data_outc=[] data_outd=[] for i in range(512): data_ina.append((datain[i])/2**24) data_inb.append(((datain[i]*2**8)/2**24)-(data_ina[i]*256)) data_inc.append ((datain[i]*2**16/2**24)-(datain[i]*2**8/2**24)*256) data_ind.append( datain[i]-((datain[i]*2**16/2**24)*256)) data_outa.append((dataout[i])/2**24) data_outb.append(((dataout[i]*2**8)/2**24)-(data_outa[i]*256)) data_outc.append ((dataout[i]*2**16/2**24)-(dataout[i]*2**8/2**24)*256) data_outd.append( dataout[i]-((dataout[i]*2**16/2**24)*256)) #print "datain=%x"%(data_ina[10]) #print "datain=%x"%(data_inb[10]) #print "datain=%x"%(data_inc[10]) #print "datain=%x"%(data_ind[10]) #print "diatain=%x"%(datain[10]) start = 0 stop = 500 pylab.subplot(411) pylab.ioff() pylab.grid() pylab.plot(data_ina[start:stop],'ro',data_outa[start:stop],'b+') pylab.subplot(412) pylab.ioff() pylab.grid() pylab.plot(data_inb[start:stop],'ro',data_outb[start:stop],'b+') pylab.subplot(413) pylab.ioff() pylab.grid() pylab.plot(data_inc[start:stop],'ro',data_outc[start:stop],'b+') pylab.subplot(414) pylab.ioff() pylab.grid() pylab.plot(data_ind[start:stop],'ro',data_outd[start:stop],'b+') pylab.show() #bram_snap=list(struct.unpack('>%iI'%(16384), a)) #for i in range(16384): # if (bram_snap[i] >127): # bram_snap[i]=bram_snap[i]-256 #print "Kurtosis of the noise is %f\n"%(stats.kurtosis(bram_snap)) my_corr.stop() #pylab.hist(bram_snap,16) #pylab.show()