From 0394b52da00aded9e4381a66a90f368a2d165eb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Wed, 8 Jun 2022 17:17:15 +0200 Subject: [PATCH] Generator FPGA image test bench --- .../DeveloperInfo/FPGA_protocol_Generator.tex | 4 +- .../DeveloperInfo/FPGA_protocol_VNA.pdf | Bin 162352 -> 161955 bytes FPGA/Generator/Generator.gise | 104 +++- FPGA/Generator/Generator.xise | 42 +- FPGA/Generator/SPIConfig.vhd | 1 + FPGA/Generator/Test_Generator.vhd | 456 ++++++++++++++++++ FPGA/Generator/Test_PLL.vhd | 4 +- FPGA/Generator/ipcore_dir/VCO_Mem.xise | 2 +- 8 files changed, 569 insertions(+), 44 deletions(-) create mode 100644 FPGA/Generator/Test_Generator.vhd diff --git a/Documentation/DeveloperInfo/FPGA_protocol_Generator.tex b/Documentation/DeveloperInfo/FPGA_protocol_Generator.tex index 5d4f3cd..2a9be5a 100644 --- a/Documentation/DeveloperInfo/FPGA_protocol_Generator.tex +++ b/Documentation/DeveloperInfo/FPGA_protocol_Generator.tex @@ -276,9 +276,9 @@ LED num & Function\\ Determines the rate at which the modulation module consumes samples: $$ -f_{sample} = \frac{104 MHz * MOD\_PHASE\_INC}{2^{27}} +f_{sample} = \frac{102.4 MHz * MOD\_PHASE\_INC}{2^{27}} $$ -Example: set to 25811 for a sample rate of approximately 20 kHz. +Example: set to 26214 for a sample rate of approximately 20 kHz. \subsection{Modulation center frequency LSB register: 0x04} \label{reg:mod:center:lsb} diff --git a/Documentation/DeveloperInfo/FPGA_protocol_VNA.pdf b/Documentation/DeveloperInfo/FPGA_protocol_VNA.pdf index 0449d66671d182f3b7a5ec1867565126ff756485..f7b0ced68774508071147aeac6d6f41b9155f187 100644 GIT binary patch delta 48629 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̹qI94fN0ZA3W`%(19RU$nded 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 delta 48987 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�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

?H?>8NF?J4URO(G@G zu#7cV+2@;b^V*kXlS<2=uu&<+|Muji~3M6V_oP3i;p zV+h<2$vRtFWkiOGaU%J`QP(e3fXExlI=GY!GlUO#&vL;_?V*1F1mHP8v6TW+MsXei z%AT5!Fl@LOo#h=v{iWw}?dAKU#OVXeMzVtsDg^YG+b!wb)Qx&n21I3I# z~;c(RE$wgP?xb`TDhmU9h*gB?`WZ{I*!B+c?p|(%ci=4x-=RJ9HWd{IbD_& ze-~X*dLh(U0;MHjG``3U%$AG_I+X)qE_p)YBcdj|F(0;!;+oKB+7 zHk}=j0l$t&zNi$rx6%ZBs?7hmFotBZQ&yFm07gGm_x{}1#^AE}^bJK_+63GWGjKo1 zw7C@UL%{H{Kvi|_xc?U(?*pD?IeGbg!TD4n<96kbl|8ZxT|jyRTCypv`ryAc5+fXe z^za4<7c2`IRgaJ2-aUf-V#_5?UM{&LzD{}s72TppNE6!vOBInGIi84m6s#MC{vWaLIt_7tkI6Ek*M_DWT!3Ol;fgB3c;*%zdsFC#LJPl(ug%9l|KeTsYoHj|~O_BlJ$F=IxjFPrrHrj&XAt|B5+1ShrM>PJLyWHZv z&5qf_V=CgX#%7+CkNj73vn!TjF*59#;j4YsFQ^-0kG|K?NrJH$?^5VmNJ zrG96`hjFhBcScKWn56nu7O<~yWQLDcPLLU0DEG`zwDWOPiI^GvGm-*|QAYgB*iT5! zzvft~Ge&%v&)RU&m4Vbn<%#d3708t%2Ng-W$;1F1@ZP$14S1OK;3(1eng&U#+F)Gm z52R}P%;-M^cUrL_!l{t`l?5ZT)x|w7jCb|Oc;8SI!E(K&n6QD5K7GShlr~0rW*8DD z8T)DSCdHYdT{QwjWUy_m3{F(l(6@byZupsG;!D;4_iBxyGh?lqE@T8q4p1R>rh)uL z+_~^$IhJap;eRK91pjUm<3nPtYYhgi14;OV!*I=Ely402(R`3V-h~7n(V}uQ3=-m( zn<8-!xJy)nTUqbe`Grtpv5oO;z%{)O<~kr4Dc}|QkEFiuqi@0Pzvn^ z1_bVM-#)3M5KFUCjimtC3V60X4Ksd$4Q0WG{Qz_YSv#;H@$+FuS*UJVceltRj`;7-+`Iwr+3ffxcZ)=@zJR@r}2M{Z#>gJ#J?8*E39-_M1J+Ya^EOb z=haRrz%L#T|Hd*o*&gkKndip=EeIC_ZJb!6-bmmS{ka-%Qc}^-Ik^y76f7LA+^pG2 z*|_<5c+=2cA+ce2*}1urAoXYf(f6<_*{d@@k#;XGkePee*Vl;yQ7$eB0wtV113NL- z)`di!7q=!YE-97|UqF?8ibEgm+1oe`-F`+=rO8hi3sV>$-tPyfY;2&C?%F~d zTf(xsUa`8~u(CmFr>D1p%&ad5pwT#78aZKyIUvl>&VNoiV-?<`<|?Hg;4qVXf4}{d z&s_k?>gwt`^LCDk)&k3~lZm$sxfi3)__KusT`}4oqVk?PRTOs$q!XAq)dvIyge6R` zujlj*FJ$y?jOhOiMco289-Bg{K=MQ9toi?<8~G9Z8^f)$=IeRuxe%mK>}DO?DxQL+yai7MI&z#n@X`-ysWIRVMa!3y$h2l#@T z<4e{zC#9*W?^{r%J#te$4j?$>2}wm&#bbMc{UNBv=2p*X1qpzd#<#GZgsg;;n1t)F z-pvX^NXp<8NNE!6_fBCeOd5H3Tq`&$`K%sW^H;l!I0u|o4(#UEX4sW>-u}0gyz~;x zzk6nzLiixRwgr#-3y%#D8Hc=pdSlNhtGm0gMr)&+8?0Q^+vH;-3J93=jrjZtL{i_!5Hkg%MAeLCQ=0m53mI7#NB!}+(8_%`!$hp{5-Cm0_5F^@Q=@J zOb*`0J#EU2)7Do0$}hS)-lPI)(UF^8LSB_x9YXwVtOIaBrf2XiL1dGB?gn+nCMN9n z+&+fYHsxdp{d_S3?@KicQ1f{4{Hy}<6}5%{b*2Ws$s9sK&H)Gv;v#ZJ_I9J5K(3vj z^BYj@7)W;?)I1GxlE$dv<_4TrfGn;+MLZ47P1mojK$*jijvopEU2j8-OK(Q%id#L> zS_2z{fIHAhu|c%3rP$Ks+Ck5%^)aK#F(jvEgBx4@qgLmue9ik}{<8K8WXf3%6R1NM z;%;0)0VMOlWxeHv@|?2GK_h#8!r-0yfyL4 z7F#MB*VBpjXV};Zym<-KBkd%vvE?Pq!(xOBpbi=@1cdPx#R~!ca1f69hxR$F4INXph7cl2z`F>>EVU9m#Vz%|n>*&IqU=&I=K6M3K7#h&ZLl zodGwLy@DGmUcn8OfN+#Q<@aI2wpt(wl4&lG{2Gb*U6?RAo&bJ^HnfN#mL)R)uvZOA z0aZ=)md9|fVeb;A@1I}G`*%nl zRm1m1t|+o6zyodb9eAi);^$?mW~bwGj=7Q)(Zhfp4ewkiJRoxioo;2AJx z{{$^H#8v9AorAWoRMSsIu8L3}M22rn-mTnQ;!tj(_}|7}0E1%#^CQQ*RJRYXk8Hl6 z?Ve3*(R}#7Fpd_}8^I4zn(JxzVFV^WJfDBdzVk&2O=uAKTw<4@E&^yMk0>)w#`96i z1h$J443nFQzn|z8W-5tTju4i_@I{UVXJ2YH{l&&j`H0S0U88?^`VApp9plDKbiGf0fN zWy2hkx_`(*TncD{3#0&@ccQsHzq2I9GJI%KBVJ$*eF-L>*Y&KDs1CmO+Wi)f0k#vS z5oy7Pp}pcb{0N=V+hf&%^Bw6drnLyu=&OlP5tXr&+`ZyMx)>bo zt@B+_<129!P^%+C$kFfk;9a6cV#qcI(>Ej}PU*m;zQ@&?2Lmdvb@NN}_-zKJ=T%- zZh_cq%8a(7tQD#i@gJQ_{rn4X_VZj2D1%IvSDd4V zN*8rGHn^!g3&8;D$xWl9Vx2mv_{q`6wonT-o^%{m`y7P1Ue2!iFj^^7(@M*eKj{tuB6Bx?ODSgF&8B33yZ~CkQ{dD zgy&v^$^5~SWEWaV0<^eK_Pzcx85Q3;!MLxF^vXMi9zLU6l|j!dv>!@Eb0blx28#Qi3`P?I6KJv)*;;?6lS!NsQ;TsB_qybw z<5wu)=c|?V44dc`B*r8xb%0E5DC`;uU028-B7WqlN(dwcDJlHTyJudc=l%gOB{Ys# zaFGExRW2F)Q}r=M=i@fAbME18xkxP^2@U(KQBKRDUx3=| zqPFGvJgw(g2@jC^V{w-H@XzcURyp$*G43S*231~}ms||5<`C(91C`cqgU}*R`A(|4 zEufsHz9e7Hfa=|TB9#RSePI;T4W|2yVu$-r6XMvVK|-^2R_#PCu9dGp6sq0nBPF;J zqqcK;6TWV$(@x%t|H{?K->m0;KJ1*Se+=bONVjssjC3>?u|-bIb7psxpZq%9T_Lds zh>f~2liVk%(>BkvOaxh&^&FZwS^Xw;z>jSc4S-~^}^n*=yERZ zf~OsmvvtP&MyE?8RA9h`DyF;X+Q|w-xY3<^DYrkKXqrdC^hx&qe9m11jeXz|U^A3f zmNP6~WZ247o!^UXUUIL5o_^jQ(U1Yxpbs)3Meu_CuVOWPOR31O6ajlP;m^V=Cd9S1 zijAMPn_Q4aq};E;&t*yK^fav#XiXw;9qW0OJrQv82p2;hv-S#pv3tX&TuTo>oQZpo zr-QKCzPiJGlDz&p-NLj$^mS7T36O8#0=RDB_0fkNG0Q)Ssu_9=mPs+FEvL|-$jIFP z43|te20uYHxS8tP)En3kDk9Tx`>guS@OslPZrq!ubLS+U0V5bupb!S9q!OCmM=6(t zMNZ4%ylp6BHup&4^1&sKP2OE~r&p9=5)SPJ4OPFIciTi8es58z^><|V8DQ1{;Y6Ps z>0G43m^MNiQU6jY??(@>fjiP{y!Kzrmb#i|WrxbZHOY~^K+;es`JlG8{E!m@N@T70 zL3Iy?154;zTi?%CdL6AOl5k7kr_mxUh@J3GKmRh9=(#meC|A$ATxS+}FJ$J_Fqe(6 z_hTB+`NwVi*o1sI34~RSUqjY=hY^wo-n5 zAU-_`DBqIJzBtu6s@@U6j^PEO3hh7?o1N1!cn$!GgKU^lq&BQj*@Y%G4#bo@6<{m$ zXE-3*GbWM=EF{Q0!t#MxSYrpOEKvDQLi)fG$h3P1pYL=(dZ$GGZMh-+UE;dxDOzv* z*H!|zp@pV@eTovh5DyUS-oKCFv>Ej!)FO{A_ z<}*kp-+Ml<;V>%ee_#fdO59#QXU%95j(`8L$uU-_e&UhNc->yz;Hb6z+`H^0L1~OY z0*Aezfdqr+=2tN_u9iMQgJxS*FDfw3UcG>w@ags;aC$HKJG3~n;&!Lux0Ljv#V);sPP5^Vh+joq)K7LNBr0y@ z0lGQgg3A2q9;FoNd6i!tJrgKoE@?NWH z@QRMv2YHD4hF1XuF@L{y)QYRvbZ+RSB#EiJYegoIeJMKRtR9K}%fW-`l=tXIKs?}T z#r7ja+FWo)tycZ0%zI09E;%}%Npx-cJJt0V3T{^K&iE0x%VM;)5@x_O5)VzEl8O97 zljr`|?{K>9sIvW55l+zjkn7_n> zO&U>JBrmS`5^X!ekFF08(ga0Mda$rWG3M8IvbLk!e0`q3n(TR#05l)^cN&igczlvT zik~tfA!hIaKYcE`I_5gMB3`{qe}lYT#6(Tm8$_u3m<;*c1`zoUQLsNVzE{vkK_`)~ zQbJ@`I}g`h6aJ7JNZ%2rBDXGfhws@*vOh3o4YH~w5MElkbyakv^^H|1u{lm4byI|qlAC&6m>L`*F>G{( zt>NY4QkMks@`}+Xc>E|0QNuiGJm7QRK4~ojMBA!5f*0hKLJDc6BSm@#Q&&Biu}7VH z$`%4x7<`bAI8FlZqk3J4-ZJ_So1N$jSYE}U`rWfjE%-`Rx6g2Y_^Ui@nTiFv2=-hn z5IeUZ{(17=4S^aB{t17{QjFea+Eb^1IjCRJUvZ->$+n9{-Xf!Tmp%JQd%5zM5x3R| zU<3FZPJ_BEfN|{+!qlY5c2P9=y2ZP|Bo;5BBPdhvblmIoO`=UVh;Ab3lX5lYmXplW z?{W8KEU|Ycfgv}R#Kho z)MH8ZGv%kRjHXlCjnSu0p3rCo?P;N}0a4pHPV}miZ<35HPdrovH#}c;?sWehd%PXm zhGhSoqx#B?0pA3TzLL$tFfEdXg0yW%tN}}>%jh>qPGayw)Xn6gKKkj)HQ)Xd35OM5 zeU41&Il*;cscNR>=$g)we*t5NTNXP(Uewd^jE0DKRwMRd{g>_}0^L021Yj2;vypTl_8R;{i~mFDzU*I@;w|15c&fiXWP@}jc8 z*}5rM*f3hF@lWug44r7c{7v*pnhr3rA(WgfaZjZAGU5%S>Gr9ATR6w7Ii^{O2U%Ce z_)Y*I)=XGSyu_ERFuYiH)=DW5xTrN3Mk74&qKH%qYBsy{b*Vd*l|1l~pPT!^?IgkCO3=cMd(8YJm$oGP| zcsZ4GuwOXISQwM-)}X^Tj09K?WKD8NQs-=cku|aJLCcL_NFNdPJqIMyv~ru7$zj@M znA5GZyoB&@KqJN)N7n>;pmcw(`)wNQj5Z10S{t1n=Z&)u=8lkzV9B>zns6_5O3kIn zsW^DEj|e$Meb4jyy4@-5N)L%zDX$x|ct*RC9Y_j^FeywAB_DpLc! zQYZKKzYh=cyE~^iD^CkaqbnN5^BqHp*aVUZFryO{tlqL0`wtWOtu#;yf4#&kA{{N}Y>IB4&?!{460Nu&TXIHjDP7gI&UiT&y8YN6u}i!)837A13EGk$?~F!ggU^Kt;F*( zt3i0P%MaAH>{h&4r~}tyW+}rFssQi~!Hbx*Jq)bIdmpZroqA*Y_r<6iXYwx(QE0Wq zj!i|;H_2~w)pca?@oE`MtA@^0lVOjP4Qz$lDauULCwlwAwzhhJ{JCY$0Y#Rb2Ds8H zER^+PEvL!^2gMzteTcl!a-Qpz&m+@@wm@p9&PnPq_Z6~=E(A#f(FX*L6#_KM4UQRw4 zsor>$&RFEn{lylQ|GQ0-zxh#EcqnBvsC1vX<)X%|zLYgjWo%ms4uCS0W6brO!1u`( zi?48{-250p*N`+Ru#xEH9C3J0HJj+V*$&1JnRck~$*PrxmABpR<#K19Dd@?6h7+ZM zvRb!?W?kSfU`uQ-`SRg!*ClwNEOkHx@}nnpkk1_}u#c~=LP&$O`evBoNchxU;Pg+Q zT3D8@m4X{Iv(CYsm9nnu;6T)SVqP}(P$dM6uspIs)wX2PyOtu)@?~9He^tsCUELsa zoj=Q5UseZfATq*ZoX>uIb&hb z>USlI3vO;%k8qEUP;^NpBiFUT8AQ#X942lE)uk_3h6Vi3l7Fc7jw`BtcK9QG z5_n7Y0sm4Re4F}C>fJCM>EtmCj?W1Ah@A*@dipMdDRir-yc}k~WOLSR*V>%4caJg$ zz5en)`0H~Xd~ALIY4}ejE99iZ{?w6E5sBIyLiNv#I=-QoT9IPZb?PmZ{{(pP970@^ zXAl{c==`>W$(I6DP7$sextBC=wl)aQ0hD-_WT0f@-#v&rd>;* zT{M?wy7?xy;kWL+`Q2&h?p>^(l^u{v=H}JE`%&cjJMrl{xwif_y>B^LQO%FA7(Xx>ZqY`9+MLBf;SoY=> zrkbh_1bpieB%0arr?tbI?J87Qu#1|r3i!lJ(mECcOC*y^cCS?9dKFX)T3X9tyu)OL z*O#nI>3S2jw$ND8V^^*f&&uM}u-AW_!rul|>>PO_k8k0hNm2~QGtaQgPzLGl0>=QE zlQAhK;Qb770c)-5WiPWSo5Grcf)lg^@rav}SiW<=v@nl|@GD;fBL{}z8fz-^a7agJH;a`m_)_NOa`^ zXAt#mg;J-9bJmrJL)*D{WqV)#IlTTcBQ^Y{5oD*1xrk2Aep)JVgM?d|PGJD(Gp5<^ z=Wk%H66~8u<`vGI#W2f{=LXp)UT_n|+@tkp z^~keCP*+FQeaP!nKYn0~xPcD27y5L8z)OkAYLe!dqj#)7u6%u^YZFdg)e+oON;9Quf z%_cdqZQHhO+qUiGjcwbuZQFKEY#ZO4shX+(^1thguDRsLISz8Ye`^gUx0NG@) za?qE2wZz#^o$+XvII61PfM1zDJ+I;-M}l06741QlFIjjaRM^4zoaKajkV}91QfU(N zpE2F=2?sUf`{7-95J^|@f8M=1$bvJ>(Q?)hf2g&ap15o!gu`r3TLE`&z9FMuWz~}F zpkS$7oX{?iYp|*|q&;Y)P;`Ll?&?RyPYcK_(O<@EOQ>X1b@PAxbfK|OEeNkd^utg* z!(c3OM~%&<*k*oZXOovFEFUkM>%@c0-@HP?HIf;!(`@)P<{*C@8LBIFW7%}%AM(m( z1kL#X3a~=+=AYP*n18-N?_P=m*hXr6)FQ757$;Yr`^ZGf?HcCo@OXxg+th?L<`H)Y z@9P9!yyAHsJ3)J<>Lm4eQp`}SME{|+`k-k@%#28$lGA(JqIFp@O#8mzw0=b|4DlT! z_F1V%5)=WTXyTp}k0oC_;lYo@Pn)1*x0_R4_5IFAHcB;k7eLOkJP?l1ref7~tY)at zhswB6rl=F~L|b`6Iw$|3##c{@?u*EBl?A4~9TLSLx|$nfU90*SdqPiG{ipx7zyt)gW2pEK3Qj;fdg_y5QOZvTW#>Qw@+jvejy6CB1|8r zjR%jyU$sS9AV3@(s87Wr*b5dz+#6Mj=%gtxQ%=HPzGHM=Fn%2n z!}LVWUeb99Tm9Iw>UDWvpYDKzWf5U8v>c~@cLMRsUN5;O)sqRHhN^lL{pGL(vVWsm zBYg8>dmsuO#oT&UNBV`gP*$0?RJu0`$d$IbC^hkMS zAcwl$NrO-l(zGcNjnncdkD=X%Lyx8vmB!8O;dxXk+JeHgra$|>bJ%Gu&HwR9ew6ED zGauB97{Gc-iBaS_=e(Z(up*;Kd@ zhbP-FS|yJk`_v}BO|(m~&FVSgFn2OdA?}Y(rnFHvj!pOBB;SG@k#2dl_aydFCeL&; zE8DKT`41$xfzw@}eA6g|lI3YZb~Mu_&!$TymL;7oYSB~>0_Npf?Mj&)rB9MdjU&S5 z0$^W3m0(ik& zr=G6ITSWK_>6a9%dl5BBG9PW}7<(D=Zg|eqLZMybgc;v@1Ap%AsTSs0UXsZ&k^w?- z689C;Y214U*M3o($#_R}&^-Q}{QTW3pBf*0Zv)kYZ2n$eChCij1I&-j2yoLg>s-o9lFZnj=!NkPmkDlxh-i)s=1Ydw z3LMF_kOxT65U#A4^Og9?gUNEpNJk@t{E3S`gl6yt8?d{pU+THX>ZRSigfQ*{Jj=PA zdrT6@G;}$LqXxgVph$sb(sKq4b-$viN~DYWWrUqFod}h(!|p^^TiN+|0$QON$2M%5 zh{s5GouGBMi1mb4L0)RO%3wUYaSm;AUxUa=apoIA;>1*iP=5pTltgD2rQfSef2b9q z3sd2C4Y;B{4WHI@5Py6mY>sWYSjCeJJ~f-Wj*m~0ClIp{7rVXEh^BRKSKekZ5d~%M z{vODE;>ne1enMj;@Dl840^B*YNC82SV~%CAj#0>c>Mq3X5;E@~VfSEuWWvQ7{kQ=> zDv2l;obb=|P9|yL`1U&SI<8twC<4pcNKCWlKDS9UeH)65e5g!Q0tmrXlrxV<%*cp4 zbae$qX`B>kyV|5yut=K`OuU6_%p4>P$KXgF?_sBna$(1tb|QVQfDL~%76xudeZFm3 zHequCaVcfc8*TtVJ+mtk-}YvPXG!h-(EP&otUqy~{g!Jkbwa zLfc4dcK);;EuemW*ryH83N#b_PhM=Hacs9w6noe_OtbMyPp54-r|Q>B zg~>&AP{qSV^t0|EK+Ob^+1+Pm3ccf~nZY?sMGh|R4e`P;N$=~xj=$xjIpr|$1_}2o z{yE^&H(vp^vO_Vf94S&n&kk3Im}Uqw!T#GWaRFCO(V2|>lU@&hm+Z9W+hCTWdYrBG zhCs=@3{uJMNdmF*(*52%JVb``BD{eW&5<`C5eILM|Bf9KF!+--SLIqVXT>|Y*gD)* zy+s>J>hd6 zd;!#7`?qx0ki*}{7pJb2?NEHRM4<-GoC_PsCBFUmq%Fe~hk_)%JTszMuVQYcLvi*p z&-S4YsZwwnFvA^0PYj{GsNeFn&R%0EAC5^-VPZ9d1Nx|#dsToxl>v2+61kG(vjP{y zxXQHrcSq3sB0{1Qoh=Z!$Tsn)`SQ~A!UyaV(J#{Gldhhg*H(OQle=kXCSL;4aZf&Z zcK^dNOhJHWtYcsSthfqdLsrQMGs{QKIp~f)0-Z@5;QHwPA=)4jl(V!V4EOj3D+q>+ zq0?wM<${0!hj^l4V`$DfnU#+!QIF$wKw2-b@zT*;aGJA+r^}-`IYcPtO=VTBcV%|x za9m-9(jd7jubn%zu`UvFA61C!Sh`;4xBQ>$-{zeOFr4s(^m~%u6MTWpNWN>P!H;y@ z*p~5l0Nomxp@cm(x>JI1m(_NzANFIs5RAQZhx?tX{}uAD*XTCcWE zRFH^MbH;^oMmlC_!0!=1^E7eVTE2zBz$E?>U^@>7WWwn)bKl?q9>r3wRh_)7WNY6w z3$O4P`1dzZ;)l?wzS#hs5J{%L9ljb#L&sQ8HtLKS#y~zE zpor)%hg3Bssn&?AVu`iE_%^*YK+2S|JMtrs>!VBCFUcn6q9{$Mf)j*nVZc)nONmo+ zJUmB8kOQHs*1Fox6od{I@ep#{WnXuNX;+}6ohn?6v)*Nz7K0dXeKL*UzhpjrOow(M zLt4E}H*l}NOm(pw<^s^`j@glA3k?_paH6PfP<^zBv^;bK02qM&MSFUMfn^5B_!#88 zw_+f@gK+oNjplIX-{4XPh=#re+fN*6tC}Z_vH4Cs?lpt?QO=D>L>^V8CMSM7FxiWV z;h@u1pP1#58Pc7iWH*=|TT()F+Gj22@9nhxh!im=Q#c;bQy>G*G2W}+3V1?N zttzLH-hH*ybWq5ODn*8NsNnnq6I_TvQF`_*{<5!3gX%0BV%I1EJ&sGa8FXRNWw<6; zlDX>Y`(P?m&m{S085?Cd3sYSJW)(-mRW-Oq`1|Us{UrLbsNus;&-WUWn=K_qcxCp~ zFwlD=&a7QoAKe2apHoSY(u}A>FLb@68IBIo-o=b zn9prh55}#oc&IQ)jj`f&IdolfMBfzle`z5$XTVhBW35K6lb$Z=pN}W&Z5kab@RaX) zfW9VgcV%gZpkyWCjutpG?#t_T4~GY^NR(B3m&0%owQ73vNaY2d8PkC=o3c)#YVVtR z_GcYjLp-UH@>-dh{@yVF448&5M2Tom9YP10&jWXgkzQAA>%-9?Up9<1y%%B+#vm(kkADGIbsbbvsQv|@U z*}Zb2{|wI(_j+z(Nd@W#X&tzugz^Ptz&`;D86oPW;=9X|* zs-ZEPeN>73MiE{A6C98LV^BiOwZ26(3^f5m__#2DY|!e~#Cd0p!2cI=g7{t2+C*>u z4!-+B9tEe+p?Ab42?C~kB(sh2lJ~bcr+)R5bKRU`723(5Vlj>Qq%xPlTw$1qrBc) z`TP>Da3^%T6wX~>*v?ZyGdg973S<5bozi(1S|tDDHD5N>EB$t$+6Z3yDeZ{wJ1n?~ zy9gg+L6BI--}nK1IkC2wa_H<}qcz%#S2Os&H*DgGs9h)HTFo*nTM!;{hSNoOeQAJDs+OK&T})!ABjw3*~}= zAYTjCFOT62ohT}<=bW^UVHFsTE9j%jn-2r>qs3$c3^PA9-T;`XNDVLN9c@(ZV7%Vf z%UUJQ3%(;}S)>+N7PqZ{6Ch`<5^>xR6*vN>Pp-#_3`4b4$yJ_QR}z;zs0ck-h6f-Gj??OV^Aru4Te+TUL>Dvu#|JJO6$ON5H*su-C+CZk4gpT zq1Q_Q^|p$Txg8*dcR6SR5o|ojtpovu4}{9ehz!n~I{lV;Pulg~kdL!z8=+NKOcV{0 zV|j$eS$mdjk(0zz7&<1*ra#B8EO#`v8#Xz4cB4fcH>_5dH^KFwL`PF zmiY?RKv5fxTCz&-)p6DvFu8}W>lPylk8T7ioWLVFwY^j?-zS|}LooD~lkUlhi+}HV z3> zqqkYBhe9PN5CXNOrbd1jdsFcu*_Gb|)>{yZnTXHhaw%Jo;(WV&cm+Sl5|pnD2gv~f$yW$-?% zNpaXT7~BP_vLQ-}A0_KOJg4PJ2&NAA(VI>*H%v2m8;( zBc+P{TL)MS!OA>y<7BgU(fBQ(;#K44 zPJXjtZ|NV%AU|ZRf+PAo&h+^*4J6K=U8(DF} zdh1*f@d*pVsoV7-S(;+&c+eG{s|0mK>JsV*X_!RX^|E+>daij9U4smT&8f zv-hQ{>zISsr$d!4|9EG(M{vSW&1#miBCY#XtB6#Jab~SQJ{6=uveQCN)>c6q2~2Dm zd@7#RMpyqrVuk>yjqz|xqFumCy@VE1YF2$U)oy%?l{vxK8%~FRRsQ(h%fN@yQF}vX zCIo>&h@jGT=ihJu!Axa%mH5jaGV3yRUV(`HlqBBVDW6uQ*3#4c-WUK(RFF8ueBd6N8bXn?FkJX0@lx4M( zDpNpG9<;n7^}6~(qk!22MCPiUbps2iNzyvY89sZHs;33|+>yU0h64>1@ebTQ$HWKQ zimF@Nl<2Gso$1I$i!B@-?0<~A@QJ5Wnk!G5sAjW5 z8emnXt^7gHsz(i<`}{S8Sn1DPRYk(= zHR*fHV*41$Nj;X#ThZze7UrHnBBPe zFQ5mYws4Hp==05{HQ`yO`!R}m&i^murmUKZrdXrJ{3g|K&eOiA7hNUs_TF1C*@1HT@gJ;ih{Z z#(cNOfwbCzJrLGo(2vKuBkHI>FHKnJ0zKJ|2Fo6x|-ZO>m>{H zaie~$B(Xh26BA``&hHPUOI2ZRe=4p3)UZf-Rlc}wr7fBkxdZ3hS}s*geCSmq&i0qu z6XONt84-R_P(eU zvq)SwM1M;)`QvE=lhj+V=ZoQmldr!m1(AT4YMFXD9-EO=Wxb z-0&;=&lS?N@QA)FN|uB=>@S^U<}lf>IOSIFuC&8t(oZ=+-98o#4-2jVUAuMO;}AO3 zl8;9QN7`yO`9UIr?t~Z5@1q!i7)hk+H+*Vdgi`$zKB|4vU*+)49B#i1LG6BW!d1qF z=3GF|1Xc_kBGpv)v$>9FAz(G0Zo|eHvOGc`+#3OYIyVzMpgl~f$MoeJRDyC~v1YSR z??gkmNVhC&bqKk`&E-ERfcB&!EoPoB8TqQ?C-J5z8TWrGpuabW^Cc$$zPjN|;v2V1 zUolFWYT8((N8SAo)8j8X+wB~@y1Juv#^8r#i&8j|dQKPoUmk2KQ-qHX)1RLMgDdz; zScRTsN}eVyR%eg-dW5}CX~cS=^W!;)P%0*T{zwpJCWqcmotUCd@lv*5G^l2-b(zuE zTl$&KVC@iC!gAr<1K>XZ<0`pQY1I7WrkXkeOGD$O@If4znP`olu#{wL$wy`KbBU-A zM)a}rkNsUashjCBdzDPW^3OEyjlnKZ7)|;kQz`t-9Cc(7(Nq!k>jP5(Jl{TX?4fh) zp-3m9zx5#?Lc4QMI4t8?osvYnGpPFvotGRTsNs0Dn+1AjDnyw8yda85mZ9L*nXu*U zBpEZvA1l6ne}Ro^Q4e?lZnoVajmy9Ep~-mTX+@M`hPA^5SS=2g<2lIvzd`-SuMvb` zZHk{}qR_ltiq@yq8D0A__l`p-D&K)qO+tm~>n+5!5s3J`gy*@nH;}2<(Hh2v{NwgC z%F&UF*5x#hKp_7FyB+bDoUfZ6SF8KJ^PoKN5VS{RO>lUi{W^F#!uBAT4hA-st#I4s zGF|v}4CG%wKN`4ze(&z0KbARdPh$v2+o%%$MxQj7pMxDC+@B@$`bU3Jtr3S8f`0ug9 z_D}$5s@bIX=DJQ*^y)^z=U+@52k@+z#8x#w1X$+oBzlw8Bu)AsvF8bR9v|o{lU#rB zCh|M}zoAhNBVCSo4&LVKI838=eeW|ySWftR9&-}6G89e%btY)QS5GD8J*i(TcjiRniI9UNi+5oIW3r4Nx&Q*eo$(*=(0Vc9*FSzlq)~iUWxDDLiv@%h z7d1K&D68?XYGn<%d-?L{cutVftj)%lp8uGO+uHI1aQev4c>UJ62DRPB)`nW6OM(Qf zeC`b33dH3JuN0Vzok+VMAq?}^R*jNVJV*myi;>5r`ak5jqfp#ReH2g&$?8jhVLZ{ zp|2ggw(fFIk{grBEuO$iC)IT8C5HCp7#cZiJzz4yIv%WnXer4hz!%h9FKbTnnZ{}; z);YBl7uCCfnNxM`OgiX)r-*U00sQQIb|!niUK0|b_$IXYw7RtU*%f8*tcIHlKrM@TtbY$DUaQb6*9d4g+^~ECS)7jK9CC24ZlOyC zR-{6yP(0JuBKOx6KKZZBiAHH`?tj^O+&jVNhA7SYL)L`_h<(?dyOR2NI1D08wBTT>S zlMHgx-FWPp8)m?JbVbgOxPb5X3aoxnfMR(P60HhKC18dK%-}AUpCQ!r2fL9(0zee0;uCmcHHMx5 zbTgQ3s}l!Tv2o+0HHN&j5C}{M9RUc)(3f6h$wB*!czOz(g}7aLZsV~@nQ_QJlkD3^ zO%AAnj0c3uAOhp3A=y9kQ(nr7t08UtarOK|G-XDb2nMM)cik}+AVCcxD4c}9`T;jS zCev1%XQ-Avh{M ztV(yvJ((uN5yeZKy9f4;%hai{Yn$Zao<>x6pJI=LhynRFQlAQvlwpE3FQokp$QX|6 zL?v7y&$!&6rrDGMkUyV{HFk{3I>XyoWB0Bt82iD&SN79=l-6sF!|Y?z;d!hYo8K=c zU1qML3-=@MApvNqkgeKe`K@!+LjO`$H5tKUNsU zjM@nc9Wt>3pa!Dgb+)R_mtPFr*Bh*Wg#N@(#|EuETKUI4gb)JvRk3vg1xsKcn2}2% zlWkL@T%+zA#W|;MtJsynj?CX^kDumo$dKx0Sw7d{gU3QP5ijkB^@=U(mMrkJ#h$zS z$OoI`l_kS>fu#N!(98}=aCs<3z2mz6>*WiM7413&Fl*ZOrKwZ98)HME-AdEFPn~|D zFl(y+klI(7-#JdH9#i9eKi+`m51udWBK!ccrwSfpANf`g=WkEdr+s}|oE0vYA9CS{ zNJT`^k#vW0lBbNCoU^MRf7mNRlD17liGeI&{?^_bT((e=e5xl2Z-Rfs+~ zUZp$(q$~HjHZ6#{*D!~(pXcyr2~#KA_+)MghN7`~LH{hps_%P^_%ra@Q^AE9k2TO3 zZ_JQ744hG60A+=ci%(O-Df~RqjMeL#b9!C}(oCgxU%8A6X?Y46TBw~mD{3#yvmYc$ z(>{+O^p>zcr{ED+f4svVbzo@uvG@-O*|FLIKK`J-?snVAn8(?{K*5;6N4G6LPDJf@ ztcTgfDFCUN(kWSJN z<>lX^{oH@0L{z)oZ|Q{3v_y^7T7^T|b@)V8n%sHFYiXvC!r$M2J3Q5m>r=FI^4astOf;7yZA9=XujaL?BOLKH%+&|7URw76-6L$` z?SQ+gR>sS&1Z>9O=m$0BVT)%Z|bW!l9oww z#fCzZKOa^cONk!rn^5^R^nI9c!;m_ly{maAs&Wyl|CSEOjk_rEc)G2oZJ}h1DK3kh z%E3ka>leGaeTrFeibq_p)Qrf)-1QXeW9PDK|Ens->kFI|M;V`Yl?y{50y9kdV6oXpvAQy=7T)s~Q~wY#jMYGU`(2;W{1tk1_op+ATLkO= z%}%TDqWA6)m154#q%0N$Y&ZeRG~+%OP@+$6XGQr6$}?c=-o52cI*)2o)Y%Un{BW1P z&zxdWgpz*s1ZPi6;->%l>r*sSpSC)wyz3fUZr}VSw`Wj{8hrqvZ~uzKcIR2SI^WZs zs8oAW^@G2y8Y{M|?0ymvajA<{goPA!4^^%9TKF5%O&_o!+z_MPY0?6Q^V+7bLbg_D zg}}7)8Qz1wPG?J*ln{H=I%>HA9gC7@z=c5+^BSvHILa6*2zt9fN0fxBTX({s_7T^) zRp6GNHaR}f+}dF{&6I&K+3xhd-aY1_t*%W``n`4|zp{JHd=#W2Nb_7)2fQ`1sjrzoA0Zmz3GhYky9huFx$VZULkZ|KjnT4~#dKc3#%thnejLP1u zrYLBjL#k-*DXB1IKq~J816(Ago(-erdPS!>@+Qj^g!Ku)zo=cnOqDL1pa1${{PD}s zDf+={f-q|ELJaUYICEvmq-;YOdLgG$jq@-XZE+oJqMkFvCgat zV+K6UsN}gC)={j>dXHb|6~Ui(tI2IGMpWqE!El;*g-d5LD|VxS>rZ4cfXeD6fui1O z0D9HP2i}7cwp!}#xf8#fN#6EFD%+Kx%;;#Kb09*eX9Dm*n8TfL_re+?u41HN&#l z+{u_UR_mbRjLs$VO;fV}`Au_pv zSBR9P6Ie@DAb9fM3Bm%i65)@3ub~L6_XGVB_yER24kDDyJb~5pG5)!f*fmRYO`?ko z?oo|*RzBITsD%{PJzBAzEtVn;3c)>OP9PN#!6 z5|Oz*zw01=Da5e>Zy&XWdrJj!<_-t^ea;)Pe;F5aRFpGSbuja+XwPoCtkZGD+V}(A z1OQvQT*#iQ5&0<4%mIK7s$R=D|+0>zFDKC%znqspN zc~v|p7Hd6prDy=ts~jEF-%&ZWfm(=5+j{D5`nIVb$~UsDHaL@<$qLI+P%sm#D93^T z8aiOK-+Y_?U<5Qti~lItOX)>Mi2*~F+yfTRcrKy*{R<}Va?!=0r2~(WHk7>-ek&!O z5smtFXg!_keNK}YFD_ZrsH=?5OKH|wTsP>O_E81oi_w2W_f5E3XZn`HM;J$J=r}G> zAzkB`w)KLg0y)Xg6Laikzx_YW)J=+8#7#`1BBRoDm6LJ2w!(@fONdr1qemMIPXP!8 zR#9?DLkc~F2(su@g)x7+t>yRa+HI+gc)E zKIHNw70Aat$bGg+yoL7923e0l+yH7M4#@|qd0j=1&gnTvZl%>*968+t<>Gw4=F2nX zAg)i$Im~c;)i;wUC$4i^c(2FYbhw3k*y_{Gt+foCc8Y{g6T%XHLdeP znfJ=1a6#w7*%xfy3xSM4ZeTRTia_j0f(pjs`S2kE+*!)!CFKOAXOp`~KY~rpWlNn&DFD}Fw#T$s2e8#* z>EXVeh5KV?*7N3&b6K}=u-#3&-3_ps9~d(eGc!l}xHSm={~KOfgY>|&{(ngjAu|UT zTapeXU{_m50Y?hm|E<1aTrXC5*Fl+88ImbEHvxt;8RlP{`Hy#D#neDjnjNlNpY#8LMJHK%3!XAVXN(&bqfEJY$!Up>@1?e2SmJur}1p^$TmOG7J zpR>!G26r=36Be{)Rx^c>N(AZ|2PH&i2s}S@JRwToGq%#QXE5Ov?+ys4p#eVM1(`q6 z&}v*GZTs-H5{o7E#%OG z$aXNx%Rl(wqwp?%O!rMR<*%}-3N_L)Sj#e72v!1e{4 zSEF@0S@qvGwYf%B#%@K_=6!&ngR2+J4fox=ULPV9%j4~|oc(QfDtWQlX93mB{$U&knjnd>_qf4 zVi!Rw8jr_*3{JguL+nyVNyV=S&ce$$7{9p)`FH;dl6J*-R#ROVnsde}vA5cC2V5>I zm7Eai9@g$ElbksSk7uwgYNc5wcU1@2$k-mbPd)xL00LC>Ia1I{8@=t5)!OS~&e)6d z4N)a6O-SgEO`es{5Bs(h;P@Wi3p3)PRfsm*k z!B*@Lk(xjUA@DSll(zXemn;!O;T~)juSkuSDb8YJ`6;zb`##RDj@`Xuo%%8)XsD4M z+74VBWFy#Y9A(_R&>lu*KbfL6%ellTcOeB@I?-|x9kZL;m1$fXX?JBgq z_`%~h6-zF9WI!qn!0L#d(iT&au*npeD>RrQNJ)kgs(+j^lQWq)gqAAevZex6+wwVG(K8>bJa4r647W-& zeFu`IBwo&YAElNNYnlSXlgpJ%k4%s3e%9%h7$tdSbr|&pxR0Oy7I%)TCgq)cQ&*xK ze`H9T7-dJUjC|w>7%|3fMFbOYF}x^y=^FtAl)P>^0w0L}lbSZ2mYCB7Mhh>WK~*$= zug9>FpG%28lTZiQCK$PKeCPne^s1H3{HB{c!8sHbVwx_bVih5ED8Xo z7nv|qnDcfm>BsiS`7d9>6yXk8yWn%}Tni`q(ID!8HP7Nz2d{Vu3}5S0ZfuQru?u3O z&STBEnlYlpVoz}E^IsB=5z}|H15J9C za88sIdn=Kwuc+&mO-qu;xVQGQ_sIIJzZEwI*n0QgWo=WIY5q%?KY{6_FqqPKZ1p7p zyqyI4((F&ZHBrQm_a@J)@m0)SS^;FSPa=5-q1-7I%*f_H4XC~78B7h}k4tg?b^g+v zOvEkhP10EH5a3P)7-%GS#bcRpB_?0Wu%-OVMQTld8tbYx{aTRLp9nlwe>ETe(;2$eFL(oyuzi|9 zG0ozrbM(TK{nK8**8@@QGrtbTIM+ZHkSgQR zVC`V?f;4J($d-j(t6m>}a2B!ab&T9dh`0l%^GzENpB=F8wdnWqN){Z?VY0pq*oplN zETHhCaE+>D837Y~YsTExRrhd?~U~EcysUO0VH{>kJLvl1F@e9<>0LIq)X9# zAI49k4b%bcRGb5R{qHYcSU@t?P|Gj2Q~MtHAqN~~p3{a{8-r7M=9%T&G|NDwA zY*Rh4NECKz5H^8)6v<@zHaTX=GgbOg&!H~x`3_b?5r zIBO3thKj3?kKVwuaHXG{_ol8}1bM^S|6SJzYZWrUhi`?6hc8Hp%r877N$CI2Qa>#p*j3!BzI&6t1G7ezK0l5q8Xdy=>Y{ zd1-Md3e%kUSZ-%e$I?9*WyY49obtEETJuQ|vT+QyglMZ*3y{6y`2eC|Q3d&h@*9nT?nFz0NN( zP0eSu)Sy2>si7jUk^6YG()v9|-*u0**J;^$WLw#-q)?zp%O_{uH%&L^y(z4SpW`vR zTpO89?EYqDt`hChb5p${(lRg_!GZsizm4%HDMBbJF7F{J8|kS6Q&r}BM4 z4o2x4*L?wl^hl52bp5<%y^>1~NzTcPU}TIF|5^o*Uk}jRa_*Y_E&B5(p~hHXj+xPN zb>GC?Xo8zNmJ4KfZPRH6-FA?jwGfUAvz7jzJApGs>&=1bO^px%W$j2V2d&VMuXijb zjCp2&c4m;bW*CHaDCxx)b3d)N-gYHwmp8I%LnF4LYWFLqYLkFL$?fZm$a=L>CCZvJ o_rL!%gZ(%iyMEGC-n0St-PpD1-ku-?(43qc&}3v{3gXcJ2ijATegFUf diff --git a/FPGA/Generator/Generator.gise b/FPGA/Generator/Generator.gise index 74de665..2b621fe 100644 --- a/FPGA/Generator/Generator.gise +++ b/FPGA/Generator/Generator.gise @@ -44,6 +44,9 @@ + + + @@ -76,6 +79,7 @@ + @@ -142,64 +146,109 @@ - + - - + + + + + + + + + + + + + + + + + + - + - + - + - - - - + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + - + - - - + + + @@ -242,7 +291,9 @@ + + @@ -263,6 +314,7 @@ + @@ -273,6 +325,9 @@ + + + @@ -287,6 +342,7 @@ + @@ -302,6 +358,7 @@ + @@ -316,6 +373,7 @@ + @@ -326,6 +384,7 @@ + @@ -337,6 +396,7 @@ + @@ -348,6 +408,7 @@ + @@ -355,6 +416,7 @@ + diff --git a/FPGA/Generator/Generator.xise b/FPGA/Generator/Generator.xise index 7f787f9..eca7587 100644 --- a/FPGA/Generator/Generator.xise +++ b/FPGA/Generator/Generator.xise @@ -16,26 +16,26 @@ - + - + - + - + - + @@ -57,7 +57,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -97,31 +97,37 @@ - + - + - + - + - + - + + + + + + + @@ -381,8 +387,8 @@ - - + + @@ -400,7 +406,7 @@ - + @@ -452,7 +458,7 @@ - + diff --git a/FPGA/Generator/SPIConfig.vhd b/FPGA/Generator/SPIConfig.vhd index 618959a..e154d35 100644 --- a/FPGA/Generator/SPIConfig.vhd +++ b/FPGA/Generator/SPIConfig.vhd @@ -137,6 +137,7 @@ begin interrupt_mask <= (others => '0'); INTERRUPT_ASSERTED <= '0'; last_NSS <= '1'; + MOD_ENABLE <= '0'; else interrupt_status <= "00000000000" & MOD_FIFO_THRESHOLD_CROSSED & MOD_FIFO_UNDERFLOW & MOD_FIFO_OVERFLOW & SOURCE_UNLOCKED & "0"; if (interrupt_status and interrupt_mask) = "0000000000000000" then diff --git a/FPGA/Generator/Test_Generator.vhd b/FPGA/Generator/Test_Generator.vhd new file mode 100644 index 0000000..75c7d5b --- /dev/null +++ b/FPGA/Generator/Test_Generator.vhd @@ -0,0 +1,456 @@ +-------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 16:08:07 06/08/2022 +-- Design Name: +-- Module Name: /home/jan/Projekte/LibreVNA/FPGA/Generator/Test_Generator.vhd +-- Project Name: Generator +-- Target Device: +-- Tool versions: +-- Description: +-- +-- VHDL Test Bench Created by ISE for module: top +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-------------------------------------------------------------------------------- +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; + +-- Uncomment the following library declaration if using +-- arithmetic functions with Signed or Unsigned values +USE ieee.numeric_std.ALL; + +ENTITY Test_Generator IS +END Test_Generator; + +ARCHITECTURE behavior OF Test_Generator IS + + -- Component Declaration for the Unit Under Test (UUT) + + COMPONENT top + PORT( + CLK : IN std_logic; + RESET : IN std_logic; + MCU_MOSI : IN std_logic; + MCU_NSS : IN std_logic; + MCU_INTR : OUT std_logic; + MCU_SCK : IN std_logic; + MCU_MISO : OUT std_logic; + MCU_AUX1 : IN std_logic; + MCU_AUX2 : IN std_logic; + MCU_AUX3 : IN std_logic; + PORT2_CONVSTART : OUT std_logic; + PORT2_SDO : IN std_logic; + PORT2_SCLK : OUT std_logic; + PORT2_MIX2_EN : OUT std_logic; + PORT2_MIX1_EN : OUT std_logic; + PORT1_CONVSTART : OUT std_logic; + PORT1_SDO : IN std_logic; + PORT1_SCLK : OUT std_logic; + PORT1_MIX2_EN : OUT std_logic; + PORT1_MIX1_EN : OUT std_logic; + LO1_MUX : IN std_logic; + LO1_RF_EN : OUT std_logic; + LO1_LD : IN std_logic; + LO1_CLK : OUT std_logic; + LO1_MOSI : OUT std_logic; + LO1_LE : OUT std_logic; + LO1_CE : OUT std_logic; + LEDS : OUT std_logic_vector(7 downto 0); + REF_MIX2_EN : OUT std_logic; + REF_MIX1_EN : OUT std_logic; + ATTENUATION : OUT std_logic_vector(6 downto 0); + AMP_PWDN : OUT std_logic; + PORT1_SELECT : OUT std_logic; + PORT2_SELECT : OUT std_logic; + PORT_SELECT1 : OUT std_logic; + PORT_SELECT2 : OUT std_logic; + BAND_SELECT_HIGH : OUT std_logic; + BAND_SELECT_LOW : OUT std_logic; + FILT_OUT_C1 : OUT std_logic; + FILT_OUT_C2 : OUT std_logic; + FILT_IN_C1 : OUT std_logic; + FILT_IN_C2 : OUT std_logic; + SOURCE_RF_EN : OUT std_logic; + SOURCE_LD : IN std_logic; + SOURCE_MUX : IN std_logic; + SOURCE_CLK : OUT std_logic; + SOURCE_MOSI : OUT std_logic; + SOURCE_LE : OUT std_logic; + SOURCE_CE : OUT std_logic; + REF_CONVSTART : OUT std_logic; + REF_SDO : IN std_logic; + REF_SCLK : OUT std_logic + ); + END COMPONENT; + + + --Inputs + signal CLK : std_logic := '0'; + signal RESET : std_logic := '0'; + signal MCU_MOSI : std_logic := '0'; + signal MCU_NSS : std_logic := '1'; + signal MCU_SCK : std_logic := '0'; + signal MCU_AUX1 : std_logic := '0'; + signal MCU_AUX2 : std_logic := '0'; + signal MCU_AUX3 : std_logic := '1'; + signal PORT2_SDO : std_logic := '0'; + signal PORT1_SDO : std_logic := '0'; + signal LO1_MUX : std_logic := '0'; + signal LO1_LD : std_logic := '1'; + signal SOURCE_LD : std_logic := '1'; + signal SOURCE_MUX : std_logic := '0'; + signal REF_SDO : std_logic := '0'; + + --Outputs + signal MCU_INTR : std_logic; + signal MCU_MISO : std_logic; + signal PORT2_CONVSTART : std_logic; + signal PORT2_SCLK : std_logic; + signal PORT2_MIX2_EN : std_logic; + signal PORT2_MIX1_EN : std_logic; + signal PORT1_CONVSTART : std_logic; + signal PORT1_SCLK : std_logic; + signal PORT1_MIX2_EN : std_logic; + signal PORT1_MIX1_EN : std_logic; + signal LO1_RF_EN : std_logic; + signal LO1_CLK : std_logic; + signal LO1_MOSI : std_logic; + signal LO1_LE : std_logic; + signal LO1_CE : std_logic; + signal LEDS : std_logic_vector(7 downto 0); + signal REF_MIX2_EN : std_logic; + signal REF_MIX1_EN : std_logic; + signal ATTENUATION : std_logic_vector(6 downto 0); + signal AMP_PWDN : std_logic; + signal PORT1_SELECT : std_logic; + signal PORT2_SELECT : std_logic; + signal PORT_SELECT1 : std_logic; + signal PORT_SELECT2 : std_logic; + signal BAND_SELECT_HIGH : std_logic; + signal BAND_SELECT_LOW : std_logic; + signal FILT_OUT_C1 : std_logic; + signal FILT_OUT_C2 : std_logic; + signal FILT_IN_C1 : std_logic; + signal FILT_IN_C2 : std_logic; + signal SOURCE_RF_EN : std_logic; + signal SOURCE_CLK : std_logic; + signal SOURCE_MOSI : std_logic; + signal SOURCE_LE : std_logic; + signal SOURCE_CE : std_logic; + signal REF_CONVSTART : std_logic; + signal REF_SCLK : std_logic; + + signal data_signal : std_logic_vector(15 downto 0); + + -- Clock period definitions + constant CLK_period : time := 62.5 ns; + constant SPI_CLK_period : time := 50 ns; + + constant center_freq : std_logic_vector (32 downto 0) := std_logic_vector(to_unsigned(129055507, 33)); + constant deviation_freq : std_logic_vector (25 downto 0) := std_logic_vector(to_unsigned(25811102, 26)); + constant minimum_vco_freq : std_logic_vector (31 downto 0) := "11100110110001001110110001001111"; + +BEGIN + + -- Instantiate the Unit Under Test (UUT) + uut: top PORT MAP ( + CLK => CLK, + RESET => RESET, + MCU_MOSI => MCU_MOSI, + MCU_NSS => MCU_NSS, + MCU_INTR => MCU_INTR, + MCU_SCK => MCU_SCK, + MCU_MISO => MCU_MISO, + MCU_AUX1 => MCU_AUX1, + MCU_AUX2 => MCU_AUX2, + MCU_AUX3 => MCU_AUX3, + PORT2_CONVSTART => PORT2_CONVSTART, + PORT2_SDO => PORT2_SDO, + PORT2_SCLK => PORT2_SCLK, + PORT2_MIX2_EN => PORT2_MIX2_EN, + PORT2_MIX1_EN => PORT2_MIX1_EN, + PORT1_CONVSTART => PORT1_CONVSTART, + PORT1_SDO => PORT1_SDO, + PORT1_SCLK => PORT1_SCLK, + PORT1_MIX2_EN => PORT1_MIX2_EN, + PORT1_MIX1_EN => PORT1_MIX1_EN, + LO1_MUX => LO1_MUX, + LO1_RF_EN => LO1_RF_EN, + LO1_LD => LO1_LD, + LO1_CLK => LO1_CLK, + LO1_MOSI => LO1_MOSI, + LO1_LE => LO1_LE, + LO1_CE => LO1_CE, + LEDS => LEDS, + REF_MIX2_EN => REF_MIX2_EN, + REF_MIX1_EN => REF_MIX1_EN, + ATTENUATION => ATTENUATION, + AMP_PWDN => AMP_PWDN, + PORT1_SELECT => PORT1_SELECT, + PORT2_SELECT => PORT2_SELECT, + PORT_SELECT1 => PORT_SELECT1, + PORT_SELECT2 => PORT_SELECT2, + BAND_SELECT_HIGH => BAND_SELECT_HIGH, + BAND_SELECT_LOW => BAND_SELECT_LOW, + FILT_OUT_C1 => FILT_OUT_C1, + FILT_OUT_C2 => FILT_OUT_C2, + FILT_IN_C1 => FILT_IN_C1, + FILT_IN_C2 => FILT_IN_C2, + SOURCE_RF_EN => SOURCE_RF_EN, + SOURCE_LD => SOURCE_LD, + SOURCE_MUX => SOURCE_MUX, + SOURCE_CLK => SOURCE_CLK, + SOURCE_MOSI => SOURCE_MOSI, + SOURCE_LE => SOURCE_LE, + SOURCE_CE => SOURCE_CE, + REF_CONVSTART => REF_CONVSTART, + REF_SDO => REF_SDO, + REF_SCLK => REF_SCLK + ); + + -- Clock process definitions + CLK_process :process + begin + CLK <= '0'; + wait for CLK_period/2; + CLK <= '1'; + wait for CLK_period/2; + end process; + + -- Stimulus process + stim_proc: process + procedure SPI(data : std_logic_vector(15 downto 0)) is + begin + MCU_MOSI <= data(15); + data_signal <= data(14 downto 0) & "0"; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + MCU_MOSI <= data_signal(15); + data_signal <= data_signal(14 downto 0) & '0'; + wait for SPI_CLK_period/2; + MCU_SCK <= '1'; + wait for SPI_CLK_period/2; + MCU_SCK <= '0'; + end procedure SPI; + begin + RESET <= '1'; + -- hold reset state for 100 ns. + wait for 1000 ns; + + MCU_AUX3 <= '1'; -- stop modulation + RESET <= '0'; + + wait for CLK_period*10; + + -- insert stimulus here + -- configure VCO table (only use first four entries) + -- VCO 0 is good up to 3GHz + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("0000000000000000"); + SPI(std_logic_vector(to_unsigned(29538, 16))); + MCU_NSS <= '1'; + -- VCO 1 is good up to 4GHz + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("0000000000000001"); + SPI(std_logic_vector(to_unsigned(39385, 16))); + MCU_NSS <= '1'; + -- VCO 2 is good up to 5GHz + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("0000000000000010"); + SPI(std_logic_vector(to_unsigned(49231, 16))); + MCU_NSS <= '1'; + -- VCO 3 is good up to 6GHz + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("0000000000000011"); + SPI(std_logic_vector(to_unsigned(59077, 16))); + MCU_NSS <= '1'; + + -- configure modulation + -- using FM/AM combination: + -- center 100 GHz, 20 MHz deviation + -- -3dB base attenuation, 100% depth + + -- set band/port/filter/base attenuation, enable PLL/AMP + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000000001"); + SPI("1111000110000110"); + MCU_NSS <= '1'; + + -- set AM depth, enable modulation + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000000010"); + SPI("0000000011111111"); + MCU_NSS <= '1'; + + -- set 20kHz modulation rate + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000000011"); + SPI(std_logic_vector(to_unsigned(26214, 16))); + MCU_NSS <= '1'; + + -- set center frequency + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000000100"); + SPI(center_freq(15 downto 0)); + MCU_NSS <= '1'; + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000000101"); + SPI(center_freq(31 downto 16)); + MCU_NSS <= '1'; + -- set deviation frequency + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000000110"); + SPI(deviation_freq(15 downto 0)); + MCU_NSS <= '1'; + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000000111"); + SPI(center_freq(32) & "00000" & center_freq(25 downto 16)); + MCU_NSS <= '1'; + + -- set minimum VCO frequency to 3GHz + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000001000"); + SPI(minimum_vco_freq(15 downto 0)); + MCU_NSS <= '1'; + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000001001"); + SPI(minimum_vco_freq(31 downto 16)); + MCU_NSS <= '1'; + + -- set FIFO threshold to 100 + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("1000000000001010"); + SPI(std_logic_vector(to_unsigned(100, 16))); + MCU_NSS <= '1'; + + wait for CLK_period*10; + MCU_NSS <= '0'; + SPI("0010000000000000"); + for i in 0 to 63 loop + -- write sample FIFO + wait for CLK_period*10; + SPI(std_logic_vector(to_unsigned(i*4, 8)) & std_logic_vector(to_unsigned(i*4+2, 8))); + end loop; + MCU_NSS <= '0'; + + wait for CLK_period*10; + -- start the modulation + MCU_AUX3 <= '0'; + + wait; + end process; + +END; diff --git a/FPGA/Generator/Test_PLL.vhd b/FPGA/Generator/Test_PLL.vhd index 642f15a..23f2252 100644 --- a/FPGA/Generator/Test_PLL.vhd +++ b/FPGA/Generator/Test_PLL.vhd @@ -58,7 +58,7 @@ ARCHITECTURE behavior OF Test_PLL IS signal LOCKED : std_logic; -- Clock period definitions - constant CLK_IN1_period : time := 20 ns; + constant CLK_IN1_period : time := 62.5 ns; BEGIN @@ -86,7 +86,7 @@ BEGIN begin -- hold reset state for 100 ns. RESET <= '1'; - wait for 100 ns; + wait for 1000 ns; RESET <= '0'; wait for CLK_IN1_period*10; diff --git a/FPGA/Generator/ipcore_dir/VCO_Mem.xise b/FPGA/Generator/ipcore_dir/VCO_Mem.xise index b9f453c..fd7a04d 100644 --- a/FPGA/Generator/ipcore_dir/VCO_Mem.xise +++ b/FPGA/Generator/ipcore_dir/VCO_Mem.xise @@ -20,7 +20,7 @@ - +