From 674ec78c41e98eb7c86c370d46ab28de2251e455 Mon Sep 17 00:00:00 2001 From: Stephan Philips <s.g.j.philips@tudelft.nl> Date: Wed, 3 Jun 2020 14:23:07 +0200 Subject: [PATCH] spi rack driver --- .../HVI_single_shot.py | 98 ++++++++++++++++++ .../HVI/AWG_parallel_test_no_dig/__init__.py | 0 .../single_shot_alike.HVI | Bin 0 -> 25486 bytes .../single_shot_alike.HVIprj | Bin 0 -> 12301 bytes .../single_shot_alike.HVIprj.bak | Bin 0 -> 12301 bytes .../single_shot_exp/HVI_single_shot.HVIprj | Bin 12118 -> 12118 bytes core_tools/drivers/spi_rack.py | 9 ++ 7 files changed, 107 insertions(+) create mode 100644 core_tools/HVI/AWG_parallel_test_no_dig/HVI_single_shot.py create mode 100644 core_tools/HVI/AWG_parallel_test_no_dig/__init__.py create mode 100644 core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVI create mode 100644 core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVIprj create mode 100644 core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVIprj.bak create mode 100644 core_tools/drivers/spi_rack.py diff --git a/core_tools/HVI/AWG_parallel_test_no_dig/HVI_single_shot.py b/core_tools/HVI/AWG_parallel_test_no_dig/HVI_single_shot.py new file mode 100644 index 00000000..8bbfdcb5 --- /dev/null +++ b/core_tools/HVI/AWG_parallel_test_no_dig/HVI_single_shot.py @@ -0,0 +1,98 @@ +""" +define a function that loads the HVI file that will be used thoughout the experiments +""" +import keysightSD1 +import core_tools.HVI.AWG_parallel_test_no_dig as ct + +HVI_ID = "HVI_single_shot_no_dig.HVI" + + +def load_HVI(AWGs, channel_map, *args,**kwargs): + """ + load a HVI file on the AWG. + Args: + AWGS (dict <str, QCoDeS Intrument>) : key is AWGname, value awg object. + channel_map (dict <str, (tuple <str, int>)) : key is channelname, value is AWGname, channel number + Returns: + HVI (SD_HVI) : keyisight HVI object. + """ + for channel, channel_loc in channel_map.items(): + # 6 is the magic number of the arbitary waveform shape. + AWGs[channel_loc[0]].awg_stop(channel_loc[1]) + AWGs[channel_loc[0]].set_channel_wave_shape(keysightSD1.SD_Waveshapes.AOU_AWG,channel_loc[1]) + AWGs[channel_loc[0]].awg_queue_config(channel_loc[1], 1) + + + HVI = keysightSD1.SD_HVI() + error = HVI.open(ct.__file__[:-11] + "single_shot_alike.HVI") + print(error) + + error = HVI.assignHardwareWithUserNameAndSlot("Module 0",0,2) + print(error) + error = HVI.assignHardwareWithUserNameAndSlot("Module 1",0,3) + print(error) + error = HVI.assignHardwareWithUserNameAndSlot("Module 2",0,4) + print(error) + error = HVI.assignHardwareWithUserNameAndSlot("Module 3",0,5) + print(error) + error = HVI.assignHardwareWithUserNameAndSlot("Module 4",0,7) + print(error) + + error = HVI.compile() + print(error) + error = HVI.load() + print(error) + + + error = HVI.start() + print(error) + + return HVI + + +""" +define a function that applies the settings to a HVI file and then compiles it before the experiment. +""" + +def set_and_compile_HVI(HVI, playback_time, n_rep, *args, **kwargs): + """ + Function that set values to the currently loaded HVI script and then performs a compile step. + Args: + HVI (SD_HVI) : HVI object that is already loaded in the memory. Will be loaded by default. + playback_time (int) : #ns to play the sequence (assuming every point is one ns) + n_rep (int) : number of repertitions. This is the number of reperititons that you set in the pulselub object. + Returns: + None + """ + # No need ... We will overwrite the registers instead of a re-compile for updated speed :-) + pass + +""" +Function to load the HVI on the AWG. This will be the last function that is executed in the play function. + +This function is optional, if not defined, there will be just two calls, + HVI.load() + HVI.start() +So only define if you want to set custom settings just before the experiment starts. Note that you can access most settings via HVI itselves, so it is better to do it via there. +""" + +def excute_HVI(HVI, AWGs, channel_map, playback_time, n_rep, *args, **kwargs): + """ + load HVI code. + Args: + AWGS (dict <str, QCoDeS Intrument>) : key is AWGname, value awg object. + channel_map (dict <str, (tuple <str, int>)) : key is channelname, value is AWGname, channel number + playback_time (int) : #ns to play the sequence (assuming every point is one ns) + n_rep (int) : number of repertitions. This is the number of reperititons that you set in the pulselub object. + """ + + nrep = int(n_rep) + length = int(playback_time/10 + 200) # extra delay, seems to be needef or the digitizer. + + for awgname, awg in AWGs.items(): + err = awg.awg.writeRegisterByNumber(2, int(nrep)) + err = awg.awg.writeRegisterByNumber(3, int(length)) + + # start sequence + err = AWGs['AWG1'].awg.writeRegisterByNumber(1, 0) + err = AWGs['AWG1'].awg.writeRegisterByNumber(0,int(1)) diff --git a/core_tools/HVI/AWG_parallel_test_no_dig/__init__.py b/core_tools/HVI/AWG_parallel_test_no_dig/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVI b/core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVI new file mode 100644 index 0000000000000000000000000000000000000000..4783835f6874099d115a7c88c6f21b8c42ff4627 GIT binary patch literal 25486 zcmeI3NpBoQ6vul^0)#CIi`Zcx3l0z%+W`_*hma7KEF@tQLf9gfWe7>I9Rjxz2gHpF z5*(1oN8rkGK;jE<;J_!~%$)=Lf7ShZ-ZVWEN17>nlzLK4E&cDRSFc`efA!p!W!V)9 z+ZB)<jWPW;vi161e4mmm`&Sa;2FNiz{qrXBS+-80p>UXt<Z6XOXHK3wHP>uW-lDRd z6IW6^HQAcnt3-CU!qJJ=fr(b@(C(?JUAvC$k+fPzTCK@eYhvngYT@nc6_B9O9ZJyr z93>KzLP(<q=?fcs$KZ0A{%RU<Ke<OpTD`7#g$T7N`<je|Mv-e2j?K+4EG^G1=DiNZ z#S{9`g_xkkgeTP5g_x`&=yn%ks)}H=DEksvE^X^ygNN~@y}{aK^y5n#FG40|;6}D7 zq`loj!SH@c`!g`KZ$o3_!nl(jk_v5Wk4Z^eF$FtYKi7|yU5}=MZ(sdyY|OMW#FcXV zw_yCnbZ9-+ICwwD{?U7%Wo=fiASlylgvGlk2@(D=EWN7ZuLg(Jl<$&Hw=L5sHj2_7 z_F#xH{kQfu6yr}>L?e{`KUMfYZO8I|HPu$gCHUWF%at+vQ@KZ#rGrV(q+5R**~W;L z&%03CKOD-Unm#B{wm+r?XceTg|FZ{2m3G;h8ut6Ym17mwK+6v}F700~1OslMUv>BD zA;-=iuIiw67D>i|XUCUk7neJa^OP9`(D%hd&X3e{eBYVVCz}%&zQ{+?;`Op_UXs_l zMbPSzcdN>-RbWlDu&qcdDur7Rby;8zKcG;3m*<S%yaK{m6U@2OOLNQbEzZrJ{Os31 za-}TJU+Ji7lcK7sHBGe$DuDfwjD$SzEMdOi|H&J%n62gp^)N5Z`*E|%=rj6R=!N0F zW1$y@TbYGkm>Yz#z{>lL0z%#Ba^T3ZP2c7guvn+GQf;#dF$<>!UbU_%8Eiq9&1S^d zXPW|8o>`zS0<HS+v+@Y);$<fm7v|^Z7H8g}f-JL`YOYbG);w{YWqV=Fs>Ho8W>w-| z7_%xdm+*rM2=^Owd~<eT`RwPp?iODwt-ao)F$E|KH!A(O0zw)y9^U`fiRR8GgS7#C z=S+_Q=?O^EzbGJBgt;(#e!jW1eCBNHFP?VZL&ME0uwpNaw_-1hw_-1hw<6ZCrREK# zJ4?;v-#?*nNBv$)4OLj!s&sX^*ru|4NR%kVmKw`r@Lo#|?@|XcqrhP7XDzhF#bRtf zu7J!cm{Rtfa{4%<;IXX3U=hQT2TSa+Zx&^WN-Sx{9=yliqP*4HJgiJ1_>K9B>HDF| z3~M;@U>SE`FP?8$+Xqw>W&wDQW&JViCM;YCKESN;SQZ+?9{sHVDx!Vx9*dtDcKSPI z3Sl6t`r;5^30?>41MlnQOltMoSg0st8wBUEA1H728kRg*VvohItzK_4!?X3`Xe;FR z0*{sWJ*>wFmJDFx_hgM2f^V;)bk5gu0e`+{9wF>}#6!}tjn@T{A@W_;3Wgu!_4Ex% z{GN=_m<~pdH4fO{B=LJ;TZ>Jww9WpB-;*We{|rDZ|5sCOg<O~njl}PnIU>d7{<li} zUO3xE>T6vy?Xs}4|6BR6_y2tN)%k)$dt_N{e$VfJoP!2^>BgLl-#iJ)Z3^7sBJg{B z=fM4bB>BC&q&V)l2KhZc>EH@HqWoS{szXK%g5SGe^)PGt^LvaXNalg@d(1QLU6&ER z7h|bm%3LzP_r6{VM<2z;{U}+>@0}~KJU1-w*7199*I;>%v9I!bC~XGv{2qQ|zA~;f z@{xjJLqU-Ti?88VhTT#;Q<QnGs;NA9kG)TMtJiaDO!#I6%f4k;&+pMbcwaBydl}aA zdo0jZeeZNwuLJuAcwg`B4r^nfqQKdK_t;Yf7Cj70x{lwwwZJOsvYFvIFW_h^<oCi? zXo=s$dWqk|r(z59U=^jj->?WIelPAwFzd?uP5OQ>eZLp=)3xC1ZS(lV@5vI4#P69u zM2b86Preay4T~vd`-$J{-v4b77!dX-%MUm%?SDD)dk|n=xJzEjM>U)u?BvcTAJuoM zoAEP#Z@j=n;P)O>QzOgoJuKz9L#{!7?-8jr!u(!K>aSB61iv?_dM?iIF_s{i2gdL1 zQkw1NGUE4`i?&=4U+Pk$SAt;hUP}#A2C591QJ~F>e!n*-kSS)|kBVyfy-x}(&kf7F zb^P8tHCWzb?5q6VV-D;2J^aReg|!noqd=Qp$b-e#@GHYkDQ#HK?=cI&d+db6dTxyg z58h)Rby&~u(LQ*O-RZEN-(!KU>idwxdL8Hwcwg@hhqbX#QQ+*rd+g}~i!BUGx{lw& zx$10Yc+Mg?+6wu-@E_8|?_oWrZu)*tMu;lRgH@Ey`C2ZJ_`SFz!K`DwLbM>J|L4Xv zKdrUdD}pc>>HoP=ui2Q~?4SOhi~ptX_rhF^_fzhFiQntq|7{2ozc;%7&t(ifzqecY zNZ;>0siwH!kL34zPfKz3r8UU!Ju9_FnBSY0`h(*4o>yJmS^Iy#$5?`79vHv(g3{c( z62BMR99Jj6&Dn8G$spVH%Q4LagAbJ7n^%S5=&jhe9~y&$n^EvQ(Rt-f8N-sV<M-aJ z!Kx@@?5q6Veuwq^9)4rKGOjf8v4ZIk3W_{fe9h~-uXv`Y>sz#G<-vRGUgfP`&#f`x zrz_a!9M<!Dv=83b`;5bSevbvZs_#<{>vdq?0PpMF<FGasDhiw(c#l0>VCkP>N!Rgv zPZU^1T{bg3cV(P(h5X(w-b?%*R!IDwj1XOz2dgOM{f5OQ@q2Mcf?3CUg=j%c{9au1 z(^|Vc&@dQ@-}~PIZ<s@Z$<6+W-^2eBzc);OtEs!({}R8~z5ko7#*_&AlNAg$F700~ z1cR-=Z*8mn|6B+#FI$zVeuLNV(jB%ez0>c~&G>PLMh+@O;`d%wQ*>`6`Mp=AIQ!BX z<o6Cstr6z;j!OM?3WNB5@0jYr^ZWCAj3r3sf$@7Ml;+-*_`TrfxH_TVQlrN~`Ykn9 z2f!Hx=Kn>%-&+vK)-mILR8-6FeOh37Zdl%}<M-aH!SWtsU*-2+cUaHw;Wy?h<4Pk- z3bg5kJXm}UzcTD`r48%9-(wbl_t@7Q)^lr2c<>&3#9=+ZNBiJC_K?GRevbvZs_!cf o>vcG&a`3+1mmJo{LPdeI1Mjhm1r}QvmUJDz_hNxn)RW))58crzApigX literal 0 HcmV?d00001 diff --git a/core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVIprj b/core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVIprj new file mode 100644 index 0000000000000000000000000000000000000000..fcd2e5c1abb1cd27d077ba3ed775932ddc055a66 GIT binary patch literal 12301 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 literal 0 HcmV?d00001 diff --git a/core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVIprj.bak b/core_tools/HVI/AWG_parallel_test_no_dig/single_shot_alike.HVIprj.bak new file mode 100644 index 0000000000000000000000000000000000000000..fcd2e5c1abb1cd27d077ba3ed775932ddc055a66 GIT binary patch literal 12301 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 literal 0 HcmV?d00001 diff --git a/core_tools/HVI/single_shot_exp/HVI_single_shot.HVIprj b/core_tools/HVI/single_shot_exp/HVI_single_shot.HVIprj index ed3c4ab426cfae488bdfaf096363e385b09e4ea7..c90507996b8758ab3a2e2f5e624938a6ca353083 100644 GIT binary patch delta 161 zcmcZ>cP(xMr#55kWG-!A#`wt*+GUK1lg|U$$&+PuG=XHcvfSiUoxP0dlNANE8Pg^| zkkXb+Wnf@n1Y!_S@Pp7GGI{buLE*`Mx;&Hb2=a&~14W{Nm;;D4fEWalCL0QiizWhD eAX#LYgvkyv;*($L`b_Q-;$a2pi=AAo_ZR@=<{?u6 delta 135 zcmcZ>cP(xMr#55yWG-!A#@NXb+GULKlg|U$iIZh@G=XHcvfSiUoxO~ylNANE8B-=d zkkXb+W?*1o1Y!_S@Pp7GGI8=mL1D(E$rlC1SrdW$=*jPOr6=16^Gp`g^O@`|!^4^m X6pfv14;1YY;$e*j^3o?4>pcblc%C6` diff --git a/core_tools/drivers/spi_rack.py b/core_tools/drivers/spi_rack.py new file mode 100644 index 00000000..6b577a24 --- /dev/null +++ b/core_tools/drivers/spi_rack.py @@ -0,0 +1,9 @@ +from qcodes.instrument.base import Instrument + +import spirack + +class SPI_rack(Instrument): + def __init__(self, name, address, baud_rate='115200', timeout=1): + super().__init__(name) + self.spi_rack = spirack.SPI_rack(address, baud=baud_rate, timeout=timeout) + self.spi_rack.unlock() -- GitLab