From 6c379514312b1b03e48c9ffb2aa380609ce53526 Mon Sep 17 00:00:00 2001 From: guocheng Date: Fri, 19 Sep 2025 11:31:25 +0800 Subject: [PATCH] init project --- .gitignore | 2 + assets/chip_schematic.png | Bin 0 -> 169998 bytes ids/读出子系统IDS表.json | 5600 +++++++++++++++++++++++++++++++++++++ readme.md | 6 + script/ids_import.ipynb | 191 ++ 读出芯片用户使用手册.md | 75 + 6 files changed, 5874 insertions(+) create mode 100644 .gitignore create mode 100644 assets/chip_schematic.png create mode 100644 ids/读出子系统IDS表.json create mode 100644 readme.md create mode 100644 script/ids_import.ipynb create mode 100644 读出芯片用户使用手册.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..27dcd7e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +script/读出子系统IDS表.xls +读出芯片用户使用手册.pdf \ No newline at end of file diff --git a/assets/chip_schematic.png b/assets/chip_schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..704c21b115e71b33284ab18fb767fb0e1b6aa5ea GIT binary patch literal 169998 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
Je z=}PZP7#HS=_83YnB%YcIqe?3F@7B6S{)uf-s9+CEgzP3Grd5v}_vdDF-q|y5VFM{H zs@9738&1;uY&_%|q4{$HY4nb5c+!b!ZW;OKRnIdAKQd;#^zqc&b7AEv8kuw)07&h2 zk+5A7uQzPV5CI<^SXE1Hc{M8f5GpWVfF1oeop8TwHaOH1Cih#_hKY5^%F?j|6&LKU zaA>&d>&{fW+B|#0a|d32G>OB$^{pLbNKtaac{?cPx0(Y$Qcv!CFY*OLsas&j>>h}+ z*yEsra|12-C_DP=ho>;9yZB! z+i1=E`Y_pc9=aC3Zgdx8!@|kg;}E&U1TdSr@#(ikXr^7+9JiaBNdzKOIyH zJEEb06Y6>#n(4L_hrSTN=~Q{zKWTvoq8OBuxjL{wpatX&0N~TLc4E`Li@hmE910Y1 zSXM+=|KT$wDwcj(XyT+2A?L89=mIYkkNCQ^0ms)e6;hD}!Y4+uI8Uli1Z~TFO!q}G zSM3oG^f}r2A%XZX=SZo~75;$RhKW8!0s#}grABK&h%OWyqJ8)0tkLe5SOI7&J0nK9}-tD8E3fB-};}a@m`4fTU4l5(FWQj5b04yvueAT{+o`G$^2MO ze4hsSGK-j-Kg|3J&9RLSxIA{MP`MCy@c`>AW1??h!YL1#8&m!!VJam|9+fb9;Sm6t zNVA4T_3!DaCvTG%+HW&7Tuuh92kJ=TB>w-)71kla@llLWhI?8pBg!6P%~ENK-OL=aHvAq1aG#uq}!$RW?rmZRow_SFqBBks$naQbGE`M$sljh5(b-~ zQr?Jjw(_c$wST@$ylyVa_RBFm~#E%Oy<-5`Rwp zC|cv7o_#e+z{IQ3eA5^)MB!H@UDZ&EIueFgOM-}A_T#T9elG-E-^S2Q#0pKV%VxV;6Sd}R6^T66ERFWQaaw1T zN0dg^WEUJD+oc)Yr=N#DTIw>qSlrc{Hf6VAVq?#kThnzpoV-+A4Pk;(_*c-p;>=Hi zb3|Df?UmA{ucg8Z0{58L(C@XK6~C1HyjF z)yPmQV{)vg1b=pmx0FVRog0R~1Sn*n#G4^ZZ^QMka2dV`;nAymXu|LeMXaZwa z+05%7wk{JjXb$PgiUU^Gc8zI@hXWJRkn#VHiRwE+dVO_LjO+Aa$vZg@ikFZ@xPNo{s+ZCN{JUS2H*{CG=_nUB33)B-W5}zbu6%zW~q%$5PBW27^DFw!HDTatDO|8@~z+49x$|F6kdM1GpWbt0~b5QKc!oY+mCu;?e`-xI>#C zm@Qw%LE6{|7}3=yyi0Oh|$z&^kAJ< znW^tdhO07PoG#OCI`4o5*~_M1y&uKQdOvdN`&EWttRa)U>L6v?)_AG3FGoLt1k))F}H}pPXd>}BV7RkZJXv=OmtU}724lfXX(m?jBOFTJ|b5> z_LISYwEAiK16RU#6zwl0S}H)u$q5GLMIq0{*!I;+u{*H4289<8=`nY~RTrk#bDFWx zOTHZu--mMY@*r(&Y(~v*B&z_=QW#-j;Z24A9;?}HKpjg6pCE~$>bz3>dVzvtRzFQM z{ZdgWmt7`=H=&U)G=xtsiHZok%?L2{+I6fs`Qh3+y|%Go+G+dIEgs-`HgaO*59uqF zY_M~$zM|U?hWYoCc-7aJbbT#QJs+bJ*4HKGP)QPpXBBk=dPr2CTEzc?kWEhBMj&o6HaeOu?E)ChqsY>76oE@_lmVz0i%eQp z71B1)fic+gC9NJL!ng~cZd8G3lO&8lNv_>z^Ml){aMZ&(kG9sbxWapVIdPe@-$Vyc`hREJ+_rh=xiBx-Ji^A@oF;i;x}yUEuyv+SR@2b}-if(|1-jizJ>Z^&i$&G- zAJ+VRkED{s3_#VIaRFG?I@={Rxw*L&hFvhHoX|DEO?T_%ZcWn5i@#2Rn5}ANW2*T7 z=4f376_D|znHa+VU&4=fQQO$1+P<9?~1K`Tn^&EIfScc0hE>TUDD( zTSm-fqjQ_u;vMMDtT(04$;qjsW_W1FZQag@?#&-!u2 z25sLEnZC`u#-+BMlK~z12Ad{IFm|%anIiKxD6*6wbzg)rk%f~h;N^eX(|Ap9JW(#DKd184`L4m2j0oCtqY-}79jEJ*YT;AFV zXcn8L#SrMH`(=LxJ)RwaM2NgM-G@No-kYa zZOC-m1$~_!Xx7DukXb*@1w5ce{iQcw{KUGtZ*$5~1xGclM22NqZB zKJQN@%*Lmr3a2_TX>n+sm1o6eI0`DBj`3mQOb@+HS7hZUaYCM5EsC@TgzcbN^FUr@p(k@gA8I z6i2Ht14Q{!TU>Amz}**fNMOc_q3L2i#RPDYnMV*Z0xtS(&sh60_OVKnW;S)fw^aK**Z_vyBw$^awT1v==uTx`(*)Jb91z{ z90GMQF(@wEWuEgow=H>M2@@ALJmLZ44CW*6uDSyG*@v!J=`8XWk9z4W`XfTkzK}D5 zR>l^EDgm!IslL!Gb}#KJyP7MLU)QV$SD|fY_qX_=Ztc{j~W!Usn6G_!ZhOG^#5?%}>8@ zL+o!|2aAmhqq1b~!=j?L5nh3HqNJk(5cpQKQ)^vDs>ZoV6ciL}!C>E5;38BPo|3PZ z@NXCn$iZ7;Y#2T6cRoZSS&E5@UcP6UZU$9VReQ9X&BKBWNE_S5@jEH9Se0Zh0`;0rz? zG&YU;zo3b8<-Jf0d_e(+2K68-)Cd3>Jh-QE|vaw%XG2l(}b zL^h>bCnhI5W%TXtnqFiQ-~dH%piqnXGa>>3D10jE>PAy%d11WW`M!nD6stR-iTKiU zbE|vpMg!tV^CL@1BP#-}#n03;T1!oeYm*U|jrbgO-~0I`S7*D4cUND*7u-bCKo==m zPFdOLN_k~!YAXKjNLuJw>r;#;;}Id?Kw{$xxW;k^{pEFygctl3t zG}=4M=&sJ^^}(zR93T3w>;Yt<+1A$9EUu?IwjR6h1%isORe*mP%Imbd{`_#Y$!@0u zx zEEu{-r~u&9r_%F%xnaf2c$!vL*tqBef##k7?}a*oI$$k9mN#Dx3K7ZNwnL)I4OUCd zY^>Gl=RdbWw=Hfm2fV|IZTh~uVr6gH ziJiWG4+dCE!$!cRb!i))bMX2Y1L;3nMTUH}q;ZBPxx^d;Bje5?+@m(VdYPD{WN7_u zJ?pzn1K0opbC2@?Ne7{`6h|UNq3|z5w=YMu{CQU_nR6Nbdo`f$yhC451$7O`@Cmec z%nM*cQyvA+f8K7n3E!a)kK^*k9y^S{F1+@g2lWcFh#ryNYF)QNOnD-W(YHnI{ma5# zF1(^4o~uVysJ;^z@DJQ~;xB(O*IbAaN-7%=Bs5TkjC;Y!6pI6{zY@D1huClx5 zKDxgn6m-enmkjW1K*{^Y8pqp$g_r7zHD9&KF^A z!8gV=>a-6jP@QGShBV3jIfC~~b;Yz3y6MszPOOz+6sk>IH?=7U5xXiGlu={#jsHsz%C1HHiBmem#YImr`$ z7T-uO!kBx?(KF_!#_F++TLC@Jl#UNUFVO@+sE0FAcXhjFP3N26uf&CfgbRN#euT2D zE4rfj|DOgBRk(?q*m~jH1a}UZY?P-`IK`d*L!33qWiLvi9Fo ztHGQE=!vkDarAW3IKrwm_(T^D?~?uc4l`<2yoLR*ZQWutl9T|PIopg{p5p6&ooa0@ zaQiXl6Ha#ZA|}Z41s(OMMB*}$UE}bP!zKTooJ18uyYo6;4Ko7S_N@ztc*x;A3i{G2 zVk6B3*Yl&=CSxA;IS1r_DZNJae}KF+o$tF$GpBoQRQ^x2s9B@<$u{J;*V`RY3?ctJtD5uyYL!^h&kW`r~TX6_`}LmIuS?cz0M zB390duAltCaP@*~h@8lB<%8_Ycd5>By%sLOw6_JVd^5b}2s5 z{SjzhHaFmytTF%ay`}r6%d89ke`EA^5WX?>8MIY@{DK2(;J>1O-Z1yYZBK)&beDg*%XJg`Me-u( zcI~2mRsoJCtet6&`n)2fe~YvdC};n4CE?=w#LCJV7A-5Lr3JHTWQ3L+7c@O>++Fo@ z&BxA;`3uiNDlBqiG+IFh{X|w_Z?w=Gh+J*l-Q738a;Y$m*wE1b5qj7ebkNkafaY7= z#uRdA7qiL>3Jr~{qXJ6M%U<#d_h>b_zyIKuez(~_B&wQ!EjqNMmvq|u7kuy~Ft$3J z&Q0myu3r1%t%7}lpmw5(mAV}tTXldXYEshvfij)`+aAqYu&*|~!}&$)s;=9TIC4*^ zyM5$Tpp_EW-*T7@`i!QF`rG;Su3Qo*f^=|SpASAw(H~KV0`A#{)(F(tmKe{(w+MwV zUdaCv2)ijxI-LHxZp3Rt0Z^!igTk!$Fuz3if}r*F5VK^V2D%t$q?3E?IVw7>_S?|m zgWJQy-uW{D$lxHPbiVmJ?Ci)B1T+5~p`Oo^sP$qc0l~u40e?a=p5|XV;?!xJCt|RNIb)O$T`|RBZ)__?*KaZwCO0GPnK|5>Oxj>-$|fFjY9z z3j1`J{8XLu_vF9}s^QR)y%u0p?H^)>c*)1Jr3&kB2ug~9`Khid8o=m^;5DrHLf;%=$^;z zoMd@ozmf${mPfE-dgnB&l+9XUCSBtO%k*CF|XZI&1}4*1alOo<>aF28wlVO4T|5wMEHU+m6ItoT4r z{Pl@|_-jkr(8>j&RX^zKOBziZ?B_lA70C-YA|tf(^ijxkvn|cV!dvy>aSYwikAhi> zZLqQC{QaXiV{U*ms*WCdhGc!)RsN`vo7{^X5*cx?;7w+GwbnK7X~)ze`#I8+9O~cI zz|fgfL*FCNvhyO&yr=%SH*Rc2+XYmzt1%isAjDV1VEZaNAzkul0s%O3M)NxPw(six zw&(cTE>W5@1sVP6H6o){db3okT*kSk{R15;G5N_Y|qlZ%T^B5-p2- za^%+QXC_-u`4XoRXNMP;Q84O3ujkie{QDICw6gPw^t}N0Y8TRS7KHMbSElCAefaJU zTq$klAgzO-+2Z~IM)Cd1lY5f_bl9mC9PjfkZp3)iA=Kt&_{(dA9(BP6aymZfKYwVY zq|sjp@Dc-J!A3-M+!NL@m0h94?2Ojh*%3B~GnF>2bhS(>U23;yWhQ*{ZK=SbEGjEQ zVQxPE2uoa38`-=V3@ADS%3P*(8>4>KYfN+fTNiP`_*Oj@DT0^6v`w)gXO2s^C@zdp ziX6?8{3|NA3h`XcNnBvbwSfj%Jh2LAy_i3FxTWondd-UNR7h32N>GnUj&6;Wm^{J# zzEycZ(x4**I7Etx8VG6!63ZjgU!2xGz&Q%Fwh@(Ws)c2JhLFNW#uCegQF=^uPjPDVTy!OOQA8%Ad` z^2fS1p=fU$-9Z%Obo|KZt+Y}o3IGv2Z@xheNHZtBRS-OA{%E5+Hn#Zt4Lm$Ne7-06 z=H8A-i7GF7UnGaxn~*5EZu{4NP0cR!_di|~(6pq3E>78YzUb08#HkD4_*Yj^Ggo@K z8ddxGWo+q#i3*+{5hAmhWeYW^4&t1f^eBfqIwUpUzqHS25&Zt`zmI+0;r60OLy#)! zK7vu7f!{KkCcz4VB4I3Q)`GkxA~`-YM21_UJ(e^pM`KiX%q}nNi=K$reC%_$R#VsX z?{)ET3*OHa@cst%W70Y7p&zl%5Ovm2B0Q%;-BnC@XC86mh95L$B@n&mOiMtEY$BI1 zp%}HgmA6iKy{3H8sL|pa^8FY^n>*Bo5J(ClPBMh>9RF6_wyI%n664=guplAUN!cu8+|yE8t=%F$oM7n?e9OWYuMnCI4UyH7bHx(sn!= z7tWP1HV{95rsm0-N9N|X+Rv&Goth^C<#mR-URs#Lf_i!$$+qXVb*1N>?I}e5dffmUG&J

IGXEVUaG35#bl5vWKRpZ%OSi-dcKf#X4c&`S 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�nJcn5CZlh)27Dk!Yzoz&+@Rlwg3hcb$4EHBC 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 C{S*`c literal 0 HcmV?d00001 diff --git a/ids/读出子系统IDS表.json b/ids/读出子系统IDS表.json new file mode 100644 index 0000000..95187d4 --- /dev/null +++ b/ids/读出子系统IDS表.json @@ -0,0 +1,5600 @@ +{ + "HeaderInfo": { + "BoardType": "READOUT", + "Version": "1.0.0", + "Creator": "郭成", + "Date": "2025.08.21", + "Info": "READOUT子系统FPGA平台地址映射表" + }, + "MappingInfo": { + "msmt_acq": { + "0": { + "Exaddr": 0, + "Cid": 0, + "Modules": { + "MCU_INS": { + "StartAddress": "0x00200000", + "Size": "16KB", + "Info": "采集通道MCU运行指令配置" + }, + "MCU_DAT": { + "StartAddress": "0x00300000", + "Size": "16KB", + "Info": "采集通道MCU初始数据配置" + }, + "DAQ_REG": { + "StartAddress": "0x00400000", + "Size": "256B", + "Info": "采集通道控制寄存器配置" + }, + "DAQ_PAR": { + "StartAddress": "0x00500000", + "Size": "32KB", + "Info": "采集通道读出参数配置" + }, + "DAQ_FLT": { + "StartAddress": "0x00580000", + "Size": "512KB", + "Info": "采集通道匹配滤波器系数配置" + } + } + }, + "1": { + "Exaddr": 1, + "Cid": 0, + "Modules": { + "MCU_INS": { + "StartAddress": "0x00200000", + "Size": "16KB", + "Info": "采集通道MCU运行指令配置" + }, + "MCU_DAT": { + "StartAddress": "0x00300000", + "Size": "16KB", + "Info": "采集通道MCU初始数据配置" + }, + "DAQ_REG": { + "StartAddress": "0x00400000", + "Size": "256B", + "Info": "采集通道控制寄存器配置" + }, + "DAQ_PAR": { + "StartAddress": "0x00500000", + "Size": "32KB", + "Info": "采集通道读出参数配置" + }, + "DAQ_FLT": { + "StartAddress": "0x00580000", + "Size": "512KB", + "Info": "采集通道匹配滤波器系数配置" + } + } + }, + "2": { + "Exaddr": 2, + "Cid": 0, + "Modules": { + "MCU_INS": { + "StartAddress": "0x00200000", + "Size": "16KB", + "Info": "采集通道MCU运行指令配置" + }, + "MCU_DAT": { + "StartAddress": "0x00300000", + "Size": "16KB", + "Info": "采集通道MCU初始数据配置" + }, + "DAQ_REG": { + "StartAddress": "0x00400000", + "Size": "256B", + "Info": "采集通道控制寄存器配置" + }, + "DAQ_PAR": { + "StartAddress": "0x00500000", + "Size": "32KB", + "Info": "采集通道读出参数配置" + }, + "DAQ_FLT": { + "StartAddress": "0x00580000", + "Size": "512KB", + "Info": "采集通道匹配滤波器系数配置" + } + } + }, + "3": { + "Exaddr": 3, + "Cid": 0, + "Modules": { + "MCU_INS": { + "StartAddress": "0x00200000", + "Size": "16KB", + "Info": "采集通道MCU运行指令配置" + }, + "MCU_DAT": { + "StartAddress": "0x00300000", + "Size": "16KB", + "Info": "采集通道MCU初始数据配置" + }, + "DAQ_REG": { + "StartAddress": "0x00400000", + "Size": "256B", + "Info": "采集通道控制寄存器配置" + }, + "DAQ_PAR": { + "StartAddress": "0x00500000", + "Size": "32KB", + "Info": "采集通道读出参数配置" + }, + "DAQ_FLT": { + "StartAddress": "0x00580000", + "Size": "512KB", + "Info": "采集通道匹配滤波器系数配置" + } + } + } + }, + "msmt_exci": { + "0": { + "Exaddr": 0, + "Cid": 0, + "Modules": { + "MCU_INS": { + "StartAddress": "0x00700000", + "Size": "16KB", + "Info": "激励通道MCU运行指令配置" + }, + "MCU_DAT": { + "StartAddress": "0x00800000", + "Size": "16KB", + "Info": "激励通道MCU初始数据配置" + }, + "AWG_REG": { + "StartAddress": "0x00900000", + "Size": "256B", + "Info": "激励通道控制寄存器配置" + }, + "AWG_IDX": { + "StartAddress": "0x00A00000", + "Size": "1KB", + "Info": "激励通道波形索引表配置" + }, + "AWG_WVE": { + "StartAddress": "0x00B00000", + "Size": "128KB", + "Info": "激励通道输出波形数据配置" + } + } + }, + "1": { + "Exaddr": 1, + "Cid": 0, + "Modules": { + "MCU_INS": { + "StartAddress": "0x00700000", + "Size": "16KB", + "Info": "激励通道MCU运行指令配置" + }, + "MCU_DAT": { + "StartAddress": "0x00800000", + "Size": "16KB", + "Info": "激励通道MCU初始数据配置" + }, + "AWG_REG": { + "StartAddress": "0x00900000", + "Size": "256B", + "Info": "激励通道控制寄存器配置" + }, + "AWG_IDX": { + "StartAddress": "0x00A00000", + "Size": "1KB", + "Info": "激励通道波形索引表配置" + }, + "AWG_WVE": { + "StartAddress": "0x00B00000", + "Size": "128KB", + "Info": "激励通道输出波形数据配置" + } + } + }, + "2": { + "Exaddr": 2, + "Cid": 0, + "Modules": { + "MCU_INS": { + "StartAddress": "0x00700000", + "Size": "16KB", + "Info": "激励通道MCU运行指令配置" + }, + "MCU_DAT": { + "StartAddress": "0x00800000", + "Size": "16KB", + "Info": "激励通道MCU初始数据配置" + }, + "AWG_REG": { + "StartAddress": "0x00900000", + "Size": "256B", + "Info": "激励通道控制寄存器配置" + }, + "AWG_IDX": { + "StartAddress": "0x00A00000", + "Size": "1KB", + "Info": "激励通道波形索引表配置" + }, + "AWG_WVE": { + "StartAddress": "0x00B00000", + "Size": "128KB", + "Info": "激励通道输出波形数据配置" + } + } + }, + "3": { + "Exaddr": 3, + "Cid": 0, + "Modules": { + "MCU_INS": { + "StartAddress": "0x00700000", + "Size": "16KB", + "Info": "激励通道MCU运行指令配置" + }, + "MCU_DAT": { + "StartAddress": "0x00800000", + "Size": "16KB", + "Info": "激励通道MCU初始数据配置" + }, + "AWG_REG": { + "StartAddress": "0x00900000", + "Size": "256B", + "Info": "激励通道控制寄存器配置" + }, + "AWG_IDX": { + "StartAddress": "0x00A00000", + "Size": "1KB", + "Info": "激励通道波形索引表配置" + }, + "AWG_WVE": { + "StartAddress": "0x00B00000", + "Size": "128KB", + "Info": "激励通道输出波形数据配置" + } + } + } + }, + "system": { + "0": { + "Exaddr": 0, + "Cid": 0, + "Modules": { + "SYS_REG": { + "StartAddress": "0x00000000", + "Size": "64B", + "Info": "读出系统ADC和DAC配置" + }, + "SYS_ANA": { + "StartAddress": "0x00100000", + "Size": "512B", + "Info": "读出系统整体寄存器配置" + }, + "SYS_PLL": { + "StartAddress": "0x01F00000", + "Size": "256B", + "Info": "读出系统时钟配置" + } + } + }, + "1": { + "Exaddr": 1, + "Cid": 0, + "Modules": { + "SYS_REG": { + "StartAddress": "0x00000000", + "Size": "64B", + "Info": "读出系统ADC和DAC配置" + }, + "SYS_ANA": { + "StartAddress": "0x00100000", + "Size": "512B", + "Info": "读出系统整体寄存器配置" + }, + "SYS_PLL": { + "StartAddress": "0x01F00000", + "Size": "256B", + "Info": "读出系统时钟配置" + } + } + }, + "2": { + "Exaddr": 2, + "Cid": 0, + "Modules": { + "SYS_REG": { + "StartAddress": "0x00000000", + "Size": "64B", + "Info": "读出系统ADC和DAC配置" + }, + "SYS_ANA": { + "StartAddress": "0x00100000", + "Size": "512B", + "Info": "读出系统整体寄存器配置" + }, + "SYS_PLL": { + "StartAddress": "0x01F00000", + "Size": "256B", + "Info": "读出系统时钟配置" + } + } + }, + "3": { + "Exaddr": 3, + "Cid": 0, + "Modules": { + "SYS_REG": { + "StartAddress": "0x00000000", + "Size": "64B", + "Info": "读出系统ADC和DAC配置" + }, + "SYS_ANA": { + "StartAddress": "0x00100000", + "Size": "512B", + "Info": "读出系统整体寄存器配置" + }, + "SYS_PLL": { + "StartAddress": "0x01F00000", + "Size": "256B", + "Info": "读出系统时钟配置" + } + } + } + }, + "trigger": { + "0": { + "Exaddr": 4, + "Cid": 0, + "Modules": { + "TRIG_CTRL": { + "StartAddress": "0x00400000", + "Size": "32B", + "Info": "控制触发信号发出,启动实验运行" + } + } + } + }, + "pump": { + "0": { + "Exaddr": 0, + "Cid": 0, + "Modules": { + "PUMP_REG": { + "StartAddress": "0x00000000", + "Size": "16MB", + "Info": "混频板泵浦通道0控制寄存器" + } + } + }, + "1": { + "Exaddr": 0, + "Cid": 0, + "Modules": { + "PUMP_REG": { + "StartAddress": "0x00010000", + "Size": "16MB", + "Info": "混频板泵浦通道1控制寄存器" + } + } + }, + "2": { + "Exaddr": 0, + "Cid": 0, + "Modules": { + "PUMP_REG": { + "StartAddress": "0x00020000", + "Size": "16MB", + "Info": "混频板泵浦通道2控制寄存器" + } + } + }, + "3": { + "Exaddr": 0, + "Cid": 0, + "Modules": { + "PUMP_REG": { + "StartAddress": "0x00030000", + "Size": "16MB", + "Info": "混频板泵浦通道3控制寄存器" + } + } + } + }, + "mixer": { + "0": { + "Exaddr": 0, + "Cid": 0, + "Modules": { + "MIXER_REG": { + "StartAddress": "0x00100000", + "Size": "4B", + "Info": "混频板变频控制寄存器" + } + } + } + } + }, + "Modules": { + "DAQ_PAR": { + "q0": { + "OffsetAddress": "0x0000", + "Permission": "RW", + "SegDescription": "Qubit0读出参数" + }, + "q1": { + "OffsetAddress": "0x0800", + "Permission": "RW", + "SegDescription": "Qubit1读出参数" + }, + "q2": { + "OffsetAddress": "0x1000", + "Permission": "RW", + "SegDescription": "Qubit2读出参数" + }, + "q3": { + "OffsetAddress": "0x1800", + "Permission": "RW", + "SegDescription": "Qubit3读出参数" + }, + "q4": { + "OffsetAddress": "0x2000", + "Permission": "RW", + "SegDescription": "Qubit4读出参数" + }, + "q5": { + "OffsetAddress": "0x2800", + "Permission": "RW", + "SegDescription": "Qubit5读出参数" + }, + "q6": { + "OffsetAddress": "0x3000", + "Permission": "RW", + "SegDescription": "Qubit6读出参数" + }, + "q7": { + "OffsetAddress": "0x3800", + "Permission": "RW", + "SegDescription": "Qubit7读出参数" + }, + "q8": { + "OffsetAddress": "0x4000", + "Permission": "RW", + "SegDescription": "Qubit8读出参数" + }, + "q9": { + "OffsetAddress": "0x4800", + "Permission": "RW", + "SegDescription": "Qubit9读出参数" + }, + "q10": { + "OffsetAddress": "0x5000", + "Permission": "RW", + "SegDescription": "Qubit10读出参数" + }, + "q11": { + "OffsetAddress": "0x5800", + "Permission": "RW", + "SegDescription": "Qubit11读出参数" + }, + "q12": { + "OffsetAddress": "0x6000", + "Permission": "RW", + "SegDescription": "Qubit12读出参数" + }, + "q13": { + "OffsetAddress": "0x6800", + "Permission": "RW", + "SegDescription": "Qubit13读出参数" + }, + "q14": { + "OffsetAddress": "0x7000", + "Permission": "RW", + "SegDescription": "Qubit14读出参数" + }, + "q15": { + "OffsetAddress": "0x7800", + "Permission": "RW", + "SegDescription": "Qubit15读出参数" + } + }, + "DAQ_FLT": { + "q0i": { + "OffsetAddress": "0x00000", + "Permission": "RW", + "SegDescription": "Qubit0 I路匹配滤波器系数" + }, + "q0q": { + "OffsetAddress": "0x04000", + "Permission": "RW", + "SegDescription": "Qubit0 Q路匹配滤波器系数" + }, + "q1i": { + "OffsetAddress": "0x08000", + "Permission": "RW", + "SegDescription": "Qubit1 I路匹配滤波器系数" + }, + "q1q": { + "OffsetAddress": "0x0C000", + "Permission": "RW", + "SegDescription": "Qubit1 Q路匹配滤波器系数" + }, + "q2i": { + "OffsetAddress": "0x10000", + "Permission": "RW", + "SegDescription": "Qubit2 I路匹配滤波器系数" + }, + "q2q": { + "OffsetAddress": "0x14000", + "Permission": "RW", + "SegDescription": "Qubit2 Q路匹配滤波器系数" + }, + "q3i": { + "OffsetAddress": "0x18000", + "Permission": "RW", + "SegDescription": "Qubit3 I路匹配滤波器系数" + }, + "q3q": { + "OffsetAddress": "0x1C000", + "Permission": "RW", + "SegDescription": "Qubit3 Q路匹配滤波器系数" + }, + "q4i": { + "OffsetAddress": "0x20000", + "Permission": "RW", + "SegDescription": "Qubit4 I路匹配滤波器系数" + }, + "q4q": { + "OffsetAddress": "0x24000", + "Permission": "RW", + "SegDescription": "Qubit4 Q路匹配滤波器系数" + }, + "q5i": { + "OffsetAddress": "0x28000", + "Permission": "RW", + "SegDescription": "Qubit5 I路匹配滤波器系数" + }, + "q5q": { + "OffsetAddress": "0x2C000", + "Permission": "RW", + "SegDescription": "Qubit5 Q路匹配滤波器系数" + }, + "q6i": { + "OffsetAddress": "0x30000", + "Permission": "RW", + "SegDescription": "Qubit6 I路匹配滤波器系数" + }, + "q6q": { + "OffsetAddress": "0x34000", + "Permission": "RW", + "SegDescription": "Qubit6 Q路匹配滤波器系数" + }, + "q7i": { + "OffsetAddress": "0x38000", + "Permission": "RW", + "SegDescription": "Qubit7 I路匹配滤波器系数" + }, + "q7q": { + "OffsetAddress": "0x3C000", + "Permission": "RW", + "SegDescription": "Qubit7 Q路匹配滤波器系数" + }, + "q8i": { + "OffsetAddress": "0x40000", + "Permission": "RW", + "SegDescription": "Qubit8 I路匹配滤波器系数" + }, + "q8q": { + "OffsetAddress": "0x44000", + "Permission": "RW", + "SegDescription": "Qubit8 Q路匹配滤波器系数" + }, + "q9i": { + "OffsetAddress": "0x48000", + "Permission": "RW", + "SegDescription": "Qubit9 I路匹配滤波器系数" + }, + "q9q": { + "OffsetAddress": "0x4C000", + "Permission": "RW", + "SegDescription": "Qubit9 Q路匹配滤波器系数" + }, + "q10i": { + "OffsetAddress": "0x50000", + "Permission": "RW", + "SegDescription": "Qubit10 I路匹配滤波器系数" + }, + "q10q": { + "OffsetAddress": "0x54000", + "Permission": "RW", + "SegDescription": "Qubit10 Q路匹配滤波器系数" + }, + "q11i": { + "OffsetAddress": "0x58000", + "Permission": "RW", + "SegDescription": "Qubit11 I路匹配滤波器系数" + }, + "q11q": { + "OffsetAddress": "0x5C000", + "Permission": "RW", + "SegDescription": "Qubit11 Q路匹配滤波器系数" + }, + "q12i": { + "OffsetAddress": "0x60000", + "Permission": "RW", + "SegDescription": "Qubit12 I路匹配滤波器系数" + }, + "q12q": { + "OffsetAddress": "0x64000", + "Permission": "RW", + "SegDescription": "Qubit12 Q路匹配滤波器系数" + }, + "q13i": { + "OffsetAddress": "0x68000", + "Permission": "RW", + "SegDescription": "Qubit13 I路匹配滤波器系数" + }, + "q13q": { + "OffsetAddress": "0x6C000", + "Permission": "RW", + "SegDescription": "Qubit13 Q路匹配滤波器系数" + }, + "q14i": { + "OffsetAddress": "0x70000", + "Permission": "RW", + "SegDescription": "Qubit14 I路匹配滤波器系数" + }, + "q14q": { + "OffsetAddress": "0x74000", + "Permission": "RW", + "SegDescription": "Qubit14 Q路匹配滤波器系数" + }, + "q15i": { + "OffsetAddress": "0x78000", + "Permission": "RW", + "SegDescription": "Qubit15 I路匹配滤波器系数" + }, + "q15q": { + "OffsetAddress": "0x7C000", + "Permission": "RW", + "SegDescription": "Qubit15 Q路匹配滤波器系数" + } + }, + "DAQ_REG": { + "mcu_timer": { + "OffsetAddress": "0x20", + "Permission": "RO", + "SegDescription": "mcu运行时间计数器", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "mcu_timer", + "ResetValue": "32'h00000000", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "mcu运行时间计数器" + } + ] + }, + "mcu_counter": { + "OffsetAddress": "0x24", + "Permission": "RO", + "SegDescription": "mcu运行指令计数器", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "mcu_counter", + "ResetValue": "32'h00000000", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "mcu运行指令计数器" + } + ] + }, + "loc_state": { + "OffsetAddress": "0x28", + "Permission": "RW", + "SegDescription": "局部反馈状态", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "loc_state", + "ResetValue": "32'hFFFFFFFF", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读写分离,读接收,写发送" + } + ] + }, + "glb_state": { + "OffsetAddress": "0x2c", + "Permission": "RW", + "SegDescription": "全局反馈状态", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "glb_state", + "ResetValue": "32'h00000000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读写分离,读接收,写发送" + } + ] + }, + "qubit_state": { + "OffsetAddress": "0x30", + "Permission": "RO", + "SegDescription": "当前读出态信息监视", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "qubit_state", + "ResetValue": "32'hFFFFFFFF", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "读出量子态信息监视" + } + ] + }, + "amplitude": { + "OffsetAddress": "0x34", + "Permission": "RW", + "SegDescription": "DAQ幅度控制寄存器", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "acw", + "ResetValue": "16'h4000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "反馈给AWG的幅度控制字" + }, + { + "Bits": [ + 11, + 8 + ], + "FieldName": "gpio_t", + "ResetValue": "4'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "DAQ GPIO输出三态控制" + }, + { + "Bits": [ + 3, + 0 + ], + "FieldName": "gpio_o", + "ResetValue": "4'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "DAQ GPIO输入/输出电平" + } + ] + }, + "sram_count": { + "OffsetAddress": "0x38", + "Permission": "RO", + "SegDescription": "SRAM缓存数据量", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "sram_count", + "ResetValue": "32'h0", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "采集数据缓存到SRAM中的数据量" + } + ] + }, + "push_count": { + "OffsetAddress": "0x3c", + "Permission": "RO", + "SegDescription": "芯片数据推送量", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "push_count", + "ResetValue": "32'h0", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "采集数据通过LVDS接口推送数据量" + } + ] + }, + "command": { + "OffsetAddress": "0x40", + "Permission": "WC", + "SegDescription": "DAQ命令寄存器", + "Fields": [ + { + "Bits": [ + 5 + ], + "FieldName": "force_cal", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "强制推送链路发出同步码,高有效" + }, + { + "Bits": [ + 4 + ], + "FieldName": "force_req", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "强制发出读请求,高有效" + }, + { + "Bits": [ + 0 + ], + "FieldName": "force_int", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "强制发出中断请求,高有效" + } + ] + }, + "func_ctrl": { + "OffsetAddress": "0x44", + "Permission": "RW", + "SegDescription": "DAQ功能寄存器", + "Fields": [ + { + "Bits": [ + 19, + 16 + ], + "FieldName": "tx_pat_ctrl", + "ResetValue": "4'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "推送链路同步码数量控制" + }, + { + "Bits": [ + 15, + 8 + ], + "FieldName": "weight_iq", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "常数权重数据,二进制补码" + }, + { + "Bits": [ + 7 + ], + "FieldName": "const_en", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "常数权重数据使能,当前不支持" + }, + { + "Bits": [ + 6, + 4 + ], + "FieldName": "step_ctrl", + "ResetValue": "3'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "解模算法步长控制" + }, + { + "Bits": [ + 3 + ], + "FieldName": "iq_scale", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "解模动态范围选择" + }, + { + "Bits": [ + 2 + ], + "FieldName": "two_sta_en", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "二态判定模式使能" + }, + { + "Bits": [ + 0 + ], + "FieldName": "spi_rd_en", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "SPI读数据使能,否则主动推送" + } + ] + }, + "sample_depth": { + "OffsetAddress": "0x48", + "Permission": "RW", + "SegDescription": "波形采样深度控制", + "Fields": [ + { + "Bits": [ + 15, + 0 + ], + "FieldName": "sample_depth", + "ResetValue": "16'h100", + "Range": { + "value": [ + "1", + "8192" + ], + "type": "list" + }, + "FieldDescription": "采样深度控制,单位是时钟周期" + } + ] + }, + "coefficient": { + "OffsetAddress": "0x4c", + "Permission": "RW", + "SegDescription": "模值乘法系数", + "Fields": [ + { + "Bits": [ + 15, + 0 + ], + "FieldName": "coefficient", + "ResetValue": "16'h100", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "用于计算实时幅度的系数,有符号数" + } + ] + }, + "int_threshold": { + "OffsetAddress": "0x50", + "Permission": "RW", + "SegDescription": "数据中断阈值控制", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "int_threshold", + "ResetValue": "32'h100", + "Range": { + "value": [ + "1", + "32767" + ], + "type": "list" + }, + "FieldDescription": "读请求数据触发阈值,单位是4字节" + } + ] + }, + "read_req_ctrl": { + "OffsetAddress": "0x54", + "Permission": "RW", + "SegDescription": "读数据请求脉冲控制", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "delay", + "ResetValue": "16'h0004", + "Range": { + "value": [ + "1", + "65535" + ], + "type": "list" + }, + "FieldDescription": "读请求脉冲延迟控制,单位时钟周期" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "width", + "ResetValue": "16'h0004", + "Range": { + "value": [ + "1", + "65535" + ], + "type": "list" + }, + "FieldDescription": "读请求脉冲宽度控制,单位时钟周期" + } + ] + }, + "mtf_idx_q0": { + "OffsetAddress": "0x80", + "Permission": "RW", + "SegDescription": "q0匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q1": { + "OffsetAddress": "0x84", + "Permission": "RW", + "SegDescription": "q1匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q2": { + "OffsetAddress": "0x88", + "Permission": "RW", + "SegDescription": "q2匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q3": { + "OffsetAddress": "0x8C", + "Permission": "RW", + "SegDescription": "q3匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q4": { + "OffsetAddress": "0x90", + "Permission": "RW", + "SegDescription": "q4匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q5": { + "OffsetAddress": "0x94", + "Permission": "RW", + "SegDescription": "q5匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q6": { + "OffsetAddress": "0x98", + "Permission": "RW", + "SegDescription": "q6匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q7": { + "OffsetAddress": "0x9C", + "Permission": "RW", + "SegDescription": "q7匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q8": { + "OffsetAddress": "0xA0", + "Permission": "RW", + "SegDescription": "q8匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q9": { + "OffsetAddress": "0xA4", + "Permission": "RW", + "SegDescription": "q9匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q10": { + "OffsetAddress": "0xA8", + "Permission": "RW", + "SegDescription": "q10匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q11": { + "OffsetAddress": "0xAC", + "Permission": "RW", + "SegDescription": "q11匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q12": { + "OffsetAddress": "0xB0", + "Permission": "RW", + "SegDescription": "q12匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q13": { + "OffsetAddress": "0xB4", + "Permission": "RW", + "SegDescription": "q13匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q14": { + "OffsetAddress": "0xB8", + "Permission": "RW", + "SegDescription": "q14匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "mtf_idx_q15": { + "OffsetAddress": "0xBC", + "Permission": "RW", + "SegDescription": "q15匹配滤波器系数索引", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "addr", + "ResetValue": "16'h0008", + "Range": { + "value": [ + "0", + "1023" + ], + "type": "list" + }, + "FieldDescription": "波形地址,单位存储条目(16个采样点)" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0100", + "Range": { + "value": [ + "1", + "1024" + ], + "type": "list" + }, + "FieldDescription": "波形长度,单位存储条目(16个采样点)" + } + ] + }, + "dds_fpw_q0": { + "OffsetAddress": "0xC0", + "Permission": "RW", + "SegDescription": "q0解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q1": { + "OffsetAddress": "0xC4", + "Permission": "RW", + "SegDescription": "q1解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q2": { + "OffsetAddress": "0xC8", + "Permission": "RW", + "SegDescription": "q2解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q3": { + "OffsetAddress": "0xCC", + "Permission": "RW", + "SegDescription": "q3解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q4": { + "OffsetAddress": "0xD0", + "Permission": "RW", + "SegDescription": "q4解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q5": { + "OffsetAddress": "0xD4", + "Permission": "RW", + "SegDescription": "q5解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q6": { + "OffsetAddress": "0xD8", + "Permission": "RW", + "SegDescription": "q6解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q7": { + "OffsetAddress": "0xDC", + "Permission": "RW", + "SegDescription": "q7解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q8": { + "OffsetAddress": "0xE0", + "Permission": "RW", + "SegDescription": "q8解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q9": { + "OffsetAddress": "0xE4", + "Permission": "RW", + "SegDescription": "q9解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q10": { + "OffsetAddress": "0xE8", + "Permission": "RW", + "SegDescription": "q10解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q11": { + "OffsetAddress": "0xEC", + "Permission": "RW", + "SegDescription": "q11解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q12": { + "OffsetAddress": "0xF0", + "Permission": "RW", + "SegDescription": "q12解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q13": { + "OffsetAddress": "0xF4", + "Permission": "RW", + "SegDescription": "q13解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q14": { + "OffsetAddress": "0xF8", + "Permission": "RW", + "SegDescription": "q14解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + }, + "dds_fpw_q15": { + "OffsetAddress": "0xFC", + "Permission": "RW", + "SegDescription": "q15解模频率相位控制字", + "Fields": [ + { + "Bits": [ + 31, + 12 + ], + "FieldName": "fcw", + "ResetValue": "20'h10000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "频率控制字,fcw/2^20*sample_rate" + }, + { + "Bits": [ + 11, + 0 + ], + "FieldName": "pcw", + "ResetValue": "12'h000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "相位控制字,pcw/2^12*2*pi" + } + ] + } + }, + "AWG_REG": { + "mcu_timer": { + "OffsetAddress": "0x20", + "Permission": "RO", + "SegDescription": "mcu运行时间计数器", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "mcu_timer", + "ResetValue": "32'h00000000", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "mcu运行时间计数器" + } + ] + }, + "mcu_counter": { + "OffsetAddress": "0x24", + "Permission": "RO", + "SegDescription": "mcu运行指令计数器", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "mcu_counter", + "ResetValue": "32'h00000000", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "mcu运行指令计数器" + } + ] + }, + "loc_state": { + "OffsetAddress": "0x28", + "Permission": "RO", + "SegDescription": "读写分离,读接收,写发送", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "loc_state", + "ResetValue": "32'hFFFFFFFF", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读写分离,读接收,写发送" + } + ] + }, + "glb_state": { + "OffsetAddress": "0x2c", + "Permission": "RO", + "SegDescription": "读写分离,读接收,写发送", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "glb_state", + "ResetValue": "32'h00000000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读写分离,读接收,写发送" + } + ] + }, + "wave_ctrl": { + "OffsetAddress": "0x30", + "Permission": "RW", + "SegDescription": "波形索引寄存器", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "addr", + "ResetValue": "16'h0", + "Range": { + "value": [ + "0", + "4095" + ], + "type": "list" + }, + "FieldDescription": "寄存器控制波形输出地址" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "len", + "ResetValue": "16'h0", + "Range": { + "value": [ + "1", + "4096" + ], + "type": "list" + }, + "FieldDescription": "寄存器控制波形输出长度" + } + ] + }, + "amplitude": { + "OffsetAddress": "0x34", + "Permission": "RW", + "SegDescription": "AWG幅度控制寄存器", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "acw", + "ResetValue": "16'h4000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AWG的调幅幅度控制字" + }, + { + "Bits": [ + 11, + 8 + ], + "FieldName": "gpio_t", + "ResetValue": "4'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AWG GPIO输出三态控制" + }, + { + "Bits": [ + 3, + 0 + ], + "FieldName": "gpio_o", + "ResetValue": "4'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AWG GPIO输入输出电平" + } + ] + }, + "frequency": { + "OffsetAddress": "0x38", + "Permission": "RW", + "SegDescription": "调制频率控制字", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "fcw", + "ResetValue": "32'h00000000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "调制频率控制字" + } + ] + }, + "phase": { + "OffsetAddress": "0x3c", + "Permission": "RW", + "SegDescription": "调制相位控制字", + "Fields": [ + { + "Bits": [ + 15, + 0 + ], + "FieldName": "pcw", + "ResetValue": "16'h0000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "调制相位控制字" + } + ] + }, + "command": { + "OffsetAddress": "0x40", + "Permission": "WC", + "SegDescription": "AWG命令寄存器", + "Fields": [ + { + "Bits": [ + 0 + ], + "FieldName": "force_int", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "强制AWG模块发出中断请求" + } + ] + }, + "func_ctrl": { + "OffsetAddress": "0x44", + "Permission": "RW", + "SegDescription": "AWG功能寄存器", + "Fields": [ + { + "Bits": [ + 8 + ], + "FieldName": "amp_sel", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "调幅参数选择" + }, + { + "Bits": [ + 7 + ], + "FieldName": "nco_sw_en", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "NCO Only模式开关使能" + }, + { + "Bits": [ + 6 + ], + "FieldName": "nco_sw_sel", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "NCO Only模式开关选择" + }, + { + "Bits": [ + 5 + ], + "FieldName": "mark_inv", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "MARK_EN输出极性翻转" + }, + { + "Bits": [ + 4 + ], + "FieldName": "pump_inv", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PUMP_EN输出极性翻转" + }, + { + "Bits": [ + 3 + ], + "FieldName": "intp_sel", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "插值模式选择" + }, + { + "Bits": [ + 2 + ], + "FieldName": "mix_mode", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "DAC MIX模式选择" + }, + { + "Bits": [ + 1, + 0 + ], + "FieldName": "awg_mode", + "ResetValue": "2'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AWG工作模式选择" + } + ] + }, + "pump_ctrl": { + "OffsetAddress": "0x48", + "Permission": "RW", + "SegDescription": "泵浦脉冲控制", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "delay", + "ResetValue": "16'h0001", + "Range": { + "value": [ + "1", + "65535" + ], + "type": "list" + }, + "FieldDescription": "泵浦信号脉冲延迟" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "width", + "ResetValue": "16'h0010", + "Range": { + "value": [ + "1", + "65535" + ], + "type": "list" + }, + "FieldDescription": "泵浦信号脉冲宽度" + } + ] + }, + "mark_ctrl": { + "OffsetAddress": "0x4c", + "Permission": "RW", + "SegDescription": "标记脉冲控制", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "delay", + "ResetValue": "16'h0001", + "Range": { + "value": [ + "1", + "65535" + ], + "type": "list" + }, + "FieldDescription": "调试信号脉冲延迟" + }, + { + "Bits": [ + 15, + 0 + ], + "FieldName": "width", + "ResetValue": "16'h0010", + "Range": { + "value": [ + "1", + "65535" + ], + "type": "list" + }, + "FieldDescription": "调试信号脉冲宽度" + } + ] + } + }, + "SYS_REG": { + "chip_id": { + "OffsetAddress": "0x00", + "Permission": "RO", + "SegDescription": "芯片ID\"RBPU\"", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "chip_id", + "ResetValue": "32'h52425055", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "芯片ID\"RBPU\"" + } + ] + }, + "chip_vid": { + "OffsetAddress": "0x04", + "Permission": "RO", + "SegDescription": "单位ID\"HFNL\"", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "chip_vid", + "ResetValue": "32'h48464e4c", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "单位ID\"HFNL\"" + } + ] + }, + "chip_date": { + "OffsetAddress": "0x08", + "Permission": "RO", + "SegDescription": "设计时间\"2025年10月1日\"", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "chip_date", + "ResetValue": "32'h20251001", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "设计时间\"2025年10月1日\"" + } + ] + }, + "chip_vision": { + "OffsetAddress": "0x0c", + "Permission": "RO", + "SegDescription": "芯片版本“1.0.0”", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "chip_vision", + "ResetValue": "32'h01000000", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "芯片版本“1.0.0”" + } + ] + }, + "sync_delay": { + "OffsetAddress": "0x10", + "Permission": "RW", + "SegDescription": "芯片同步延迟控制", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "awg_delay", + "ResetValue": "16'h1", + "Range": { + "value": [ + "1", + "65535" + ], + "type": "list" + }, + "FieldDescription": "AWG相对同步延迟" + }, + { + "Bits": [ + 31, + 0 + ], + "FieldName": "daq_delay", + "ResetValue": "16'h1", + "Range": { + "value": [ + "1", + "65535" + ], + "type": "list" + }, + "FieldDescription": "DAQ相对同步延迟" + } + ] + }, + "int_mask": { + "OffsetAddress": "0x14", + "Permission": "RW", + "SegDescription": "芯片异常中断使能掩码", + "Fields": [ + { + "Bits": [ + 11 + ], + "FieldName": "awg_soft_int", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,AWG触发软中断" + }, + { + "Bits": [ + 10 + ], + "FieldName": "awg_exit_exc", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,AWG执行异常退出" + }, + { + "Bits": [ + 9 + ], + "FieldName": "awg_addr_err", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,AWG地址访问错误" + }, + { + "Bits": [ + 8 + ], + "FieldName": "awg_inst_err", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,AWG指令运行错误" + }, + { + "Bits": [ + 7 + ], + "FieldName": "daq_soft_int", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,DAQ触发软中断" + }, + { + "Bits": [ + 6 + ], + "FieldName": "daq_exit_exc", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,DAQ执行异常退出" + }, + { + "Bits": [ + 5 + ], + "FieldName": "daq_addr_err", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,DAQ地址访问错误" + }, + { + "Bits": [ + 4 + ], + "FieldName": "daq_inst_err", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,DAQ指令运行错误" + }, + { + "Bits": [ + 1 + ], + "FieldName": "adc_or_flag", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,ADC输入过载" + }, + { + "Bits": [ + 0 + ], + "FieldName": "link_down", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读状态写使能,数据推送链路未建立" + } + ] + }, + "sys_command": { + "OffsetAddress": "0x18", + "Permission": "WC", + "SegDescription": "芯片命令寄存器", + "Fields": [ + { + "Bits": [ + 6 + ], + "FieldName": "count_clr", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "清除同步脉冲计数" + }, + { + "Bits": [ + 5 + ], + "FieldName": "force_cal", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "强制发出反馈链路同步校准码" + }, + { + "Bits": [ + 4 + ], + "FieldName": "status_clr", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "清除中断积累异常" + }, + { + "Bits": [ + 3 + ], + "FieldName": "soft_daq_val", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "软启动DAQ模块" + }, + { + "Bits": [ + 2 + ], + "FieldName": "soft_awg_val", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "软启动AWG模块" + }, + { + "Bits": [ + 1 + ], + "FieldName": "soft_daq_rst", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "软复位DAQ模块" + }, + { + "Bits": [ + 0 + ], + "FieldName": "soft_awg_rst", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "软复位AWG模块" + } + ] + }, + "sys_func": { + "OffsetAddress": "0x1c", + "Permission": "RW", + "SegDescription": "芯片功能寄存器", + "Fields": [ + { + "Bits": [ + 22, + 20 + ], + "FieldName": "debug_sel", + "ResetValue": "3'h0", + "Range": { + "value": [ + "0", + "5" + ], + "type": "list" + }, + "FieldDescription": "调试功能选择" + }, + { + "Bits": [ + 18 + ], + "FieldName": "sensor_en", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "温度传感器使能控制" + }, + { + "Bits": [ + 17, + 16 + ], + "FieldName": "data_in_sel", + "ResetValue": "2'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "DAQ数据源选择" + }, + { + "Bits": [ + 15, + 12 + ], + "FieldName": "rx_pat_ctrl", + "ResetValue": "4'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "反馈链路建链接收同步码" + }, + { + "Bits": [ + 11, + 8 + ], + "FieldName": "tx_pat_ctrl", + "ResetValue": "4'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "反馈链路建链发射同步码" + }, + { + "Bits": [ + 7 + ], + "FieldName": "auto_cal_off", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "使能自动链路建链" + }, + { + "Bits": [ + 6 + ], + "FieldName": "level_sel", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "局部反馈电平选择" + }, + { + "Bits": [ + 5 + ], + "FieldName": "qubit_set", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "全局反馈比特数量选择" + }, + { + "Bits": [ + 4 + ], + "FieldName": "through_en", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "反馈直通调控模式" + }, + { + "Bits": [ + 3 + ], + "FieldName": "daq_sync_sel", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "DAQ同步信号选择" + }, + { + "Bits": [ + 2 + ], + "FieldName": "awg_sync_sel", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AWG同步信号选择" + }, + { + "Bits": [ + 1, + 0 + ], + "FieldName": "loc_disable", + "ResetValue": "2'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "局部反馈禁用" + } + ] + }, + "smp_intrv": { + "OffsetAddress": "0x20", + "Permission": "RW", + "SegDescription": "温传采样间隔时钟周期", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "smp_time", + "ResetValue": "32'h2cb41780", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "温传采样间隔时钟周期" + } + ] + }, + "smp_time": { + "OffsetAddress": "0x24", + "Permission": "RW", + "SegDescription": "温传单次采样计数总次数", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "smp_cnt", + "ResetValue": "32'h00010000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "温传单次采样计数总次数" + } + ] + }, + "pulse_cnt": { + "OffsetAddress": "0x28", + "Permission": "RO", + "SegDescription": "同步脉冲采集个数", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "pulse_cnt", + "ResetValue": "32'h0", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "同步脉冲采集个数" + } + ] + }, + "idelay_tap": { + "OffsetAddress": "0x2C", + "Permission": "RO", + "SegDescription": "反馈链路输出延迟状态", + "Fields": [ + { + "Bits": [ + 2, + 0 + ], + "FieldName": "idelay_tap", + "ResetValue": "3'h0", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "反馈链路输出延迟状态" + } + ] + } + }, + "SYS_ANA": { + "adc_div2_en": { + "OffsetAddress": "0x000", + "Permission": "RW", + "SegDescription": "主时钟分频使能", + "Fields": [ + { + "Bits": [ + 0 + ], + "FieldName": "adc_div2_en", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "主时钟分频使能" + } + ] + }, + "data_clk_sel": { + "OffsetAddress": "0x028", + "Permission": "RW", + "SegDescription": "ADC数据输出驱动时钟选择", + "Fields": [ + { + "Bits": [ + 1, + 0 + ], + "FieldName": "data_clk_sel", + "ResetValue": "3'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "ADC数据输出驱动时钟选择" + } + ] + }, + "ext_ctrl": { + "OffsetAddress": "0x030", + "Permission": "RW", + "SegDescription": "扩展控制寄存器", + "Fields": [ + { + "Bits": [ + 17 + ], + "FieldName": "adc_skew_sel", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW功能选择" + }, + { + "Bits": [ + 16 + ], + "FieldName": "adc_ti_cal_en", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW校准使能" + }, + { + "Bits": [ + 15 + ], + "FieldName": "adc_og_cal_en", + "ResetValue": "1'h1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "OG_CAL使能" + }, + { + "Bits": [ + 14 + ], + "FieldName": "adc_sel_do_p", + "ResetValue": "1'h1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "ADC输出选择" + }, + { + "Bits": [ + 13 + ], + "FieldName": "adc_sel_tc_p", + "ResetValue": "1'h1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延时模块输入选" + }, + { + "Bits": [ + 12 + ], + "FieldName": "adc_sel_test", + "ResetValue": "1'h1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "时钟BUFFER输出测试选择" + }, + { + "Bits": [ + 10 + ], + "FieldName": "adc_cmprx_en", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "比较器使能信号" + }, + { + "Bits": [ + 9, + 5 + ], + "FieldName": "adc_sw_clkrx2", + "ResetValue": "5'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "时钟BUFFER2路径延时控制" + }, + { + "Bits": [ + 4, + 0 + ], + "FieldName": "adc_sw_clkrx1", + "ResetValue": "5'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "时钟BUFFER1路径延时控制" + } + ] + }, + "time_skew0": { + "OffsetAddress": "0x034", + "Permission": "RW", + "SegDescription": "time skew控制0", + "Fields": [ + { + "Bits": [ + 31, + 24 + ], + "FieldName": "adc_t_c4", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延迟调节4" + }, + { + "Bits": [ + 23, + 16 + ], + "FieldName": "adc_t_c3", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延迟调节3" + }, + { + "Bits": [ + 15, + 8 + ], + "FieldName": "adc_t_c2", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延迟调节2" + }, + { + "Bits": [ + 7, + 0 + ], + "FieldName": "adc_t_c1", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延迟调节1" + } + ] + }, + "time_skew1": { + "OffsetAddress": "0x038", + "Permission": "RW", + "SegDescription": "time skew控制1", + "Fields": [ + { + "Bits": [ + 31, + 24 + ], + "FieldName": "adc_t_c8", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延迟调节8" + }, + { + "Bits": [ + 23, + 16 + ], + "FieldName": "adc_t_c7", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延迟调节7" + }, + { + "Bits": [ + 15, + 8 + ], + "FieldName": "adc_t_c6", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延迟调节6" + }, + { + "Bits": [ + 7, + 0 + ], + "FieldName": "adc_t_c5", + "ResetValue": "8'h80", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "TIME_SKEW延迟调节5" + } + ] + }, + "ov_count": { + "OffsetAddress": "0x03C", + "Permission": "RO", + "SegDescription": "输入过载脉冲计数", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "ov_count", + "ResetValue": "32'h0", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "输入过载脉冲计数" + } + ] + }, + "dac_version": { + "OffsetAddress": "0x100", + "Permission": "RO", + "SegDescription": "DAC版本", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_version", + "ResetValue": "32'h0", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "DAC版本" + } + ] + }, + "dac_r_load": { + "OffsetAddress": "0x104", + "Permission": "RW", + "SegDescription": "负载电阻控制", + "Fields": [ + { + "Bits": [ + 15, + 0 + ], + "FieldName": "dac_r_load", + "ResetValue": "16'h0005", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "负载电阻控制" + } + ] + }, + "dac_mode": { + "OffsetAddress": "0x108", + "Permission": "RW", + "SegDescription": "DAC工作模式选择", + "Fields": [ + { + "Bits": [ + 0 + ], + "FieldName": "dac_mode", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "DAC工作模式选择" + } + ] + }, + "dac_prbs_en": { + "OffsetAddress": "0x10C", + "Permission": "RW", + "SegDescription": "伪随机数生成使能", + "Fields": [ + { + "Bits": [ + 0 + ], + "FieldName": "dac_prbs_en", + "ResetValue": "1’b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "伪随机数生成使能" + } + ] + }, + "dac_set0": { + "OffsetAddress": "0x110", + "Permission": "RW", + "SegDescription": "随机数种子0", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_set0", + "ResetValue": "32'h24cb4cb7", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "随机数种子0" + } + ] + }, + "dac_set1": { + "OffsetAddress": "0x114", + "Permission": "RW", + "SegDescription": "随机数种子1", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_set1", + "ResetValue": "32'h07e66636", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "随机数种子1" + } + ] + }, + "dac_set2": { + "OffsetAddress": "0x118", + "Permission": "RW", + "SegDescription": "随机数种子2", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_set2", + "ResetValue": "32'h2f365fd3", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "随机数种子2" + } + ] + }, + "dac_set3": { + "OffsetAddress": "0x11C", + "Permission": "RW", + "SegDescription": "随机数种子3", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_set3", + "ResetValue": "32'h05376d5f", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "随机数种子3" + } + ] + }, + "dac_set4": { + "OffsetAddress": "0x120", + "Permission": "RW", + "SegDescription": "随机数种子4", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_set4", + "ResetValue": "32'h5eb02d64", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "随机数种子4" + } + ] + }, + "dac_set5": { + "OffsetAddress": "0x124", + "Permission": "RW", + "SegDescription": "随机数种子5", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_set5", + "ResetValue": "32'h6c3472a3", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "随机数种子5" + } + ] + }, + "dac_set6": { + "OffsetAddress": "0x128", + "Permission": "RW", + "SegDescription": "随机数种子6", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_set6", + "ResetValue": "32'h088c374e", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "随机数种子6" + } + ] + }, + "dac_set7": { + "OffsetAddress": "0x12C", + "Permission": "RW", + "SegDescription": "随机数种子7", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_set7", + "ResetValue": "32'h54db24ba", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "随机数种子7" + } + ] + }, + "dac_cas_addr": { + "OffsetAddress": "0x144", + "Permission": "RW", + "SegDescription": "提高电流源vds", + "Fields": [ + { + "Bits": [ + 2, + 0 + ], + "FieldName": "dac_cas_addr", + "ResetValue": "3'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "提高电流源vds" + } + ] + }, + "dac_cas_dw": { + "OffsetAddress": "0x148", + "Permission": "RW", + "SegDescription": "降低电流源vds", + "Fields": [ + { + "Bits": [ + 2, + 0 + ], + "FieldName": "dac_cas_dw", + "ResetValue": "3'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "降低电流源vds" + } + ] + }, + "dac_i_main_ctrl": { + "OffsetAddress": "0x14C", + "Permission": "RW", + "SegDescription": "调整电流源电流", + "Fields": [ + { + "Bits": [ + 17, + 0 + ], + "FieldName": "dac_i_main_ctrl", + "ResetValue": "18'h1f400", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "调整电流源电流" + } + ] + }, + "dac_i_cal_ctrl": { + "OffsetAddress": "0x150", + "Permission": "RW", + "SegDescription": "调整校准电流源电流", + "Fields": [ + { + "Bits": [ + 15, + 0 + ], + "FieldName": "dac_i_cal_ctrl", + "ResetValue": "16'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "调整校准电流源电流" + } + ] + }, + "dac_i_bleed_ctrl": { + "OffsetAddress": "0x154", + "Permission": "RW", + "SegDescription": "调整Bleed电流", + "Fields": [ + { + "Bits": [ + 15, + 0 + ], + "FieldName": "dac_i_bleed_ctrl", + "ResetValue": "16'h3200", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "调整Bleed电流" + } + ] + }, + "dac_bleed_en": { + "OffsetAddress": "0x158", + "Permission": "RW", + "SegDescription": "Bleed电流开关", + "Fields": [ + { + "Bits": [ + 0 + ], + "FieldName": "dac_bleed_en", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "Bleed电流开关" + } + ] + }, + "dac_i_main_cal_ctrl": { + "OffsetAddress": "0x15C", + "Permission": "RW", + "SegDescription": "电流源手动校准写入控制", + "Fields": [ + { + "Bits": [ + 18, + 0 + ], + "FieldName": "dac_i_main_cal_ctrl", + "ResetValue": "19'h00f1f", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "电流源手动校准写入控制" + } + ] + }, + "dac_ical_sr0": { + "OffsetAddress": "0x160", + "Permission": "RO", + "SegDescription": "电流校准状态寄存器0", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ical_sr0", + "ResetValue": "NA", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "电流校准状态寄存器0" + } + ] + }, + "dac_ical_sr1": { + "OffsetAddress": "0x164", + "Permission": "RO", + "SegDescription": "电流校准状态寄存器1", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ical_sr1", + "ResetValue": "NA", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "电流校准状态寄存器1" + } + ] + }, + "dac_ical_sr2": { + "OffsetAddress": "0x168", + "Permission": "RO", + "SegDescription": "电流校准状态寄存器2", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ical_sr2", + "ResetValue": "NA", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "电流校准状态寄存器2" + } + ] + }, + "dac_ical_sr3": { + "OffsetAddress": "0x16C", + "Permission": "RO", + "SegDescription": "电流校准状态寄存器3", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ical_sr3", + "ResetValue": "NA", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "电流校准状态寄存器3" + } + ] + }, + "dac_bias_en": { + "OffsetAddress": "0x170", + "Permission": "RW", + "SegDescription": "偏置使能", + "Fields": [ + { + "Bits": [ + 15, + 0 + ], + "FieldName": "dac_bias_en", + "ResetValue": "16'hff00", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "偏置使能" + } + ] + }, + "dac_bias_ctrl0": { + "OffsetAddress": "0x174", + "Permission": "RW", + "SegDescription": "偏置控制选择0", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_bias_ctrl0", + "ResetValue": "32'h4c003d0a", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "偏置控制选择0" + } + ] + }, + "dac_bias_ctrl1": { + "OffsetAddress": "0x178", + "Permission": "RW", + "SegDescription": "偏置控制选择1", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_bias_ctrl1", + "ResetValue": "32'h09152554", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "偏置控制选择1" + } + ] + }, + "dac_bias_ctrl2": { + "OffsetAddress": "0x17C", + "Permission": "RW", + "SegDescription": "偏置控制选择2", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_bias_ctrl2", + "ResetValue": "32'h10ee0010", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "偏置控制选择2" + } + ] + }, + "dac_bias_ctrl3": { + "OffsetAddress": "0x180", + "Permission": "RW", + "SegDescription": "偏置控制选择3", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_bias_ctrl3", + "ResetValue": "32'h0000ffff", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "偏置控制选择3" + } + ] + }, + "dac_order_ctrl": { + "OffsetAddress": "0x188", + "Permission": "RW", + "SegDescription": "DAC输出采样点调序", + "Fields": [ + { + "Bits": [ + 3, + 0 + ], + "FieldName": "dac_order_ctrl", + "ResetValue": "4'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "DAC输出采样点调序" + } + ] + }, + "dac_i_main_cal_code": { + "OffsetAddress": "0x18C", + "Permission": "RW", + "SegDescription": "电流源手动校准控制码", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_i_main_cal_code", + "ResetValue": "32'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "电流源手动校准控制码" + } + ] + }, + "dac_rsv0": { + "OffsetAddress": "0x190", + "Permission": "RW", + "SegDescription": "保留寄存器0", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv0", + "ResetValue": "32'h02001000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器0" + } + ] + }, + "dac_rsv1": { + "OffsetAddress": "0x194", + "Permission": "RW", + "SegDescription": "保留寄存器1", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv1", + "ResetValue": "32'h5989a7fe", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器1" + } + ] + }, + "dac_rsv2": { + "OffsetAddress": "0x198", + "Permission": "RW", + "SegDescription": "保留寄存器2", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv2", + "ResetValue": "32’hf0000000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器2" + } + ] + }, + "dac_rsv3": { + "OffsetAddress": "0x19C", + "Permission": "RW", + "SegDescription": "保留寄存器3", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv3", + "ResetValue": "32'hff00ff04", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器3" + } + ] + }, + "dac_rsv4": { + "OffsetAddress": "0x1a0", + "Permission": "RW", + "SegDescription": "保留寄存器4", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv4", + "ResetValue": "32’hffff0000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器4" + } + ] + }, + "dac_rsv5": { + "OffsetAddress": "0x1a4", + "Permission": "RW", + "SegDescription": "保留寄存器5", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv5", + "ResetValue": "32'h001fc000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器5" + } + ] + }, + "dac_rsv6": { + "OffsetAddress": "0x1a8", + "Permission": "RW", + "SegDescription": "保留寄存器6", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv6", + "ResetValue": "32’hff000000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器6" + } + ] + }, + "dac_rsv7": { + "OffsetAddress": "0x1aC", + "Permission": "RW", + "SegDescription": "保留寄存器7", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv7", + "ResetValue": "32'hffff003f", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器7" + } + ] + }, + "dac_rsv8": { + "OffsetAddress": "0x1b0", + "Permission": "RW", + "SegDescription": "保留寄存器8", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv8", + "ResetValue": "32’hffff0000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器8" + } + ] + }, + "dac_rsv9": { + "OffsetAddress": "0x1b4", + "Permission": "RW", + "SegDescription": "保留寄存器9", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_rsv9", + "ResetValue": "32'hffff0000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器9" + } + ] + } + }, + "SYS_PLL": { + "intpll_refctrl": { + "OffsetAddress": "0x00", + "Permission": "RW", + "SegDescription": "输入时钟控制", + "Fields": [ + { + "Bits": [ + 18 + ], + "FieldName": "ref_s_to_d", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "参考时钟单端到差分转换" + }, + { + "Bits": [ + 17 + ], + "FieldName": "ref_en", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "输入参考时钟使能" + }, + { + "Bits": [ + 16 + ], + "FieldName": "ref_sel", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "分频器时钟源选择信号" + } + ] + }, + "intpll_pcnt": { + "OffsetAddress": "0x04", + "Permission": "RW", + "SegDescription": "P计数器,乘2等于分频比", + "Fields": [ + { + "Bits": [ + 22, + 16 + ], + "FieldName": "p_cnt", + "ResetValue": "7'b0001100", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "P计数器,乘2等于分频比" + } + ] + }, + "intpll_pfdctrl": { + "OffsetAddress": "0x08", + "Permission": "RW", + "SegDescription": "PFD控制", + "Fields": [ + { + "Bits": [ + 18 + ], + "FieldName": "pfd_dff_4and", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PFD输出极性设置" + }, + { + "Bits": [ + 17 + ], + "FieldName": "pfd_dff_set", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PFD中触发器置位" + }, + { + "Bits": [ + 16 + ], + "FieldName": "pfd_delay", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PFD死区" + } + ] + }, + "intpll_spdctrl": { + "OffsetAddress": "0x0c", + "Permission": "RW", + "SegDescription": "SPD控制", + "Fields": [ + { + "Bits": [ + 21 + ], + "FieldName": "spd_pulse_sw", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "SPD脉冲开关" + }, + { + "Bits": [ + 20 + ], + "FieldName": "spd_pulse_width", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "SPD脉冲宽度" + }, + { + "Bits": [ + 19, + 16 + ], + "FieldName": "spd_div", + "ResetValue": "4'b0100", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "SPD分频比" + } + ] + }, + "intpll_ptatctrl": { + "OffsetAddress": "0x10", + "Permission": "RW", + "SegDescription": "PTAT控制", + "Fields": [ + { + "Bits": [ + 21, + 18 + ], + "FieldName": "sw_ptat_r", + "ResetValue": "4'b1000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PTAT电流调节" + }, + { + "Bits": [ + 17 + ], + "FieldName": "sw_ptat_i", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PTAT电流开关" + }, + { + "Bits": [ + 16 + ], + "FieldName": "cpc_sel", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PTAT电流与恒流源切换" + } + ] + }, + "intpll_selctrl": { + "OffsetAddress": "0x14", + "Permission": "RW", + "SegDescription": "SEL控制", + "Fields": [ + { + "Bits": [ + 18 + ], + "FieldName": "dtd_en", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "占空比校准开关" + }, + { + "Bits": [ + 17 + ], + "FieldName": "spd_sel", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "SPD环选择" + }, + { + "Bits": [ + 16 + ], + "FieldName": "pfd_sel", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PFD环选择" + } + ] + }, + "intpll_vcoctrl": { + "OffsetAddress": "0x18", + "Permission": "RW", + "SegDescription": "VCO控制", + "Fields": [ + { + "Bits": [ + 31, + 24 + ], + "FieldName": "vco_fb", + "ResetValue": "8'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "VCO频率带宽调节" + }, + { + "Bits": [ + 23 + ], + "FieldName": "vco_en", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "VCO使能" + }, + { + "Bits": [ + 22 + ], + "FieldName": "vco_buf_en", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "VCO BUFF使能" + }, + { + "Bits": [ + 21, + 19 + ], + "FieldName": "vco_cur", + "ResetValue": "3'b111", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "VCO电流调节" + }, + { + "Bits": [ + 18 + ], + "FieldName": "vco_gain_r", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "VCO增益调节电阻" + }, + { + "Bits": [ + 17 + ], + "FieldName": "vco_gain", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "VCO增益调节" + }, + { + "Bits": [ + 16 + ], + "FieldName": "vco_tc_r", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "VCO温度补偿电阻" + }, + { + "Bits": [ + 15 + ], + "FieldName": "vco_tc", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "VCO温度补偿" + } + ] + }, + "intpll_tcctrl": { + "OffsetAddress": "0x1c", + "Permission": "RW", + "SegDescription": "TC控制", + "Fields": [ + { + "Bits": [ + 26, + 23 + ], + "FieldName": "tc_sel", + "ResetValue": "4'b0100", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "温度补偿选择" + }, + { + "Bits": [ + 22 + ], + "FieldName": "ptat_res_en", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PTAT MOS电阻使能" + }, + { + "Bits": [ + 21 + ], + "FieldName": "ptat_s_dc_sel", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PTAT斜率DC选择" + }, + { + "Bits": [ + 20 + ], + "FieldName": "ptat_res_vdc300", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PTAT MOS电阻偏置" + }, + { + "Bits": [ + 19 + ], + "FieldName": "ptat_res_vdc500", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PTAT MOS电阻偏置" + }, + { + "Bits": [ + 18 + ], + "FieldName": "ptat_res_vdc800", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "PTAT MOS电阻偏置" + }, + { + "Bits": [ + 17 + ], + "FieldName": "sw_var_temp_en", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "温度补偿自动开关" + }, + { + "Bits": [ + 16 + ], + "FieldName": "sw_var_temp", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "温度补偿手动开关" + } + ] + }, + "intpll_afcctrl": { + "OffsetAddress": "0x20", + "Permission": "RW", + "SegDescription": "AFC控制", + "Fields": [ + { + "Bits": [ + 23, + 20 + ], + "FieldName": "afc_pres", + "ResetValue": "4'b0011", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC比较器精度调节" + }, + { + "Bits": [ + 19 + ], + "FieldName": "afc_clk_sel", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC时钟频率选择" + }, + { + "Bits": [ + 18 + ], + "FieldName": "afc_shutdown", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC模块关闭信号" + }, + { + "Bits": [ + 17 + ], + "FieldName": "afc_reset", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC模块复位信号" + }, + { + "Bits": [ + 16 + ], + "FieldName": "afc_en", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC模块使能" + } + ] + }, + "intpll_afcfbctrl": { + "OffsetAddress": "0x24", + "Permission": "RW", + "SegDescription": "AFC反馈控制", + "Fields": [ + { + "Bits": [ + 31, + 17 + ], + "FieldName": "afc_fb_target", + "ResetValue": "15'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC频带调整功能目标周期数目调节" + }, + { + "Bits": [ + 16, + 6 + ], + "FieldName": "afc_fb_cnt", + "ResetValue": "11'b00011001000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC频带调整功能计数器计数时间调节" + } + ] + }, + "intpll_afcldcnt": { + "OffsetAddress": "0x28", + "Permission": "RW", + "SegDescription": "AFC锁定探测计数", + "Fields": [ + { + "Bits": [ + 31, + 17 + ], + "FieldName": "afc_ld_target", + "ResetValue": "15'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC锁定检测功能目标周期数目" + }, + { + "Bits": [ + 16, + 6 + ], + "FieldName": "afc_ld_cnt", + "ResetValue": "11'b11001000000", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC锁定检测功能计数器计数时间调节" + } + ] + }, + "intpll_testclk": { + "OffsetAddress": "0x30", + "Permission": "RW", + "SegDescription": "测试时钟输出使能", + "Fields": [ + { + "Bits": [ + 20 + ], + "FieldName": "test_clk_oen", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "测试时钟输出使能" + } + ] + }, + "intpll_status": { + "OffsetAddress": "0x38", + "Permission": "RO", + "SegDescription": "PLL状态寄存器", + "Fields": [ + { + "Bits": [ + 17 + ], + "FieldName": "afc_end_flag", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "AFC结束信号" + }, + { + "Bits": [ + 16 + ], + "FieldName": "ld_flag", + "ResetValue": "1'b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "锁相环锁定信号" + } + ] + }, + "intpll_update": { + "OffsetAddress": "0x40", + "Permission": "RW", + "SegDescription": "寄存器更新", + "Fields": [ + { + "Bits": [ + 16 + ], + "FieldName": "update", + "ResetValue": "1’b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "寄存器更新" + } + ] + }, + "clkrx_pdn": { + "OffsetAddress": "0x44", + "Permission": "RW", + "SegDescription": "预留DAC接收时钟使能", + "Fields": [ + { + "Bits": [ + 16 + ], + "FieldName": "clkrx_pdn", + "ResetValue": "1’b0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "预留DAC接收时钟使能控制" + } + ] + }, + "clk_resv": { + "OffsetAddress": "0x48", + "Permission": "RW", + "SegDescription": "保留寄存器", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "clk_resv", + "ResetValue": "16'h6dee", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "保留寄存器" + } + ] + }, + "dac_ccal_reset": { + "OffsetAddress": "0x4C", + "Permission": "RW", + "SegDescription": "时钟校准复位", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "dac_ccal_reset", + "ResetValue": "16'h07e8", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "时钟校准复位" + } + ] + }, + "dac_ccal_auto_en": { + "OffsetAddress": "0x50", + "Permission": "RW", + "SegDescription": "时钟自动校准使能", + "Fields": [ + { + "Bits": [ + 16 + ], + "FieldName": "dac_ccal_auto_en", + "ResetValue": "1'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "时钟自动校准使能" + } + ] + }, + "dac_ccal_sel_align": { + "OffsetAddress": "0x54", + "Permission": "RW", + "SegDescription": "时钟相位选择", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "dac_ccal_sel_align", + "ResetValue": "16'h3501", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "时钟相位选择" + } + ] + }, + "dac_ccal_dcc_qec": { + "OffsetAddress": "0x58", + "Permission": "RW", + "SegDescription": "占空比和相位对其校准使能或手动模式控制", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ccal_dcc_qec", + "ResetValue": "32'h0002299a", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "占空比和相位对其校准使能或手动模式控制" + } + ] + }, + "dac_ccal_qec_ctrl0": { + "OffsetAddress": "0x5C", + "Permission": "RW", + "SegDescription": "正交校准控制0", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ccal_qec_ctrl0", + "ResetValue": "32'h0", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "正交校准控制0" + } + ] + }, + "dac_ccal_qec_ctrl1": { + "OffsetAddress": "0x60", + "Permission": "RW", + "SegDescription": "正交校准控制1", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ccal_qec_ctrl1", + "ResetValue": "32'h0fff0001", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "正交校准控制1" + } + ] + }, + "dac_ccal_dcc_ctrl0": { + "OffsetAddress": "0x64", + "Permission": "RW", + "SegDescription": "占空比校准控制0", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ccal_dcc_ctrl0", + "ResetValue": "32'h0fff0001", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "占空比校准控制0" + } + ] + }, + "dac_ccal_dcc_ctrl1": { + "OffsetAddress": "0x68", + "Permission": "RW", + "SegDescription": "占空比校准控制1", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ccal_dcc_ctrl1", + "ResetValue": "32'h0fff0001", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "占空比校准控制1" + } + ] + }, + "div_sync_dlyc": { + "OffsetAddress": "0x6C", + "Permission": "RW", + "SegDescription": "延迟时长控制位", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "div_sync_dlyc", + "ResetValue": "16'h0001", + "Range": { + "value": [ + "16'h1", + "16'h2", + "16'h4", + "16'h8", + "16'h10", + "16'h20", + "16'h40", + "16'h80", + "16'h100", + "16'h200", + "16'h400", + "16'h800", + "16'h1000", + "16'h2000", + "16'h4000", + "16'h8000" + ], + "type": "set" + }, + "FieldDescription": "延迟时长控制位" + } + ] + }, + "sync_clr_n": { + "OffsetAddress": "0x70", + "Permission": "RW", + "SegDescription": "分频器同步清零复位使能", + "Fields": [ + { + "Bits": [ + 16 + ], + "FieldName": "sync_clr_n", + "ResetValue": "1'b1", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "分频器同步清零复位使能" + } + ] + }, + "dac_ccal_dcc_ctrl2": { + "OffsetAddress": "0x74", + "Permission": "RW", + "SegDescription": "占空比校准控制2", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ccal_dcc_ctrl2", + "ResetValue": "32'h0000ffff", + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "占空比校准控制2" + } + ] + }, + "dac_ccal_st": { + "OffsetAddress": "0x78", + "Permission": "RO", + "SegDescription": "时钟校准状态", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "dac_ccal_st", + "ResetValue": "32’h0", + "Range": { + "value": "NA", + "type": "str" + }, + "FieldDescription": "时钟校准状态" + } + ] + } + }, + "TRIG_CTRL": { + "sync_cmmand": { + "OffsetAddress": "0x00", + "Permission": "WC", + "SegDescription": "同步命令", + "Fields": [ + { + "Bits": [ + 10 + ], + "FieldName": "sync_clr_val", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "同步状态检测清除" + }, + { + "Bits": [ + 8 + ], + "FieldName": "sync_srst_val", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "全局同步状态机复位" + }, + { + "Bits": [ + 2 + ], + "FieldName": "idelay_load_val", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "idelay延迟设置加载" + }, + { + "Bits": [ + 1 + ], + "FieldName": "int_trig_val", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "内部同步信号命令" + }, + { + "Bits": [ + 0 + ], + "FieldName": "daq2sync_val", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "全局同步信号发出" + } + ] + }, + "sync_function": { + "OffsetAddress": "0x04", + "Permission": "RW", + "SegDescription": "同步功能", + "Fields": [ + { + "Bits": [ + 6 + ], + "FieldName": "adc1_sync_en", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "ADC1同步使能" + }, + { + "Bits": [ + 5 + ], + "FieldName": "adc0_sync_en", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "ADC0同步使能" + }, + { + "Bits": [ + 4 + ], + "FieldName": "sync_clk_sel", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "同步驱动时钟选择,0:62.5MHz;1:250MHz" + }, + { + "Bits": [ + 3, + 2 + ], + "FieldName": "clk_sync_en", + "ResetValue": 0, + "Range": { + "value": [ + "0", + "1" + ], + "type": "list" + }, + "FieldDescription": "LMK04821同步使能,0:不使能;1:使能" + }, + { + "Bits": [ + 1 + ], + "FieldName": "daq2sync_cas_sel", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "同步级联信号选择" + }, + { + "Bits": [ + 0 + ], + "FieldName": "daq2sync_ref_sel", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "同步参考信号选择" + } + ] + }, + "sync_ctrl": { + "OffsetAddress": "0x10", + "Permission": "RW", + "SegDescription": "同步控制和监视", + "Fields": [ + { + "Bits": [ + 31, + 16 + ], + "FieldName": "sync_error_cnt", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "读有效,同步检测错误计数" + }, + { + "Bits": [ + 4, + 0 + ], + "FieldName": "sync_idelay_tap", + "ResetValue": 0, + "Range": { + "value": "ANY", + "type": "str" + }, + "FieldDescription": "写:设置输入延迟,读实际输入延迟" + } + ] + }, + "intra_cycle_p": { + "OffsetAddress": "0x18", + "Permission": "RW", + "SegDescription": "同步间隔周期", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "intra_cycle_p", + "ResetValue": 64, + "Range": { + "value": [ + "64", + "1000000" + ], + "type": "list" + }, + "FieldDescription": "同步间隔周期" + } + ] + }, + "intra_cycle_c": { + "OffsetAddress": "0x1C", + "Permission": "RW", + "SegDescription": "同步脉冲个数", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "intra_cycle_c", + "ResetValue": 1, + "Range": { + "value": [ + "1", + "1000000" + ], + "type": "list" + }, + "FieldDescription": "同步脉冲个数" + } + ] + } + }, + "PUMP_REG": { + "pump_freq": { + "OffsetAddress": "0x200000", + "Permission": "RW", + "SegDescription": "Pump输出频率控制字", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "pump_freq", + "ResetValue": 7000000, + "Range": { + "value": [ + "7000000", + "9000000" + ], + "type": "list" + }, + "FieldDescription": "Pump输出频率控制字" + } + ] + }, + "pump_power": { + "OffsetAddress": "0x300000", + "Permission": "RW", + "SegDescription": "Pump输出功率控制字", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "pump_power", + "ResetValue": -200, + "Range": { + "value": [ + "-1300", + "-200" + ], + "type": "list" + }, + "FieldDescription": "Pump输出功率控制字" + } + ] + }, + "pump_enable": { + "OffsetAddress": "0x400000", + "Permission": "RW", + "SegDescription": "Pump输出使能控制字", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "pump_enable", + "ResetValue": "32'h00", + "Range": { + "value": [ + "32'h11", + "32'h00" + ], + "type": "set" + }, + "FieldDescription": "Pump输出使能控制字" + } + ] + } + }, + "MIXER_REG": { + "lo_freq": { + "OffsetAddress": "0x00", + "Permission": "RW", + "SegDescription": "本振频率控制字", + "Fields": [ + { + "Bits": [ + 31, + 0 + ], + "FieldName": "fcw", + "ResetValue": 5500000, + "Range": { + "value": [ + "5400000", + "5600000" + ], + "type": "list" + }, + "FieldDescription": "本振频率控制字" + } + ] + } + } + } +} \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..f376b57 --- /dev/null +++ b/readme.md @@ -0,0 +1,6 @@ +# 数据手册 +本项目为读出子系统的操作手册,内容涵盖下列四个部分,通过阅读本文档,量子实验用户、QOS开发用户、驱动开发用户以及实验运维用户和能够更好理解和使用本系统。 +* 读出子系统的编程控制模型 +* 读出子系统历史无关功能配置集 +* 读出子系统运维操作手册 +* 读出子系统软件接口描述表 diff --git a/script/ids_import.ipynb b/script/ids_import.ipynb new file mode 100644 index 0000000..ca0475e --- /dev/null +++ b/script/ids_import.ipynb @@ -0,0 +1,191 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "6e833fe7", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import json\n", + "import re\n", + "\n", + "def parse_range_string(s):\n", + " if pd.isna(s):\n", + " s = \"NA\"\n", + "\n", + " # 尝试匹配花括号 {} 格式\n", + " match = re.match(r\"{(.*)}\", s.strip())\n", + " if match:\n", + " items = [x.strip() for x in match.group(1).split(\",\")]\n", + " return items, \"set\"\n", + " \n", + " # 尝试匹配方括号 [] 格式\n", + " match = re.match(r\"\\[(.*)\\]\", s.strip())\n", + " if match:\n", + " items = [x.strip() for x in match.group(1).split(\",\")]\n", + " return items, \"list\"\n", + " \n", + " # 都不是集合或列表格式\n", + " return s, \"str\"\n", + "\n", + "def parse_xls_register(file_path):\n", + " # 读取header sheet\n", + " header_df = pd.read_excel(file_path, sheet_name='header', header=None)\n", + " header_info = dict(zip(\n", + " ['BoardType', 'Version', 'Creator', 'Date', 'Info'],\n", + " header_df.iloc[1, :5]\n", + " ))\n", + "\n", + " # 读取mapping sheet\n", + " mapping_df = pd.read_excel(file_path, sheet_name='mapping')\n", + " mapping_info = {}\n", + " channel_type_info = {}\n", + " channel_info = {}\n", + " \n", + " for _, row in mapping_df.iterrows():\n", + " if row.iloc[0] == '#' or pd.isna(row['ModuleName']):\n", + " if channel_info:\n", + " channel_type_info[int(channel_row['ChannelNum'])] = channel_info\n", + " mapping_info[channel_type_row['ChannelType']] = channel_type_info\n", + " break\n", + "\n", + " if not pd.isna(row['ChannelType']):\n", + " if channel_info:\n", + " channel_type_info[int(channel_row['ChannelNum'])] = channel_info\n", + " mapping_info[channel_type_row['ChannelType']] = channel_type_info\n", + " channel_type_info = {}\n", + " channel_type_row = channel_row = row\n", + " channel_info = {\n", + " 'Exaddr': int(row['Exaddr']),\n", + " 'Cid': int(row['Cid']),\n", + " 'Modules': {}\n", + " }\n", + " elif not pd.isna(row['ChannelNum']):\n", + " if channel_info:\n", + " channel_type_info[int(channel_row['ChannelNum'])] = channel_info\n", + " channel_row = row\n", + " channel_info = {\n", + " 'Exaddr': int(row['Exaddr']),\n", + " 'Cid': int(row['Cid']),\n", + " 'Modules': {}\n", + " }\n", + "\n", + " if not pd.isna(row['ModuleName']):\n", + " module = {k: row[k] for k in ['StartAddress', 'Size', 'Info']}\n", + " channel_info['Modules'][row['ModuleName']] = module\n", + "\n", + " # 读取模块段信息\n", + " xls = pd.ExcelFile(file_path)\n", + " modules_info = {}\n", + " \n", + " for sheet_name in xls.sheet_names:\n", + " if sheet_name in ['header', 'mapping']:\n", + " continue\n", + " \n", + " seg_df = pd.read_excel(file_path, sheet_name)\n", + " segments = {}\n", + " current_seg = None\n", + "\n", + " if 'FieldName' not in seg_df.columns:\n", + " # 第一种格式\n", + " for _, row in seg_df.iterrows():\n", + " if row.iloc[0] == '#':\n", + " break\n", + "\n", + " if not pd.isna(row['OffsetAddress']):\n", + " current_seg = {\n", + " 'OffsetAddress': row['OffsetAddress'],\n", + " 'Permission': row['Permission'],\n", + " 'SegDescription': row['SegDescription']\n", + " }\n", + " segments[row['SegName'].lower()] = current_seg\n", + "\n", + " else:\n", + " # 第二种格式\n", + " for _, row in seg_df.iterrows():\n", + " if row.iloc[0] == '#':\n", + " break\n", + " \n", + " if not pd.isna(row['OffsetAddress']):\n", + " current_seg = {\n", + " 'OffsetAddress': row['OffsetAddress'],\n", + " 'Permission': row['Permission'],\n", + " 'SegDescription': row['SegDescription'],\n", + " 'Fields': []\n", + " }\n", + " segments[row['SegName'].lower()] = current_seg\n", + " \n", + " if current_seg and not pd.isna(row['Bits']):\n", + " field = {\n", + " 'Bits': list(map(int, row['Bits'].strip('[]').split(':'))),\n", + " 'FieldName': row['FieldName'].lower(),\n", + " 'ResetValue': \"NA\" if pd.isna(row['ResetValue']) else row['ResetValue'],\n", + " 'Range': dict(zip([\"value\",\"type\"], parse_range_string(row['Range']))),\n", + " 'FieldDescription': row['FieldDescription']\n", + " }\n", + " current_seg['Fields'].append(field)\n", + " \n", + " modules_info[sheet_name] = segments\n", + "\n", + " return {\n", + " 'HeaderInfo': header_info,\n", + " 'MappingInfo': mapping_info,\n", + " 'Modules': modules_info\n", + " }\n", + "\n", + "# 使用示例\n", + "if __name__ == \"__main__\":\n", + " file_name = \"读出子系统IDS表\"\n", + " register_data = parse_xls_register(f\"{file_name}.xls\")\n", + "\n", + " with open(f\"../ids/{file_name}.json\", 'w', encoding='utf-8') as f:\n", + " json.dump(register_data, f, ensure_ascii=False, indent=4)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2fd87a52", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'HeaderInfo': {'BoardType': 'READOUT', 'Version': '1.0.0', 'Creator': '郭成', 'Date': '2025.08.21', 'Info': 'READOUT子系统FPGA平台地址映射表'}, 'MappingInfo': {'msmt_acq': {'0': {'Exaddr': 0, 'Cid': 0, 'Modules': {'MCU_INS': {'StartAddress': '0x00200000', 'Size': '16KB', 'Info': '采集通道MCU运行指令配置'}, 'MCU_DAT': {'StartAddress': '0x00300000', 'Size': '16KB', 'Info': '采集通道MCU初始数据配置'}, 'DAQ_REG': {'StartAddress': '0x00400000', 'Size': '256B', 'Info': '采集通道控制寄存器配置'}, 'DAQ_PAR': {'StartAddress': '0x00500000', 'Size': '32KB', 'Info': '采集通道读出参数配置'}, 'DAQ_FLT': {'StartAddress': '0x00580000', 'Size': '512KB', 'Info': '采集通道匹配滤波器系数配置'}}}, '1': {'Exaddr': 1, 'Cid': 0, 'Modules': {'MCU_INS': {'StartAddress': '0x00200000', 'Size': '16KB', 'Info': '采集通道MCU运行指令配置'}, 'MCU_DAT': {'StartAddress': '0x00300000', 'Size': '16KB', 'Info': '采集通道MCU初始数据配置'}, 'DAQ_REG': {'StartAddress': '0x00400000', 'Size': '256B', 'Info': '采集通道控制寄存器配置'}, 'DAQ_PAR': {'StartAddress': '0x00500000', 'Size': '32KB', 'Info': '采集通道读出参数配置'}, 'DAQ_FLT': {'StartAddress': '0x00580000', 'Size': '512KB', 'Info': '采集通道匹配滤波器系数配置'}}}, '2': {'Exaddr': 2, 'Cid': 0, 'Modules': {'MCU_INS': {'StartAddress': '0x00200000', 'Size': '16KB', 'Info': '采集通道MCU运行指令配置'}, 'MCU_DAT': {'StartAddress': '0x00300000', 'Size': '16KB', 'Info': '采集通道MCU初始数据配置'}, 'DAQ_REG': {'StartAddress': '0x00400000', 'Size': '256B', 'Info': '采集通道控制寄存器配置'}, 'DAQ_PAR': {'StartAddress': '0x00500000', 'Size': '32KB', 'Info': '采集通道读出参数配置'}, 'DAQ_FLT': {'StartAddress': '0x00580000', 'Size': '512KB', 'Info': '采集通道匹配滤波器系数配置'}}}, '3': {'Exaddr': 3, 'Cid': 0, 'Modules': {'MCU_INS': {'StartAddress': '0x00200000', 'Size': '16KB', 'Info': '采集通道MCU运行指令配置'}, 'MCU_DAT': {'StartAddress': '0x00300000', 'Size': '16KB', 'Info': '采集通道MCU初始数据配置'}, 'DAQ_REG': {'StartAddress': '0x00400000', 'Size': '256B', 'Info': '采集通道控制寄存器配置'}, 'DAQ_PAR': {'StartAddress': '0x00500000', 'Size': '32KB', 'Info': '采集通道读出参数配置'}, 'DAQ_FLT': {'StartAddress': '0x00580000', 'Size': '512KB', 'Info': '采集通道匹配滤波器系数配置'}}}}, 'msmt_exci': {'0': {'Exaddr': 0, 'Cid': 0, 'Modules': {'MCU_INS': {'StartAddress': '0x00700000', 'Size': '16KB', 'Info': '激励通道MCU运行指令配置'}, 'MCU_DAT': {'StartAddress': '0x00800000', 'Size': '16KB', 'Info': '激励通道MCU初始数据配置'}, 'AWG_REG': {'StartAddress': '0x00900000', 'Size': '256B', 'Info': '激励通道控制寄存器配置'}, 'AWG_IDX': {'StartAddress': '0x00A00000', 'Size': '1KB', 'Info': '激励通道波形索引表配置'}, 'AWG_WVE': {'StartAddress': '0x00B00000', 'Size': '128KB', 'Info': '激励通道输出波形数据配置'}}}, '1': {'Exaddr': 1, 'Cid': 0, 'Modules': {'MCU_INS': {'StartAddress': '0x00700000', 'Size': '16KB', 'Info': '激励通道MCU运行指令配置'}, 'MCU_DAT': {'StartAddress': '0x00800000', 'Size': '16KB', 'Info': '激励通道MCU初始数据配置'}, 'AWG_REG': {'StartAddress': '0x00900000', 'Size': '256B', 'Info': '激励通道控制寄存器配置'}, 'AWG_IDX': {'StartAddress': '0x00A00000', 'Size': '1KB', 'Info': '激励通道波形索引表配置'}, 'AWG_WVE': {'StartAddress': '0x00B00000', 'Size': '128KB', 'Info': '激励通道输出波形数据配置'}}}, '2': {'Exaddr': 2, 'Cid': 0, 'Modules': {'MCU_INS': {'StartAddress': '0x00700000', 'Size': '16KB', 'Info': '激励通道MCU运行指令配置'}, 'MCU_DAT': {'StartAddress': '0x00800000', 'Size': '16KB', 'Info': '激励通道MCU初始数据配置'}, 'AWG_REG': {'StartAddress': '0x00900000', 'Size': '256B', 'Info': '激励通道控制寄存器配置'}, 'AWG_IDX': {'StartAddress': '0x00A00000', 'Size': '1KB', 'Info': '激励通道波形索引表配置'}, 'AWG_WVE': {'StartAddress': '0x00B00000', 'Size': '128KB', 'Info': '激励通道输出波形数据配置'}}}, '3': {'Exaddr': 3, 'Cid': 0, 'Modules': {'MCU_INS': {'StartAddress': '0x00700000', 'Size': '16KB', 'Info': '激励通道MCU运行指令配置'}, 'MCU_DAT': {'StartAddress': '0x00800000', 'Size': '16KB', 'Info': '激励通道MCU初始数据配置'}, 'AWG_REG': {'StartAddress': '0x00900000', 'Size': '256B', 'Info': '激励通道控制寄存器配置'}, 'AWG_IDX': {'StartAddress': '0x00A00000', 'Size': '1KB', 'Info': '激励通道波形索引表配置'}, 'AWG_WVE': {'StartAddress': '0x00B00000', 'Size': '128KB', 'Info': '激励通道输出波形数据配置'}}}}, 'system': {'0': {'Exaddr': 0, 'Cid': 0, 'Modules': {'SYS_REG': {'StartAddress': '0x00000000', 'Size': '64B', 'Info': '读出系统ADC和DAC配置'}, 'SYS_ANA': {'StartAddress': '0x00100000', 'Size': '512B', 'Info': '读出系统整体寄存器配置'}, 'SYS_PLL': {'StartAddress': '0x01F00000', 'Size': '256B', 'Info': '读出系统时钟配置'}}}, '1': {'Exaddr': 1, 'Cid': 0, 'Modules': {'SYS_REG': {'StartAddress': '0x00000000', 'Size': '64B', 'Info': '读出系统ADC和DAC配置'}, 'SYS_ANA': {'StartAddress': '0x00100000', 'Size': '512B', 'Info': '读出系统整体寄存器配置'}, 'SYS_PLL': {'StartAddress': '0x01F00000', 'Size': '256B', 'Info': '读出系统时钟配置'}}}, '2': {'Exaddr': 2, 'Cid': 0, 'Modules': {'SYS_REG': {'StartAddress': '0x00000000', 'Size': '64B', 'Info': '读出系统ADC和DAC配置'}, 'SYS_ANA': {'StartAddress': '0x00100000', 'Size': '512B', 'Info': '读出系统整体寄存器配置'}, 'SYS_PLL': {'StartAddress': '0x01F00000', 'Size': '256B', 'Info': '读出系统时钟配置'}}}, '3': {'Exaddr': 3, 'Cid': 0, 'Modules': {'SYS_REG': {'StartAddress': '0x00000000', 'Size': '64B', 'Info': '读出系统ADC和DAC配置'}, 'SYS_ANA': {'StartAddress': '0x00100000', 'Size': '512B', 'Info': '读出系统整体寄存器配置'}, 'SYS_PLL': {'StartAddress': '0x01F00000', 'Size': '256B', 'Info': '读出系统时钟配置'}}}}, 'trigger': {'0': {'Exaddr': 4, 'Cid': 0, 'Modules': {'TRIG_CTRL': {'StartAddress': '0x00400000', 'Size': '32B', 'Info': '控制触发信号发出,启动实验运行'}}}}, 'pump': {'0': {'Exaddr': 0, 'Cid': 0, 'Modules': {'PUMP_REG': {'StartAddress': '0x00000000', 'Size': '16MB', 'Info': '混频板泵浦通道0控制寄存器'}}}, '1': {'Exaddr': 0, 'Cid': 0, 'Modules': {'PUMP_REG': {'StartAddress': '0x00010000', 'Size': '16MB', 'Info': '混频板泵浦通道1控制寄存器'}}}, '2': {'Exaddr': 0, 'Cid': 0, 'Modules': {'PUMP_REG': {'StartAddress': '0x00020000', 'Size': '16MB', 'Info': '混频板泵浦通道2控制寄存器'}}}, '3': {'Exaddr': 0, 'Cid': 0, 'Modules': {'PUMP_REG': {'StartAddress': '0x00030000', 'Size': '16MB', 'Info': '混频板泵浦通道3控制寄存器'}}}}, 'mixer': {'0': {'Exaddr': 0, 'Cid': 0, 'Modules': {'MIXER_REG': {'StartAddress': '0x00100000', 'Size': '4B', 'Info': '混频板变频控制寄存器'}}}}}, 'Modules': {'DAQ_PAR': {'q0': {'OffsetAddress': '0x0000', 'Permission': 'RW', 'SegDescription': 'Qubit0读出参数'}, 'q1': {'OffsetAddress': '0x0800', 'Permission': 'RW', 'SegDescription': 'Qubit1读出参数'}, 'q2': {'OffsetAddress': '0x1000', 'Permission': 'RW', 'SegDescription': 'Qubit2读出参数'}, 'q3': {'OffsetAddress': '0x1800', 'Permission': 'RW', 'SegDescription': 'Qubit3读出参数'}, 'q4': {'OffsetAddress': '0x2000', 'Permission': 'RW', 'SegDescription': 'Qubit4读出参数'}, 'q5': {'OffsetAddress': '0x2800', 'Permission': 'RW', 'SegDescription': 'Qubit5读出参数'}, 'q6': {'OffsetAddress': '0x3000', 'Permission': 'RW', 'SegDescription': 'Qubit6读出参数'}, 'q7': {'OffsetAddress': '0x3800', 'Permission': 'RW', 'SegDescription': 'Qubit7读出参数'}, 'q8': {'OffsetAddress': '0x4000', 'Permission': 'RW', 'SegDescription': 'Qubit8读出参数'}, 'q9': {'OffsetAddress': '0x4800', 'Permission': 'RW', 'SegDescription': 'Qubit9读出参数'}, 'q10': {'OffsetAddress': '0x5000', 'Permission': 'RW', 'SegDescription': 'Qubit10读出参数'}, 'q11': {'OffsetAddress': '0x5800', 'Permission': 'RW', 'SegDescription': 'Qubit11读出参数'}, 'q12': {'OffsetAddress': '0x6000', 'Permission': 'RW', 'SegDescription': 'Qubit12读出参数'}, 'q13': {'OffsetAddress': '0x6800', 'Permission': 'RW', 'SegDescription': 'Qubit13读出参数'}, 'q14': {'OffsetAddress': '0x7000', 'Permission': 'RW', 'SegDescription': 'Qubit14读出参数'}, 'q15': {'OffsetAddress': '0x7800', 'Permission': 'RW', 'SegDescription': 'Qubit15读出参数'}}, 'DAQ_FLT': {'q0i': {'OffsetAddress': '0x00000', 'Permission': 'RW', 'SegDescription': 'Qubit0 I路匹配滤波器系数'}, 'q0q': {'OffsetAddress': '0x04000', 'Permission': 'RW', 'SegDescription': 'Qubit0 Q路匹配滤波器系数'}, 'q1i': {'OffsetAddress': '0x08000', 'Permission': 'RW', 'SegDescription': 'Qubit1 I路匹配滤波器系数'}, 'q1q': {'OffsetAddress': '0x0C000', 'Permission': 'RW', 'SegDescription': 'Qubit1 Q路匹配滤波器系数'}, 'q2i': {'OffsetAddress': '0x10000', 'Permission': 'RW', 'SegDescription': 'Qubit2 I路匹配滤波器系数'}, 'q2q': {'OffsetAddress': '0x14000', 'Permission': 'RW', 'SegDescription': 'Qubit2 Q路匹配滤波器系数'}, 'q3i': {'OffsetAddress': '0x18000', 'Permission': 'RW', 'SegDescription': 'Qubit3 I路匹配滤波器系数'}, 'q3q': {'OffsetAddress': '0x1C000', 'Permission': 'RW', 'SegDescription': 'Qubit3 Q路匹配滤波器系数'}, 'q4i': {'OffsetAddress': '0x20000', 'Permission': 'RW', 'SegDescription': 'Qubit4 I路匹配滤波器系数'}, 'q4q': {'OffsetAddress': '0x24000', 'Permission': 'RW', 'SegDescription': 'Qubit4 Q路匹配滤波器系数'}, 'q5i': {'OffsetAddress': '0x28000', 'Permission': 'RW', 'SegDescription': 'Qubit5 I路匹配滤波器系数'}, 'q5q': {'OffsetAddress': '0x2C000', 'Permission': 'RW', 'SegDescription': 'Qubit5 Q路匹配滤波器系数'}, 'q6i': {'OffsetAddress': '0x30000', 'Permission': 'RW', 'SegDescription': 'Qubit6 I路匹配滤波器系数'}, 'q6q': {'OffsetAddress': '0x34000', 'Permission': 'RW', 'SegDescription': 'Qubit6 Q路匹配滤波器系数'}, 'q7i': {'OffsetAddress': '0x38000', 'Permission': 'RW', 'SegDescription': 'Qubit7 I路匹配滤波器系数'}, 'q7q': {'OffsetAddress': '0x3C000', 'Permission': 'RW', 'SegDescription': 'Qubit7 Q路匹配滤波器系数'}, 'q8i': {'OffsetAddress': '0x40000', 'Permission': 'RW', 'SegDescription': 'Qubit8 I路匹配滤波器系数'}, 'q8q': {'OffsetAddress': '0x44000', 'Permission': 'RW', 'SegDescription': 'Qubit8 Q路匹配滤波器系数'}, 'q9i': {'OffsetAddress': '0x48000', 'Permission': 'RW', 'SegDescription': 'Qubit9 I路匹配滤波器系数'}, 'q9q': {'OffsetAddress': '0x4C000', 'Permission': 'RW', 'SegDescription': 'Qubit9 Q路匹配滤波器系数'}, 'q10i': {'OffsetAddress': '0x50000', 'Permission': 'RW', 'SegDescription': 'Qubit10 I路匹配滤波器系数'}, 'q10q': {'OffsetAddress': '0x54000', 'Permission': 'RW', 'SegDescription': 'Qubit10 Q路匹配滤波器系数'}, 'q11i': {'OffsetAddress': '0x58000', 'Permission': 'RW', 'SegDescription': 'Qubit11 I路匹配滤波器系数'}, 'q11q': {'OffsetAddress': '0x5C000', 'Permission': 'RW', 'SegDescription': 'Qubit11 Q路匹配滤波器系数'}, 'q12i': {'OffsetAddress': '0x60000', 'Permission': 'RW', 'SegDescription': 'Qubit12 I路匹配滤波器系数'}, 'q12q': {'OffsetAddress': '0x64000', 'Permission': 'RW', 'SegDescription': 'Qubit12 Q路匹配滤波器系数'}, 'q13i': {'OffsetAddress': '0x68000', 'Permission': 'RW', 'SegDescription': 'Qubit13 I路匹配滤波器系数'}, 'q13q': {'OffsetAddress': '0x6C000', 'Permission': 'RW', 'SegDescription': 'Qubit13 Q路匹配滤波器系数'}, 'q14i': {'OffsetAddress': '0x70000', 'Permission': 'RW', 'SegDescription': 'Qubit14 I路匹配滤波器系数'}, 'q14q': {'OffsetAddress': '0x74000', 'Permission': 'RW', 'SegDescription': 'Qubit14 Q路匹配滤波器系数'}, 'q15i': {'OffsetAddress': '0x78000', 'Permission': 'RW', 'SegDescription': 'Qubit15 I路匹配滤波器系数'}, 'q15q': {'OffsetAddress': '0x7C000', 'Permission': 'RW', 'SegDescription': 'Qubit15 Q路匹配滤波器系数'}}, 'DAQ_REG': {'mcu_timer': {'OffsetAddress': '0x20', 'Permission': 'RO', 'SegDescription': 'mcu运行时间计数器', 'Fields': [{'Bits': [31, 0], 'FieldName': 'mcu_timer', 'ResetValue': \"32'h00000000\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': 'mcu运行时间计数器'}]}, 'mcu_counter': {'OffsetAddress': '0x24', 'Permission': 'RO', 'SegDescription': 'mcu运行指令计数器', 'Fields': [{'Bits': [31, 0], 'FieldName': 'mcu_counter', 'ResetValue': \"32'h00000000\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': 'mcu运行指令计数器'}]}, 'loc_state': {'OffsetAddress': '0x28', 'Permission': 'RW', 'SegDescription': '局部反馈状态', 'Fields': [{'Bits': [31, 0], 'FieldName': 'loc_state', 'ResetValue': \"32'hFFFFFFFF\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读写分离,读接收,写发送'}]}, 'glb_state': {'OffsetAddress': '0x2c', 'Permission': 'RW', 'SegDescription': '全局反馈状态', 'Fields': [{'Bits': [31, 0], 'FieldName': 'glb_state', 'ResetValue': \"32'h00000000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读写分离,读接收,写发送'}]}, 'qubit_state': {'OffsetAddress': '0x30', 'Permission': 'RO', 'SegDescription': nan, 'Fields': [{'Bits': [31, 0], 'FieldName': 'qubit_state', 'ResetValue': \"32'hFFFFFFFF\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '读出量子态信息监视'}]}, 'amplitude': {'OffsetAddress': '0x34', 'Permission': 'RW', 'SegDescription': 'DAQ幅度控制寄存器', 'Fields': [{'Bits': [31, 16], 'FieldName': 'acw', 'ResetValue': \"16'h4000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '反馈给AWG的幅度控制字'}, {'Bits': [11, 8], 'FieldName': 'gpio_t', 'ResetValue': \"4'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'DAQ GPIO输出三态控制'}, {'Bits': [3, 0], 'FieldName': 'gpio_o', 'ResetValue': \"4'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'DAQ GPIO输入/输出电平'}]}, 'sram_count': {'OffsetAddress': '0x38', 'Permission': 'RO', 'SegDescription': 'SRAM缓存数据量', 'Fields': [{'Bits': [31, 0], 'FieldName': 'sram_count', 'ResetValue': \"32'h0\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '采集数据缓存到SRAM中的数据量'}]}, 'push_count': {'OffsetAddress': '0x3c', 'Permission': 'RO', 'SegDescription': '芯片数据推送量', 'Fields': [{'Bits': [31, 0], 'FieldName': 'push_count', 'ResetValue': \"32'h0\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '采集数据通过LVDS接口推送数据量'}]}, 'command': {'OffsetAddress': '0x40', 'Permission': 'WC', 'SegDescription': 'DAQ命令寄存器', 'Fields': [{'Bits': [5], 'FieldName': 'force_cal', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '强制推送链路发出同步码,高有效'}, {'Bits': [4], 'FieldName': 'force_req', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '强制发出读请求,高有效'}, {'Bits': [0], 'FieldName': 'force_int', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '强制发出中断请求,高有效'}]}, 'func_ctrl': {'OffsetAddress': '0x44', 'Permission': 'RW', 'SegDescription': 'DAQ功能寄存器', 'Fields': [{'Bits': [19, 16], 'FieldName': 'tx_pat_ctrl', 'ResetValue': \"4'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '推送链路同步码数量控制'}, {'Bits': [15, 8], 'FieldName': 'weight_iq', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '常数权重数据,二进制补码'}, {'Bits': [7], 'FieldName': 'const_en', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '常数权重数据使能,当前不支持'}, {'Bits': [6, 4], 'FieldName': 'step_ctrl', 'ResetValue': \"3'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '解模算法步长控制'}, {'Bits': [3], 'FieldName': 'iq_scale', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '解模动态范围选择'}, {'Bits': [2], 'FieldName': 'two_sta_en', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '二态判定模式使能'}, {'Bits': [0], 'FieldName': 'spi_rd_en', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'SPI读数据使能,否则主动推送'}]}, 'sample_depth': {'OffsetAddress': '0x48', 'Permission': 'RW', 'SegDescription': '波形采样深度控制', 'Fields': [{'Bits': [15, 0], 'FieldName': 'sample_depth', 'ResetValue': \"16'h100\", 'Range': {'value': ['1', '8192'], 'type': 'list'}, 'FieldDescription': '采样深度控制,单位是时钟周期'}]}, 'coefficient': {'OffsetAddress': '0x4c', 'Permission': 'RW', 'SegDescription': '模值乘法系数', 'Fields': [{'Bits': [15, 0], 'FieldName': 'coefficient', 'ResetValue': \"16'h100\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '用于计算实时幅度的系数,有符号数'}]}, 'int_threshold': {'OffsetAddress': '0x50', 'Permission': 'RW', 'SegDescription': '数据中断阈值控制', 'Fields': [{'Bits': [31, 0], 'FieldName': 'int_threshold', 'ResetValue': \"32'h100\", 'Range': {'value': ['1', '32767'], 'type': 'list'}, 'FieldDescription': '读请求数据触发阈值,单位是4字节'}]}, 'read_req_ctrl': {'OffsetAddress': '0x54', 'Permission': 'RW', 'SegDescription': '读数据请求脉冲控制', 'Fields': [{'Bits': [31, 16], 'FieldName': 'delay', 'ResetValue': \"16'h0004\", 'Range': {'value': ['1', '65535'], 'type': 'list'}, 'FieldDescription': '读请求脉冲延迟控制,单位时钟周期'}, {'Bits': [15, 0], 'FieldName': 'width', 'ResetValue': \"16'h0004\", 'Range': {'value': ['1', '65535'], 'type': 'list'}, 'FieldDescription': '读请求脉冲宽度控制,单位时钟周期'}]}, 'mtf_idx_q0': {'OffsetAddress': '0x80', 'Permission': 'RW', 'SegDescription': 'q0匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q1': {'OffsetAddress': '0x84', 'Permission': 'RW', 'SegDescription': 'q1匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q2': {'OffsetAddress': '0x88', 'Permission': 'RW', 'SegDescription': 'q2匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q3': {'OffsetAddress': '0x8C', 'Permission': 'RW', 'SegDescription': 'q3匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q4': {'OffsetAddress': '0x90', 'Permission': 'RW', 'SegDescription': 'q4匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q5': {'OffsetAddress': '0x94', 'Permission': 'RW', 'SegDescription': 'q5匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q6': {'OffsetAddress': '0x98', 'Permission': 'RW', 'SegDescription': 'q6匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q7': {'OffsetAddress': '0x9C', 'Permission': 'RW', 'SegDescription': 'q7匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q8': {'OffsetAddress': '0xA0', 'Permission': 'RW', 'SegDescription': 'q8匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q9': {'OffsetAddress': '0xA4', 'Permission': 'RW', 'SegDescription': 'q9匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q10': {'OffsetAddress': '0xA8', 'Permission': 'RW', 'SegDescription': 'q10匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q11': {'OffsetAddress': '0xAC', 'Permission': 'RW', 'SegDescription': 'q11匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q12': {'OffsetAddress': '0xB0', 'Permission': 'RW', 'SegDescription': 'q12匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q13': {'OffsetAddress': '0xB4', 'Permission': 'RW', 'SegDescription': 'q13匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q14': {'OffsetAddress': '0xB8', 'Permission': 'RW', 'SegDescription': 'q14匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'mtf_idx_q15': {'OffsetAddress': '0xBC', 'Permission': 'RW', 'SegDescription': 'q15匹配滤波器系数索引', 'Fields': [{'Bits': [31, 16], 'FieldName': 'addr', 'ResetValue': \"16'h0008\", 'Range': {'value': ['0', '1023'], 'type': 'list'}, 'FieldDescription': '波形地址,单位存储条目(16个采样点)'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0100\", 'Range': {'value': ['1', '1024'], 'type': 'list'}, 'FieldDescription': '波形长度,单位存储条目(16个采样点)'}]}, 'dds_fpw_q0': {'OffsetAddress': '0xC0', 'Permission': 'RW', 'SegDescription': 'q0解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q1': {'OffsetAddress': '0xC4', 'Permission': 'RW', 'SegDescription': 'q1解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q2': {'OffsetAddress': '0xC8', 'Permission': 'RW', 'SegDescription': 'q2解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q3': {'OffsetAddress': '0xCC', 'Permission': 'RW', 'SegDescription': 'q3解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q4': {'OffsetAddress': '0xD0', 'Permission': 'RW', 'SegDescription': 'q4解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q5': {'OffsetAddress': '0xD4', 'Permission': 'RW', 'SegDescription': 'q5解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q6': {'OffsetAddress': '0xD8', 'Permission': 'RW', 'SegDescription': 'q6解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q7': {'OffsetAddress': '0xDC', 'Permission': 'RW', 'SegDescription': 'q7解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q8': {'OffsetAddress': '0xE0', 'Permission': 'RW', 'SegDescription': 'q8解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q9': {'OffsetAddress': '0xE4', 'Permission': 'RW', 'SegDescription': 'q9解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q10': {'OffsetAddress': '0xE8', 'Permission': 'RW', 'SegDescription': 'q10解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q11': {'OffsetAddress': '0xEC', 'Permission': 'RW', 'SegDescription': 'q11解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q12': {'OffsetAddress': '0xF0', 'Permission': 'RW', 'SegDescription': 'q12解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q13': {'OffsetAddress': '0xF4', 'Permission': 'RW', 'SegDescription': 'q13解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q14': {'OffsetAddress': '0xF8', 'Permission': 'RW', 'SegDescription': 'q14解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}, 'dds_fpw_q15': {'OffsetAddress': '0xFC', 'Permission': 'RW', 'SegDescription': 'q15解模频率相位控制字', 'Fields': [{'Bits': [31, 12], 'FieldName': 'fcw', 'ResetValue': \"20'h10000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '频率控制字,fcw/2^20*sample_rate'}, {'Bits': [11, 0], 'FieldName': 'pcw', 'ResetValue': \"12'h000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '相位控制字,pcw/2^12*2*pi'}]}}, 'AWG_REG': {'mcu_timer': {'OffsetAddress': '0x20', 'Permission': 'RO', 'SegDescription': 'mcu运行时间计数器', 'Fields': [{'Bits': [31, 0], 'FieldName': 'mcu_timer', 'ResetValue': \"32'h00000000\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': 'mcu运行时间计数器'}]}, 'mcu_counter': {'OffsetAddress': '0x24', 'Permission': 'RO', 'SegDescription': 'mcu运行指令计数器', 'Fields': [{'Bits': [31, 0], 'FieldName': 'mcu_counter', 'ResetValue': \"32'h00000000\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': 'mcu运行指令计数器'}]}, 'loc_state': {'OffsetAddress': '0x28', 'Permission': 'RO', 'SegDescription': '读写分离,读接收,写发送', 'Fields': [{'Bits': [31, 0], 'FieldName': 'loc_state', 'ResetValue': \"32'hFFFFFFFF\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读写分离,读接收,写发送'}]}, 'glb_state': {'OffsetAddress': '0x2c', 'Permission': 'RO', 'SegDescription': '读写分离,读接收,写发送', 'Fields': [{'Bits': [31, 0], 'FieldName': 'glb_state', 'ResetValue': \"32'h00000000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读写分离,读接收,写发送'}]}, 'wave_ctrl': {'OffsetAddress': '0x30', 'Permission': 'RW', 'SegDescription': '波形索引寄存器', 'Fields': [{'Bits': [31, 0], 'FieldName': 'addr', 'ResetValue': \"16'h0\", 'Range': {'value': ['0', '4095'], 'type': 'list'}, 'FieldDescription': '寄存器控制波形输出地址'}, {'Bits': [15, 0], 'FieldName': 'len', 'ResetValue': \"16'h0\", 'Range': {'value': ['1', '4096'], 'type': 'list'}, 'FieldDescription': '寄存器控制波形输出长度'}]}, 'amplitude': {'OffsetAddress': '0x34', 'Permission': 'RW', 'SegDescription': 'AWG幅度控制寄存器', 'Fields': [{'Bits': [31, 16], 'FieldName': 'acw', 'ResetValue': \"16'h4000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AWG的调幅幅度控制字'}, {'Bits': [11, 8], 'FieldName': 'gpio_t', 'ResetValue': \"4'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AWG GPIO输出三态控制'}, {'Bits': [3, 0], 'FieldName': 'gpio_o', 'ResetValue': \"4'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AWG GPIO输入输出电平'}]}, 'frequency': {'OffsetAddress': '0x38', 'Permission': 'RW', 'SegDescription': '调制频率控制字', 'Fields': [{'Bits': [31, 0], 'FieldName': 'fcw', 'ResetValue': \"32'h00000000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '调制频率控制字'}]}, 'phase': {'OffsetAddress': '0x3c', 'Permission': 'RW', 'SegDescription': '调制相位控制字', 'Fields': [{'Bits': [15, 0], 'FieldName': 'pcw', 'ResetValue': \"16'h0000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '调制相位控制字'}]}, 'command': {'OffsetAddress': '0x40', 'Permission': 'WC', 'SegDescription': 'AWG命令寄存器', 'Fields': [{'Bits': [0], 'FieldName': 'force_int', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '强制AWG模块发出中断请求'}]}, 'func_ctrl': {'OffsetAddress': '0x44', 'Permission': 'RW', 'SegDescription': 'AWG功能寄存器', 'Fields': [{'Bits': [8], 'FieldName': 'amp_sel', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '调幅参数选择'}, {'Bits': [7], 'FieldName': 'nco_sw_en', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'NCO Only模式开关使能'}, {'Bits': [6], 'FieldName': 'nco_sw_sel', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'NCO Only模式开关选择'}, {'Bits': [5], 'FieldName': 'mark_inv', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'MARK_EN输出极性翻转'}, {'Bits': [4], 'FieldName': 'pump_inv', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PUMP_EN输出极性翻转'}, {'Bits': [3], 'FieldName': 'intp_sel', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '插值模式选择'}, {'Bits': [2], 'FieldName': 'mix_mode', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'DAC MIX模式选择'}, {'Bits': [1, 0], 'FieldName': 'awg_mode', 'ResetValue': \"2'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AWG工作模式选择'}]}, 'pump_ctrl': {'OffsetAddress': '0x48', 'Permission': 'RW', 'SegDescription': '泵浦脉冲控制', 'Fields': [{'Bits': [31, 16], 'FieldName': 'delay', 'ResetValue': \"16'h0001\", 'Range': {'value': ['1', '65535'], 'type': 'list'}, 'FieldDescription': '泵浦信号脉冲延迟'}, {'Bits': [15, 0], 'FieldName': 'width', 'ResetValue': '16‘h0010', 'Range': {'value': ['1', '65535'], 'type': 'list'}, 'FieldDescription': '泵浦信号脉冲宽度'}]}, 'mark_ctrl': {'OffsetAddress': '0x4c', 'Permission': 'RW', 'SegDescription': '标记脉冲控制', 'Fields': [{'Bits': [31, 16], 'FieldName': 'delay', 'ResetValue': \"16'h0001\", 'Range': {'value': ['1', '65535'], 'type': 'list'}, 'FieldDescription': '调试信号脉冲延迟'}, {'Bits': [15, 0], 'FieldName': 'width', 'ResetValue': '16‘h0010', 'Range': {'value': ['1', '65535'], 'type': 'list'}, 'FieldDescription': '调试信号脉冲宽度'}]}}, 'SYS_REG': {'chip_id': {'OffsetAddress': '0x00', 'Permission': 'RO', 'SegDescription': '芯片ID\"RBPU\"', 'Fields': [{'Bits': [31, 0], 'FieldName': 'chip_id', 'ResetValue': \"32'h52425055\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '芯片ID\"RBPU\"'}]}, 'chip_vid': {'OffsetAddress': '0x04', 'Permission': 'RO', 'SegDescription': '单位ID\"HFNL\"', 'Fields': [{'Bits': [31, 0], 'FieldName': 'chip_vid', 'ResetValue': \"32'h48464e4c\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '单位ID\"HFNL\"'}]}, 'chip_date': {'OffsetAddress': '0x08', 'Permission': 'RO', 'SegDescription': '设计时间\"2025年10月1日\"', 'Fields': [{'Bits': [31, 0], 'FieldName': 'chip_date', 'ResetValue': \"32'h20251001\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '设计时间\"2025年10月1日\"'}]}, 'chip_vision': {'OffsetAddress': '0x0c', 'Permission': 'RO', 'SegDescription': '芯片版本“1.0.0”', 'Fields': [{'Bits': [31, 0], 'FieldName': 'chip_vision', 'ResetValue': \"32'h01000000\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '芯片版本“1.0.0”'}]}, 'sync_delay': {'OffsetAddress': '0x10', 'Permission': 'RW', 'SegDescription': '芯片同步延迟控制', 'Fields': [{'Bits': [31, 16], 'FieldName': 'awg_delay', 'ResetValue': \"16'h1\", 'Range': {'value': ['1', '65535'], 'type': 'list'}, 'FieldDescription': 'AWG相对同步延迟'}, {'Bits': [31, 0], 'FieldName': 'daq_delay', 'ResetValue': \"16'h1\", 'Range': {'value': ['1', '65535'], 'type': 'list'}, 'FieldDescription': 'DAQ相对同步延迟'}]}, 'int_mask': {'OffsetAddress': '0x14', 'Permission': 'RW', 'SegDescription': '芯片异常中断使能掩码', 'Fields': [{'Bits': [11], 'FieldName': 'awg_soft_int', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,AWG触发软中断'}, {'Bits': [10], 'FieldName': 'awg_exit_exc', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,AWG执行异常退出'}, {'Bits': [9], 'FieldName': 'awg_addr_err', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,AWG地址访问错误'}, {'Bits': [8], 'FieldName': 'awg_inst_err', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,AWG指令运行错误'}, {'Bits': [7], 'FieldName': 'daq_soft_int', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,DAQ触发软中断'}, {'Bits': [6], 'FieldName': 'daq_exit_exc', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,DAQ执行异常退出'}, {'Bits': [5], 'FieldName': 'daq_addr_err', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,DAQ地址访问错误'}, {'Bits': [4], 'FieldName': 'daq_inst_err', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,DAQ指令运行错误'}, {'Bits': [3], 'FieldName': 'adc_or_flag', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,ADC输入过载'}, {'Bits': [1], 'FieldName': 'link_down', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,数据推送链路未建立'}, {'Bits': [0], 'FieldName': 'clk_lose', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读状态写使能,锁相环失锁中断'}]}, 'sys_command': {'OffsetAddress': '0x18', 'Permission': 'WC', 'SegDescription': '芯片命令寄存器', 'Fields': [{'Bits': [6], 'FieldName': 'count_clr', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '清除同步脉冲计数'}, {'Bits': [5], 'FieldName': 'force_cal', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '强制发出反馈链路同步校准码'}, {'Bits': [4], 'FieldName': 'status_clr', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '清除中断积累异常'}, {'Bits': [3], 'FieldName': 'soft_daq_val', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '软启动DAQ模块'}, {'Bits': [2], 'FieldName': 'soft_awg_val', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '软启动AWG模块'}, {'Bits': [1], 'FieldName': 'soft_daq_rst', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '软复位DAQ模块'}, {'Bits': [0], 'FieldName': 'soft_awg_rst', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '软复位AWG模块'}]}, 'sys_func': {'OffsetAddress': '0x1c', 'Permission': 'RW', 'SegDescription': '芯片功能寄存器', 'Fields': [{'Bits': [22, 20], 'FieldName': 'debug_sel', 'ResetValue': \"3'h0\", 'Range': {'value': ['0', '5'], 'type': 'list'}, 'FieldDescription': '调试功能选择'}, {'Bits': [19, 17], 'FieldName': 'sensor_en', 'ResetValue': \"3'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '温度传感器使能控制'}, {'Bits': [16], 'FieldName': 'loop_en', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '数据环回使能'}, {'Bits': [15, 12], 'FieldName': 'rx_pat_ctrl', 'ResetValue': \"4'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '反馈链路建链接收同步码'}, {'Bits': [11, 8], 'FieldName': 'tx_pat_ctrl', 'ResetValue': \"4'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '反馈链路建链发射同步码'}, {'Bits': [7], 'FieldName': 'auto_cal_off', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '使能自动链路建链'}, {'Bits': [6], 'FieldName': 'level_sel', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '局部反馈电平选择'}, {'Bits': [5], 'FieldName': 'qubit_set', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '全局反馈比特数量选择'}, {'Bits': [4], 'FieldName': 'through_en', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '反馈直通调控模式'}, {'Bits': [3], 'FieldName': 'daq_sync_sel', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'DAQ同步信号选择'}, {'Bits': [2], 'FieldName': 'awg_sync_sel', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AWG同步信号选择'}, {'Bits': [1, 0], 'FieldName': 'loc_disable', 'ResetValue': \"2'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '局部反馈禁用'}]}, 'smp_intrv': {'OffsetAddress': '0x20', 'Permission': 'RW', 'SegDescription': '温传采样间隔时钟周期', 'Fields': [{'Bits': [31, 0], 'FieldName': 'smp_time', 'ResetValue': \"32'h2cb41780\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '温传采样间隔时钟周期'}]}, 'smp_time': {'OffsetAddress': '0x24', 'Permission': 'RW', 'SegDescription': '温传单次采样计数总次数', 'Fields': [{'Bits': [31, 0], 'FieldName': 'smp_cnt', 'ResetValue': \"32'h00010000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '温传单次采样计数总次数'}]}, 'pulse_cnt': {'OffsetAddress': '0x28', 'Permission': 'RO', 'SegDescription': '同步脉冲采集个数', 'Fields': [{'Bits': [31, 0], 'FieldName': 'pulse_cnt', 'ResetValue': \"32'h0\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '同步脉冲采集个数'}]}, 'idelay_tap': {'OffsetAddress': '0x2C', 'Permission': 'RO', 'SegDescription': '反馈链路输出延迟状态', 'Fields': [{'Bits': [2, 0], 'FieldName': 'idelay_tap', 'ResetValue': \"3'h0\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '反馈链路输出延迟状态'}]}}, 'SYS_ANA': {'adc_div2_en': {'OffsetAddress': '0x000', 'Permission': 'RW', 'SegDescription': '主时钟分频使能', 'Fields': [{'Bits': [0], 'FieldName': 'adc_div2_en', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '主时钟分频使能'}]}, 'adc_cas_addr': {'OffsetAddress': '0x004', 'Permission': 'RW', 'SegDescription': '偏置模块可调电流源阵列1', 'Fields': [{'Bits': [2, 0], 'FieldName': 'adc_cas_addr', 'ResetValue': '3‘h4', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '偏置模块可调电流源阵列1'}]}, 'adc_idac': {'OffsetAddress': '0x008', 'Permission': 'RW', 'SegDescription': '偏置模块可调电流源阵列2', 'Fields': [{'Bits': [8, 0], 'FieldName': 'adc_idac', 'ResetValue': '9’h10c', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '偏置模块可调电流源阵列2'}]}, 'adc_offset': {'OffsetAddress': '0x00C', 'Permission': 'RW', 'SegDescription': '数字译码器折叠失调参数选择', 'Fields': [{'Bits': [0], 'FieldName': 'adc_offset', 'ResetValue': '1‘h0', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '数字译码器折叠失调参数选择'}]}, 'adc_sw0': {'OffsetAddress': '0x010', 'Permission': 'RW', 'SegDescription': '子通道1时钟偏斜校准', 'Fields': [{'Bits': [4, 0], 'FieldName': 'adc_sw0', 'ResetValue': '5’h8', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '子通道1时钟偏斜校准'}]}, 'adc_sw1': {'OffsetAddress': '0x014', 'Permission': 'RW', 'SegDescription': '子通道2时钟偏斜校准', 'Fields': [{'Bits': [4, 0], 'FieldName': 'adc_sw1', 'ResetValue': '5’h8', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '子通道2时钟偏斜校准'}]}, 'adc_sw2': {'OffsetAddress': '0x018', 'Permission': 'RW', 'SegDescription': '子通道3时钟偏斜校准', 'Fields': [{'Bits': [4, 0], 'FieldName': 'adc_sw2', 'ResetValue': '5’h8', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '子通道3时钟偏斜校准'}]}, 'adc_sw3': {'OffsetAddress': '0x01C', 'Permission': 'RW', 'SegDescription': '子通道4时钟偏斜校准', 'Fields': [{'Bits': [4, 0], 'FieldName': 'adc_sw3', 'ResetValue': '5’h8', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '子通道4时钟偏斜校准'}]}, 'adc_sw_fc': {'OffsetAddress': '0x020', 'Permission': 'RW', 'SegDescription': '子通道折叠失调校准', 'Fields': [{'Bits': [5, 0], 'FieldName': 'adc_sw_fc', 'ResetValue': \"6'h05\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '子通道折叠失调校准'}]}, 'adc_sw_cap': {'OffsetAddress': '0x024', 'Permission': 'RW', 'SegDescription': '输入缓冲器电容开关', 'Fields': [{'Bits': [0], 'FieldName': 'adc_sw_cap', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '输入缓冲器电容开关'}]}, 'data_clk_sel': {'OffsetAddress': '0x028', 'Permission': 'RW', 'SegDescription': 'ADC数据输出驱动时钟选择', 'Fields': [{'Bits': [2, 0], 'FieldName': 'data_clk_sel', 'ResetValue': \"3'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'ADC数据输出驱动时钟选择'}]}, 'adc_vincm_sel': {'OffsetAddress': '0x02C', 'Permission': 'RW', 'SegDescription': '模拟信号输入共模选择', 'Fields': [{'Bits': [4, 0], 'FieldName': 'adc_vincm_sel', 'ResetValue': \"5'h1b\", 'Range': {'value': [\"5'h1e\", \"5'h1d\", \"5'h1b\", \"5'h17\", \"5'h0f\"], 'type': 'set'}, 'FieldDescription': '模拟信号输入共模选择'}]}, 'ext_ctrl': {'OffsetAddress': '0x030', 'Permission': 'RW', 'SegDescription': '扩展控制寄存器', 'Fields': [{'Bits': [18], 'FieldName': 'adc_up_down_sel', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'ADC输出选择上升下降沿切换'}, {'Bits': [17], 'FieldName': 'adc_skew_sel', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW功能选择'}, {'Bits': [16], 'FieldName': 'adc_ti_cal_en', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW校准使能'}, {'Bits': [15], 'FieldName': 'adc_og_cal_en', 'ResetValue': \"1'h1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'OG_CAL使能'}, {'Bits': [14], 'FieldName': 'adc_sel_do_p', 'ResetValue': \"1'h1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'ADC输出选择'}, {'Bits': [13], 'FieldName': 'adc_sel_tc_p', 'ResetValue': \"1'h1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延时模块输入选'}, {'Bits': [12], 'FieldName': 'adc_sel_test', 'ResetValue': \"1'h1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '时钟BUFFER输出测试选择'}, {'Bits': [10], 'FieldName': 'adc_cmprx_en', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '比较器使能信号'}, {'Bits': [9, 5], 'FieldName': 'adc_sw_clkrx2', 'ResetValue': \"5'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '时钟BUFFER2路径延时控制'}, {'Bits': [4, 0], 'FieldName': 'adc_sw_clkrx1', 'ResetValue': \"5'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '时钟BUFFER1路径延时控制'}]}, 'time_skew0': {'OffsetAddress': '0x034', 'Permission': 'RW', 'SegDescription': 'time skew控制0', 'Fields': [{'Bits': [31, 24], 'FieldName': 'adc_t_c4', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延迟调节4'}, {'Bits': [23, 16], 'FieldName': 'adc_t_c3', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延迟调节3'}, {'Bits': [15, 8], 'FieldName': 'adc_t_c2', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延迟调节2'}, {'Bits': [7, 0], 'FieldName': 'adc_t_c1', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延迟调节1'}]}, 'time_skew1': {'OffsetAddress': '0x038', 'Permission': 'RW', 'SegDescription': 'time skew控制1', 'Fields': [{'Bits': [31, 24], 'FieldName': 'adc_t_c8', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延迟调节8'}, {'Bits': [23, 16], 'FieldName': 'adc_t_c7', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延迟调节7'}, {'Bits': [15, 8], 'FieldName': 'adc_t_c6', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延迟调节6'}, {'Bits': [7, 0], 'FieldName': 'adc_t_c5', 'ResetValue': \"8'h80\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'TIME_SKEW延迟调节5'}]}, 'ov_count': {'OffsetAddress': '0x03C', 'Permission': 'RO', 'SegDescription': '输入过载脉冲计数', 'Fields': [{'Bits': [31, 0], 'FieldName': 'ov_count', 'ResetValue': \"32'h0\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '输入过载脉冲计数'}]}, 'dac_version': {'OffsetAddress': '0x100', 'Permission': 'RO', 'SegDescription': 'DAC版本', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_version', 'ResetValue': \"32'h0\", 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': 'DAC版本'}]}, 'dac_r_load': {'OffsetAddress': '0x104', 'Permission': 'RW', 'SegDescription': '负载电阻控制', 'Fields': [{'Bits': [15, 0], 'FieldName': 'dac_r_load', 'ResetValue': \"16'hffff\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '负载电阻控制'}]}, 'dac_mode': {'OffsetAddress': '0x108', 'Permission': 'RW', 'SegDescription': 'DAC工作模式选择', 'Fields': [{'Bits': [0], 'FieldName': 'dac_mode', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'DAC工作模式选择'}]}, 'dac_prbs_en': {'OffsetAddress': '0x10C', 'Permission': 'RW', 'SegDescription': '伪随机数生成使能', 'Fields': [{'Bits': [0], 'FieldName': 'dac_prbs_en', 'ResetValue': '1’b0', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '伪随机数生成使能'}]}, 'dac_set0': {'OffsetAddress': '0x110', 'Permission': 'RW', 'SegDescription': '随机数种子0', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_set0', 'ResetValue': \"32'h24cb4cb7\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '随机数种子0'}]}, 'dac_set1': {'OffsetAddress': '0x114', 'Permission': 'RW', 'SegDescription': '随机数种子1', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_set1', 'ResetValue': \"32'h07e66636\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '随机数种子1'}]}, 'dac_set2': {'OffsetAddress': '0x118', 'Permission': 'RW', 'SegDescription': '随机数种子2', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_set2', 'ResetValue': \"32'h2f365fd3\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '随机数种子2'}]}, 'dac_set3': {'OffsetAddress': '0x11C', 'Permission': 'RW', 'SegDescription': '随机数种子3', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_set3', 'ResetValue': \"32'h05376d5f\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '随机数种子3'}]}, 'dac_set4': {'OffsetAddress': '0x120', 'Permission': 'RW', 'SegDescription': '随机数种子4', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_set4', 'ResetValue': \"32'h5eb02d64\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '随机数种子4'}]}, 'dac_set5': {'OffsetAddress': '0x124', 'Permission': 'RW', 'SegDescription': '随机数种子5', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_set5', 'ResetValue': \"32'h6c3472a3\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '随机数种子5'}]}, 'dac_set6': {'OffsetAddress': '0x128', 'Permission': 'RW', 'SegDescription': '随机数种子6', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_set6', 'ResetValue': \"32'h088c374e\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '随机数种子6'}]}, 'dac_set7': {'OffsetAddress': '0x12C', 'Permission': 'RW', 'SegDescription': '随机数种子7', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_set7', 'ResetValue': \"32'h54db24ba\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '随机数种子7'}]}, 'dac_cas_addr': {'OffsetAddress': '0x144', 'Permission': 'RW', 'SegDescription': '提高电流源vds', 'Fields': [{'Bits': [2, 0], 'FieldName': 'dac_cas_addr', 'ResetValue': \"3'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '提高电流源vds'}]}, 'dac_cas_dw': {'OffsetAddress': '0x148', 'Permission': 'RW', 'SegDescription': '降低电流源vds', 'Fields': [{'Bits': [2, 0], 'FieldName': 'dac_cas_dw', 'ResetValue': \"3'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '降低电流源vds'}]}, 'dac_i_main_ctrl': {'OffsetAddress': '0x14C', 'Permission': 'RW', 'SegDescription': '调整电流源电流', 'Fields': [{'Bits': [7, 0], 'FieldName': 'dac_i_main_ctrl', 'ResetValue': \"8'h7d\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '调整电流源电流'}]}, 'dac_i_cal_ctrl': {'OffsetAddress': '0x150', 'Permission': 'RW', 'SegDescription': '调整校准电流源电流', 'Fields': [{'Bits': [15, 0], 'FieldName': 'dac_i_cal_ctrl', 'ResetValue': \"16'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '调整校准电流源电流'}]}, 'dac_i_bleed_ctrl': {'OffsetAddress': '0x154', 'Permission': 'RW', 'SegDescription': '调整Bleed电流', 'Fields': [{'Bits': [15, 0], 'FieldName': 'dac_i_bleed_ctrl', 'ResetValue': \"16'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '调整Bleed电流'}]}, 'dac_bleed_en': {'OffsetAddress': '0x158', 'Permission': 'RW', 'SegDescription': 'Bleed电流开关', 'Fields': [{'Bits': [0], 'FieldName': 'dac_bleed_en', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'Bleed电流开关'}]}, 'dac_i_main_cal_ctrl': {'OffsetAddress': '0x15C', 'Permission': 'RW', 'SegDescription': '电流源手动校准写入控制', 'Fields': [{'Bits': [18, 0], 'FieldName': 'dac_i_main_cal_ctrl', 'ResetValue': \"19'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '电流源手动校准写入控制'}]}, 'dac_ical_sr0': {'OffsetAddress': '0x160', 'Permission': 'RO', 'SegDescription': '电流校准状态寄存器0', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ical_sr0', 'ResetValue': 'NA', 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '电流校准状态寄存器0'}]}, 'dac_ical_sr1': {'OffsetAddress': '0x164', 'Permission': 'RO', 'SegDescription': '电流校准状态寄存器1', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ical_sr1', 'ResetValue': 'NA', 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '电流校准状态寄存器1'}]}, 'dac_ical_sr2': {'OffsetAddress': '0x168', 'Permission': 'RO', 'SegDescription': '电流校准状态寄存器2', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ical_sr2', 'ResetValue': 'NA', 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '电流校准状态寄存器2'}]}, 'dac_ical_sr3': {'OffsetAddress': '0x16C', 'Permission': 'RO', 'SegDescription': '电流校准状态寄存器3', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ical_sr3', 'ResetValue': 'NA', 'Range': {'value': 'NA', 'type': 'str'}, 'FieldDescription': '电流校准状态寄存器3'}]}, 'dac_bias_en': {'OffsetAddress': '0x170', 'Permission': 'RW', 'SegDescription': '偏置使能', 'Fields': [{'Bits': [15, 0], 'FieldName': 'dac_bias_en', 'ResetValue': \"16'hffff\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '偏置使能'}]}, 'dac_bias_ctrl0': {'OffsetAddress': '0x174', 'Permission': 'RW', 'SegDescription': '偏置控制选择0', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_bias_ctrl0', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '偏置控制选择0'}]}, 'dac_bias_ctrl1': {'OffsetAddress': '0x178', 'Permission': 'RW', 'SegDescription': '偏置控制选择1', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_bias_ctrl1', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '偏置控制选择1'}]}, 'dac_bias_ctrl2': {'OffsetAddress': '0x17C', 'Permission': 'RW', 'SegDescription': '偏置控制选择2', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_bias_ctrl2', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '偏置控制选择2'}]}, 'dac_bias_ctrl3': {'OffsetAddress': '0x180', 'Permission': 'RW', 'SegDescription': '偏置控制选择3', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_bias_ctrl3', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '偏置控制选择3'}]}, 'dac_order_ctrl': {'OffsetAddress': '0x188', 'Permission': 'RW', 'SegDescription': 'DAC输出采样点调序', 'Fields': [{'Bits': [3, 0], 'FieldName': 'dac_order_ctrl', 'ResetValue': \"4'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'DAC输出采样点调序'}]}, 'dac_i_main_cal_code': {'OffsetAddress': '0x18C', 'Permission': 'RW', 'SegDescription': '电流源手动校准控制码', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_i_main_cal_code', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '电流源手动校准控制码'}]}}, 'SYS_PLL': {'intpll_refctrl': {'OffsetAddress': '0x00', 'Permission': 'RW', 'SegDescription': '输入时钟控制', 'Fields': [{'Bits': [18], 'FieldName': 'ref_s_to_d', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '参考时钟单端到差分转换'}, {'Bits': [17], 'FieldName': 'ref_en', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '输入参考时钟使能'}, {'Bits': [16], 'FieldName': 'ref_sel', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '分频器时钟源选择信号'}]}, 'intpll_pcnt': {'OffsetAddress': '0x04', 'Permission': 'RW', 'SegDescription': 'P计数器,乘2等于分频比', 'Fields': [{'Bits': [22, 16], 'FieldName': 'p_cnt', 'ResetValue': \"7'b0001100\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'P计数器,乘2等于分频比'}]}, 'intpll_pfdctrl': {'OffsetAddress': '0x08', 'Permission': 'RW', 'SegDescription': 'PFD控制', 'Fields': [{'Bits': [18], 'FieldName': 'pfd_dff_4and', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PFD输出极性设置'}, {'Bits': [17], 'FieldName': 'pfd_dff_set', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PFD中触发器置位'}, {'Bits': [16], 'FieldName': 'pfd_delay', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PFD死区'}]}, 'intpll_spdctrl': {'OffsetAddress': '0x0c', 'Permission': 'RW', 'SegDescription': 'SPD控制', 'Fields': [{'Bits': [21], 'FieldName': 'spd_pulse_sw', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'SPD脉冲开关'}, {'Bits': [20], 'FieldName': 'spd_pulse_width', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'SPD脉冲宽度'}, {'Bits': [19, 16], 'FieldName': 'spd_div', 'ResetValue': \"4'b0100\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'SPD分频比'}]}, 'intpll_ptatctrl': {'OffsetAddress': '0x10', 'Permission': 'RW', 'SegDescription': 'PTAT控制', 'Fields': [{'Bits': [21, 18], 'FieldName': 'sw_ptat_r', 'ResetValue': \"4'b1000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PTAT电流调节'}, {'Bits': [17], 'FieldName': 'sw_ptat_i', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PTAT电流开关'}, {'Bits': [16], 'FieldName': 'cpc_sel', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PTAT电流与恒流源切换'}]}, 'intpll_selctrl': {'OffsetAddress': '0x14', 'Permission': 'RW', 'SegDescription': 'SEL控制', 'Fields': [{'Bits': [18], 'FieldName': 'dtd_en', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '占空比校准开关'}, {'Bits': [17], 'FieldName': 'spd_sel', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'SPD环选择'}, {'Bits': [16], 'FieldName': 'pfd_sel', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PFD环选择'}]}, 'intpll_vcoctrl': {'OffsetAddress': '0x18', 'Permission': 'RW', 'SegDescription': 'VCO控制', 'Fields': [{'Bits': [31, 24], 'FieldName': 'vco_fb', 'ResetValue': \"8'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'VCO频率带宽调节'}, {'Bits': [23], 'FieldName': 'vco_en', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'VCO使能'}, {'Bits': [22], 'FieldName': 'vco_buf_en', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'VCO BUFF使能'}, {'Bits': [21, 19], 'FieldName': 'vco_cur', 'ResetValue': \"3'b111\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'VCO电流调节'}, {'Bits': [18], 'FieldName': 'vco_gain_r', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'VCO增益调节电阻'}, {'Bits': [17], 'FieldName': 'vco_gain', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'VCO增益调节'}, {'Bits': [16], 'FieldName': 'vco_tc_r', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'VCO温度补偿电阻'}, {'Bits': [15], 'FieldName': 'vco_tc', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'VCO温度补偿'}]}, 'intpll_tcctrl': {'OffsetAddress': '0x1c', 'Permission': 'RW', 'SegDescription': 'TC控制', 'Fields': [{'Bits': [26, 23], 'FieldName': 'tc_sel', 'ResetValue': \"4'b0100\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '温度补偿选择'}, {'Bits': [22], 'FieldName': 'ptat_res_en', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PTAT MOS电阻使能'}, {'Bits': [21], 'FieldName': 'ptat_s_dc_sel', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PTAT斜率DC选择'}, {'Bits': [20], 'FieldName': 'ptat_res_vdc300', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PTAT MOS电阻偏置'}, {'Bits': [19], 'FieldName': 'ptat_res_vdc500', 'ResetValue': \"1'b1\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PTAT MOS电阻偏置'}, {'Bits': [18], 'FieldName': 'ptat_res_vdc800', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'PTAT MOS电阻偏置'}, {'Bits': [17], 'FieldName': 'sw_var_temp_en', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '温度补偿自动开关'}, {'Bits': [16], 'FieldName': 'sw_var_temp', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '温度补偿手动开关'}]}, 'intpll_afcctrl': {'OffsetAddress': '0x20', 'Permission': 'RW', 'SegDescription': 'AFC控制', 'Fields': [{'Bits': [23, 20], 'FieldName': 'afc_pres', 'ResetValue': \"4'b0011\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC比较器精度调节'}, {'Bits': [19], 'FieldName': 'afc_clk_sel', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC时钟频率选择'}, {'Bits': [18], 'FieldName': 'afc_shutdown', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC模块关闭信号'}, {'Bits': [17], 'FieldName': 'afc_reset', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC模块复位信号'}, {'Bits': [16], 'FieldName': 'afc_en', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC模块使能'}]}, 'intpll_afcfbctrl': {'OffsetAddress': '0x24', 'Permission': 'RW', 'SegDescription': 'AFC反馈控制', 'Fields': [{'Bits': [31, 17], 'FieldName': 'afc_fb_target', 'ResetValue': \"15'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC频带调整功能目标周期数目调节'}, {'Bits': [16, 6], 'FieldName': 'afc_fb_cnt', 'ResetValue': \"11'b00011001000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC频带调整功能计数器计数时间调节'}]}, 'intpll_afcldcnt': {'OffsetAddress': '0x28', 'Permission': 'RW', 'SegDescription': 'AFC锁定探测计数', 'Fields': [{'Bits': [31, 17], 'FieldName': 'afc_ld_target', 'ResetValue': \"15'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC锁定检测功能目标周期数目'}, {'Bits': [16, 6], 'FieldName': 'afc_ld_cnt', 'ResetValue': \"11'b11001000000\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC锁定检测功能计数器计数时间调节'}]}, 'intpll_testclk': {'OffsetAddress': '0x30', 'Permission': 'RW', 'SegDescription': '测试时钟输出使能', 'Fields': [{'Bits': [20], 'FieldName': 'test_clk_oen', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '测试时钟输出使能'}]}, 'intpll_status': {'OffsetAddress': '0x38', 'Permission': 'RO', 'SegDescription': 'PLL状态寄存器', 'Fields': [{'Bits': [17], 'FieldName': 'afc_end_flag', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'AFC结束信号'}, {'Bits': [16], 'FieldName': 'ld_flag', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '锁相环锁定信号'}]}, 'intpll_update': {'OffsetAddress': '0x40', 'Permission': 'RW', 'SegDescription': '寄存器更新', 'Fields': [{'Bits': [16], 'FieldName': 'update', 'ResetValue': '1’b0', 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '寄存器更新'}]}, 'dac_ccal_reset': {'OffsetAddress': '0x4C', 'Permission': 'RW', 'SegDescription': '时钟校准复位', 'Fields': [{'Bits': [31, 16], 'FieldName': 'dac_ccal_reset', 'ResetValue': \"16'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '时钟校准复位'}]}, 'dac_ccal_auto_en': {'OffsetAddress': '0x50', 'Permission': 'RW', 'SegDescription': '时钟自动校准使能', 'Fields': [{'Bits': [16], 'FieldName': 'dac_ccal_auto_en', 'ResetValue': \"1'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '时钟自动校准使能'}]}, 'dac_ccal_sel_align': {'OffsetAddress': '0x54', 'Permission': 'RW', 'SegDescription': '时钟相位选择', 'Fields': [{'Bits': [31, 16], 'FieldName': 'dac_ccal_sel_align', 'ResetValue': \"16'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '时钟相位选择'}]}, 'dac_ccal_dcc_qec': {'OffsetAddress': '0x58', 'Permission': 'RW', 'SegDescription': '占空比和相位对其校准使能或手动模式控制', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ccal_dcc_qec', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '占空比和相位对其校准使能或手动模式控制'}]}, 'dac_ccal_qec_ctrl0': {'OffsetAddress': '0x5C', 'Permission': 'RW', 'SegDescription': '正交校准控制0', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ccal_qec_ctrl0', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '正交校准控制0'}]}, 'dac_ccal_qec_ctrl1': {'OffsetAddress': '0x60', 'Permission': 'RW', 'SegDescription': '正交校准控制1', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ccal_qec_ctrl1', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '正交校准控制1'}]}, 'dac_ccal_dcc_ctrl0': {'OffsetAddress': '0x64', 'Permission': 'RW', 'SegDescription': '占空比校准控制0', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ccal_dcc_ctrl0', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '占空比校准控制0'}]}, 'dac_ccal_dcc_ctrl1': {'OffsetAddress': '0x68', 'Permission': 'RW', 'SegDescription': '占空比校准控制1', 'Fields': [{'Bits': [31, 0], 'FieldName': 'dac_ccal_dcc_ctrl1', 'ResetValue': \"32'h0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '占空比校准控制1'}]}, 'div_sync_dlyc': {'OffsetAddress': '0x6C', 'Permission': 'RW', 'SegDescription': '延迟时长控制位', 'Fields': [{'Bits': [31, 16], 'FieldName': 'div_sync_dlyc', 'ResetValue': \"16'h0001\", 'Range': {'value': [\"16'h1\", \"16'h2\", \"16'h4\", \"16'h8\", \"16'h10\", \"16'h20\", \"16'h40\", \"16'h80\", \"16'h100\", \"16'h200\", \"16'h400\", \"16'h800\", \"16'h1000\", \"16'h2000\", \"16'h4000\", \"16'h8000\"], 'type': 'set'}, 'FieldDescription': '延迟时长控制位'}]}, 'sync_clr_n': {'OffsetAddress': '0x70', 'Permission': 'RW', 'SegDescription': '分频器同步清零复位使能', 'Fields': [{'Bits': [16], 'FieldName': 'sync_clr_n', 'ResetValue': \"1'b0\", 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '分频器同步清零复位使能'}]}}, 'TRIG_CTRL': {'sync_cmmand': {'OffsetAddress': '0x00', 'Permission': 'WC', 'SegDescription': '同步命令', 'Fields': [{'Bits': [10], 'FieldName': 'sync_clr_val', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '同步状态检测清除'}, {'Bits': [8], 'FieldName': 'sync_srst_val', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '全局同步状态机复位'}, {'Bits': [2], 'FieldName': 'idelay_load_val', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'idelay延迟设置加载'}, {'Bits': [1], 'FieldName': 'int_trig_val', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '内部同步信号命令'}, {'Bits': [0], 'FieldName': 'daq2sync_val', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '全局同步信号发出'}]}, 'sync_function': {'OffsetAddress': '0x04', 'Permission': 'RW', 'SegDescription': '同步功能', 'Fields': [{'Bits': [6], 'FieldName': 'adc1_sync_en', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'ADC1同步使能'}, {'Bits': [5], 'FieldName': 'adc0_sync_en', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': 'ADC0同步使能'}, {'Bits': [4], 'FieldName': 'sync_clk_sel', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '同步驱动时钟选择,0:62.5MHz;1:250MHz'}, {'Bits': [3, 2], 'FieldName': 'clk_sync_en', 'ResetValue': 0, 'Range': {'value': ['0', '1'], 'type': 'list'}, 'FieldDescription': 'LMK04821同步使能,0:不使能;1:使能'}, {'Bits': [1], 'FieldName': 'daq2sync_cas_sel', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '同步级联信号选择'}, {'Bits': [0], 'FieldName': 'daq2sync_ref_sel', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '同步参考信号选择'}]}, 'sync_ctrl': {'OffsetAddress': '0x10', 'Permission': 'RW', 'SegDescription': '同步控制和监视', 'Fields': [{'Bits': [31, 16], 'FieldName': 'sync_error_cnt', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '读有效,同步检测错误计数'}, {'Bits': [4, 0], 'FieldName': 'sync_idelay_tap', 'ResetValue': 0, 'Range': {'value': 'ANY', 'type': 'str'}, 'FieldDescription': '写:设置输入延迟,读实际输入延迟'}]}, 'intra_cycle_p': {'OffsetAddress': '0x18', 'Permission': 'RW', 'SegDescription': '同步间隔周期', 'Fields': [{'Bits': [31, 0], 'FieldName': 'intra_cycle_p', 'ResetValue': 64, 'Range': {'value': ['64', '1000000'], 'type': 'list'}, 'FieldDescription': '同步间隔周期'}]}, 'intra_cycle_c': {'OffsetAddress': '0x1C', 'Permission': 'RW', 'SegDescription': '同步脉冲个数', 'Fields': [{'Bits': [31, 0], 'FieldName': 'intra_cycle_c', 'ResetValue': 1, 'Range': {'value': ['1', '1000000'], 'type': 'list'}, 'FieldDescription': '同步脉冲个数'}]}}, 'PUMP_REG': {'pump_freq': {'OffsetAddress': '0x200000', 'Permission': 'RW', 'SegDescription': 'Pump输出频率控制字', 'Fields': [{'Bits': [31, 0], 'FieldName': 'pump_freq', 'ResetValue': 7000000, 'Range': {'value': ['7000000', '9000000'], 'type': 'list'}, 'FieldDescription': 'Pump输出频率控制字'}]}, 'pump_power': {'OffsetAddress': '0x300000', 'Permission': 'RW', 'SegDescription': 'Pump输出功率控制字', 'Fields': [{'Bits': [31, 0], 'FieldName': 'pump_power', 'ResetValue': -200, 'Range': {'value': ['-1300', '-200'], 'type': 'list'}, 'FieldDescription': 'Pump输出功率控制字'}]}, 'pump_enable': {'OffsetAddress': '0x400000', 'Permission': 'RW', 'SegDescription': 'Pump输出使能控制字', 'Fields': [{'Bits': [31, 0], 'FieldName': 'pump_enable', 'ResetValue': \"32'h00\", 'Range': {'value': [\"32'h11\", \"32'h00\"], 'type': 'set'}, 'FieldDescription': 'Pump输出使能控制字'}]}}, 'MIXER_REG': {'lo_freq': {'OffsetAddress': '0x00', 'Permission': 'RW', 'SegDescription': '本振频率控制字', 'Fields': [{'Bits': [31, 0], 'FieldName': 'fcw', 'ResetValue': 5500000, 'Range': {'value': ['5400000', '5600000'], 'type': 'list'}, 'FieldDescription': '本振频率控制字'}]}}}}\n" + ] + } + ], + "source": [ + "with open(f\"../ids/{file_name}.json\", 'r', encoding='utf-8') as f:\n", + " data = json.load(f)\n", + "\n", + "print(data)\n", + "# print(data[\"Modules\"][\"SYSTEM_CTRL\"][\"test_2\"][\"Fields\"][0][\"ResetValue\"])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/读出芯片用户使用手册.md b/读出芯片用户使用手册.md new file mode 100644 index 0000000..b634410 --- /dev/null +++ b/读出芯片用户使用手册.md @@ -0,0 +1,75 @@ +# 宣传页封面 + +## 主要特点 +* DAC 更新率最高12 GSPS +* ADC采样率最高6 GSPS +* AWG支持直接/调制波形输出 +* AWG支持标记脉冲输出 +* DAQ支持多种数据采集模式 +* DAQ支持低延迟反馈控制 +* AWG\DAQ支持指令集的编程 + +## 简要描述 +RBPU16是一款用于量子比特态信息读出的一款SoC芯片, +最大支持16个量子比特态信息并行读出。 +芯片内部集成了PLL、ADC、DAC和DSP等模块,其可以利用高速DAC产生微波信号激发读取腔,并通过数字I/O使能外部Pump通道,接着利用高速ADC采集处理反射回来的信号,并通过DSP计算量子态信息,最后将读出的量子态信息通过LVDS接口实时发送出去,为量子比特态信息读出提供高集成度解决方案。 + +## 功能框图 +![系统框图](assets/chip_schematic.png) + +# 1. 规格参数 + +# 2. 操作最大值 + +# 3. 管脚描述 + +# 4. 典型性能特点 + +# 5. 专业术语 + +# 6. 操作原理 +RBPU16是一颗用于完成超导量子比特的态读出的SoC基带芯片。 +芯片模拟部分包括ADC、DAC、PLL、LVDS、POR和温度传感器; +数字部分主要包括DAQ、AWG、PlsGen、Feedback以及System模块。 +读出芯片的总体功能组成如图 1所示。 + + +在激励信号生成路径上,AWG用于控制激励通道待输出的波形, +接着波形经过DAC转换成基带读出激励信号, +同时AWG模块触发PlsGen模块实时发出脉冲信号使能外部Pump通道。 +回波信号处理路径上,ADC用于采集反射的读出基带信号, +接着DAQ对基带信号进行分析处理,结果再通过LVDS接口发送出去, +同时DAQ模块触发Feedback模块将部分结果上报或者下发到外部芯片。 +片内PLL用于管理整个芯片的时钟,为ADC生成采样时钟, +为DAC生成更新时钟,为数字模块生成主时钟等。 +POR用于在芯片上电时对整个芯片进行复位,保障芯片正常工作。 +温度监视模块用于实时监测芯片温度变化,保障芯片稳定工作。 +System模块用于管理芯片上控制的状态,为芯片运维和调试提供支撑。 + +本章节从读出芯片的原理及模块划分、关键数据路径、接口控制协议几个方面进行介绍。 +需要注意到的是:读出芯片不仅支持以ASIC芯片模式工作,也支持部分核心控制在FPGA内部工作。 +这两种工作模式受制于ASIC和FPGA资源以及外部ADC、DAC硬件性能不同, +部分功能实现存在差异,后续阅读时需要重点关注。 + +## 关键数据路径 + +# 7. 应用注意 + +## 7.1 模拟接口 + +## 7.2 启动顺序 +为了确保芯片正常工作,需要满足以下启动顺序要求: +* 内核供电上电 +* IO供电上电 +* 时钟配置完毕 +* 芯片复位 + +# 8. 寄存器定义 +## 8.1 寄存器摘要 +读出芯片偏移地址空间分配如表 2所示,用户可以通过读写相应地址来控制读出芯片功能和访问芯片状态。读出芯片地址空间包含系统配置状态、模拟配置状态、DAQ配置状态、AWG配置状态以及PLL配置状态五个部分。 +|功能划分|子模块|开始地址|空间大小| +|:-:|:-:|:-:|:-:| +|||| + + +# 9. 芯片尺寸 \ No newline at end of file