From 802a36162a7a5452ad1b276399087df11b46ccd1 Mon Sep 17 00:00:00 2001 From: "henryk@ploetzli.ch" Date: Fri, 28 Aug 2009 21:54:47 +0000 Subject: [PATCH] New FPGA code for bidirectional LF emulation --- fpga/fpga.bit | Bin 42172 -> 42172 bytes fpga/fpga.v | 2 +- fpga/lo_simulate.v | 53 +++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/fpga/fpga.bit b/fpga/fpga.bit index d3a418089f1e52de233b83eec20819cbef352b10..503f041fb85c92101a5a0ae945b9d228b73ee4d0 100644 GIT binary patch literal 42172 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 literal 42172 zcmZSJ4~}pIf==sDSCOyDGW&rTt>yl24#hY1_lht4BSQr2A28? z7Wzi!3@HqpMg~?!23E$V45-#AkrYa~d!xAoCdw7#tV^7*vuOgajCH1C|D`91&_1nZYV?5Do{x5=>wc7Xh^k zmo!M6WdVp}5CW4p2$-93NP~r0Hh`#m0t^WZ5)5n%j14fx0)`xhC0mu`U7_$glhPrN9Zd`jyO}f^I5sdDuq1%&Vi0}9@Z*G10e=JYVTMx&j1KV1 zaH}?)W-x2u+2Aa|QUFr(fN>4OKL+~){U@2fF#Kb&Kfr&0`HRDU2Kxs756nLpz~(pz ztYLV4(2kL33iDfrUkr8=`IiYlWV*~?)Zk;lEx-cy`w2$71I>YYTX?205*y4v0A(96St<7;M`31%(e7eqt~=z-h$% zhUKt`K?AP=voIv#IPmUK_|ItHz<+_cK=40<{SoF5%s(973)nXBePF)81oqbo);A0{ z80;MQ7cjqIIKg0b!hZs@YQt>}vk5$#nzb0f;o~8=r=g8O_W*Z6zzv2a42p-i6POGf zzB}xl!coE{!~!5aMy%n?kV7}^>XA8=bRi7`xWSh|Aa7n1=4ID9-r&M-7P z=yY_qC>>&0%%E_HTc=5ZVKakXgN6Z<5G3AT2zD^sQ?Tvif5QBO;n)JJ2L5;4S_-!q zwm0xBV77wT<-zcf;Rl1A0DlwnBZnUj`vmw~m>)3wV6tQ2Z(zQ}08T#~0#6uzcGv~* zOk`GJILTo3qF;tthsBY>&VfgOnF(T714|l1XNaBy?;I``hMNjX3Ep#51cnff`Ff3G1@Zk{SVg?r@3_ExqF}z@~W8iCGS^x^?2JQ}K1*R7TJGgk7nDv;! zcFmA|&hWND-huZ9^A(1#3~~<4SA?G^+%&NF;16Sd#t!zE1nU=ulML1l{1=$NFnnY% zci^AE{Dk2ogOLNz1ZFl!d|3!QVCZ5{V&HCIdcm-RMTwESf#Cr|2a^(mMgtQc#P1xe zM;ICzG#t1Mn2s>)WKePN7GOHY(8!?RC?UYq#0ZXe3DGqSjSNZ$xHm98VX$OSa^RjO z1k$DCz%hZT4H6d%M3yj}oS+rNKacsT!$%J@C;kb-Pnb?JY;y3Kz`X#Hzcd(@F#Kk) zbK;-G{DkB80Xql&4a`p%elplN@Cz_|LGqV|zygOK3g8%gU~q!LN|?WeS%KjMgAoHy z1M?{sP_|&uV3B0lbwGau_Y4`>uHF+lQHg2)ku#txkXj%iHn4owUS4cw+oJq)uM798N%z{LrP_Z6aR7)~|V zJm6_zUchj|!Nh@o53{Y)d4|mgcs?*g?P_3n1Ik}h^rtw#Wci_B=fS^)`3=KwM!N(2 z8<-zJ@)x7P2Zp~b_6K+lFdHcRU10CP@u&F@!+8cnkU0!4;I!JvlE$%Pf*J$Y3@&Yk zoeg>qIJPjoVd!R1I>@nsNx=b}<{Mbk7R=C9ZaeY_h+nL z!100!QGYRPWYpl0GGJ%`XEg5(OdJi(3=5h#mM|$n^49^;B@DY6lo+J8F+E`DWLf3Z zy@88`VK#$SBgX<&NS=};J0KpIdq!A2vi=z>#xlU|CMxG zcz-b7Vfr$`-h=-G^D~C$40a9t3z&aG@|T0a8peZ;Rt$X`m~|LVDi{UvY;sm%IL%_# zz_S2ef3d1?bRSS+=-9xd!_axatcZ6DlL|vW!{P>x1ZH^s<>S!gsldP>z|`Qh=zzik z4ihI9ro{|O4IBzg7O?y!#L(8DpvZZHjfrVlN6He;3IREWaT|8h#d_) zLd*>Z9y2Jk@CY!oG`(gp=-^Rc7J}q22iYl1|6J@Bumx~`aJVmEzl6Df`wzo?2Ky%d zhs+Zo`D+F16NXcab{sq#)O8qsfr7#HG!d>L6=Dblx4OtENI{W zG5R$XIy4l8;PuxwhUtwu3nYFp$#HCMP+Y(n!DPoUy+LsSM+Q>?B!78`9C2uN&}rb< z$i#bKGsA)gP6H-hhsi7oAioDe^4AN|8BDhrY#Vr9aBDOCV%gM?yMWn>=@x@=qt65H zDo9@TV0ggrgU61Mzk&Gx!v}}G415jT4-6hK>|^L}V4eiYUmOBYm`*#`Iq*#Y*Iz~{ zJhPaeIh(V20ISte_fA z&%tW~lL}KW!(u0n2~0;AIvJL^a0ocLLGu?23qvD=UI2#(lL%w0gQA0k0Mk*Xi3UrY zID}yNYX@%v!-)nx1-=F@C8iS%$_hRW%#RpOXqYkdG&AQx^4AR6D-1s!>!%I-fKbiR%B!7YGue%I(89Y;%&6>_O7-#TYVE)c@lEs)sX96=Dq`m;v zUppA|7&tnZ6a>0M& zw-}TdG!`&%LE=J#)r(gW&`I3g&AL#~*F{ z$z#i`1+GpRIAqs=ipnEw28AM>q?Z?m10oP&~p>zy+d|=jw*ww)Bw&8cG*n$2{ zplZv(s)270^BaZ73^oV&H*mx2uOAF&80-)5eqc6XINxA=fDgp*XW0Ef=L0jm{>oEW z(W7^O^8*tbLwkeS1`Z1+6OL{syMr7XwBhxa9z$1y-T{scO!*Am32FJO!(7azkvS-vkk+U24e;O8_e+f>jgvS0lk#&6--(VI~w#Ja)S!|ZYHGz-a8QW z*NcXQ4jK&H3SvAA8yIvNxHmBIfYRXsZUcDzCAflNWrJP<_ZlWGh8+%iEnst+9F!h$ z!~0(jj4zp9p0d*L?_kzd_~D?Zz;D29!*JTc=!5?TZg~B*BLLI~@jt)}_MjvGPv$!e z{}=2(!2b*0|6*9_@YBJFgQtO6hvCElI~M*8%x@TeIv7pjnUH(|+W%r@Vz6LPy5Paj zoWyXWL63oZ1JfT+4SPw$i0Km~e?4IJ65Pn35Wt|qsWzuquBW-wCV;ZRm- z_@Q9e!@q%f4Z|x?N-#jwUwatZSri#K9GFBHws7bk;{E_?uQKQ!;3#041WEIt{@1c* z#RSP0O>qoc8gwxUmNoRh94Y| zMmvbX`$>0QHb1|tXlS<;i>YI^dZR%5>x?*-;GNdAJp#IlckeUh1 zY78eG3<7vQAoss^FzGR9EO2_j(#4?1z|GaA)YP$Hu>xxUYa*xw5MTmzsdOB;gP24Y zv@$3aPhq59lRuOkjGV&v@$4yMA#tlzCiSO!%YUe0-h<1Pn=FN z+7Mw9_Ya+PYW#_>^1H=Gz#O5ICuZ0aK7|a;>o0y@U z>jvfoh93;}kp36A|E|Gm$<%j%xq7cgmo7!AD-5dAMdhY1fBf2N)U{6cV&7m^dK$YlY}Ch93%cANUP8^%;IL=!x)bQh&pB*kRKIz8zdz z5W5-}9yt79u)Dy&rTN8y-wbvP;Ii(wf?WsiRz&~n3(pq;a|T{eQ2;Jm4lw^<_{U)E z!1F*ER(~-hGwe8^puo`~oUE`LlnxIt{b1M!N@Es?{+F8K4hFR(&K*q47{F>ko&B8* ziyAn#A?hy%h7Ak~4jc=ZPB3g{$Z3QQ8YnerY~X_Rzj#5Z#f*V>1M?Dw-;kl02Mj+z z;}RR-^_T1iQ2oWge}K6F)a`2IKfnwUv31}-0PlaXeq%VpV64*PA$+IfPJ`hBKF|={ z83ua>oeRt#AnmaRfd>mZnv^^_W-$Hd=xk7G;Ml?RilL)HPl00w(*sC2cd#C4XcBmI zfI~p(jKf3*1qUtzrV|Ve3_1)P0#1)0?ZX423lzFKloD1A0TnzAo!NyM1#=_o*BY#I4&|6Y4B}ue#3Mkz(#~;D)R+M{(8W;o9hdUy(9Mt z=067iCxC|y|1kV$uv6fl0k6LVRxq4OusgsriCM?tWP=@p&L-wF3O^i-1bC(}!^RI; zH4bzg&~f3I(;Uap$)E>nKD`HxlnV4tb%OW5(is{AbR1R)fQoJgJqHdGwi67S7p!=p zp}+<2f7x-gP1JqD5yce8(0)Kafun-y7Q^-?%}1OWi19-frUMLi2Xq*ed0HA-Y*=^< zm`^Z#=CC+{-2a-x@Q=~{0RJWCKMa2v?HfVEp$`8A%Mb9sM6SO+Fq$3UnZT^$@RJEV zw)2MJbc4}Bo)w7tYYxLUmW2m+1DNJ0Y-iVnWPDKny+eTs-v64%u(x6P2akw0xsI(3 zx(eJ?O!pYt8x$XSAoah_Ic!Q$y5On8*2Az7R(FHU;ZSf2hQ#{|(H#u?7|a*&yk*wl z_~&3hgMR_jOQur{n;LW$aKr1b2OK{f?3npmKxJKw9TTV{rtrhTPJsUiqW|@b;U|Mp z2G0cHc8-$=>_Ee7PZ(}8*rf1GVm<`13)KJG*s!R8Lxf3%rSpLfXxQ-ifldd#gsv$} z51`|RtSSsU6_f%vCMYcdm*E^!n4U1qZP0h(xWIM{R)4WGfZ8M+0!%Cn6B%?IIE0vv zFtjr0I&c**9fH+g2@Jm)j2LtlFfU>{!C=S0)5QFM;TDK-fcYJ?{*wL1u-Cyh!9Rfc zDZ^U^`y~E}%tsl1I@ks9PeJZ~onl22>ObRbLCNQxu>}*i*;s8}-8yQp%a0oCR zg5)m=(WOkC2?`D!6Btw&b~bfG|sGLuMl!pvfputb1{@0I&O$t0M%nzDC!-l#I%nuq) za2P4@G&rAvv=22{trYe#C^vBFF#TX?Vo+@0SjO~%p=*I+1IJUO`io&RsK;T%bbz5r zU_k??9MeIDh9=NhlhP?z{UyP$pF#NmR|wN3hF*|40Zf+|+8GiLWF)}G4_9!=F??&- zsK8Ufe2C#_gYg1hkLFWO2Zan5@OU8VuLXi181^vmPh)<;^2^b#fqxS78;;+gfy4&b z_#p%9H;yAsh7Wx1Fl}P^cf=Ufo;PDS*HG)C^8!(S%}8itP&~vN$Q;nHRbgQlcOlah zhPH&t6C4SM{?`A5_6PVJm|sHLhX)wH3H)U=e#qy+ zY{c-d!Cry?1oJaf#C$DgqRsjdJMZ8)E;o|U^>IFi_z==2fY7v zg7pN$P6n+58WX&FKy8VG+y+c%7&b8|9pErvgO4AsV%XWJ1uAydFzjMbJHfe0=ncrg z3mqGr;NyqS8-5(vb%H~J8PwUY17(@F3cnT@ec;)_4DWw!;rPd4;>2^%xq#t6WBmgD z7tDV^J(mLhpWN{IucZvX1B@>CHE|~}{08+?7BIhII^|&3z`wy6+W)%2sM4^xVUYt* zPlE!(t^-yL+zXW6I&?GWoZvQSg7?218#Xd1Tu^3Ua%kCfKxcxq0@EpmSqwUtye*WV z{jU{_QVg~eloL2_aLF-j@5oHxj$pdQF>QkG67LE`|BHj+qoBb7eF0`4hR=|xgcAyv z1i*6&@c!2hhQ9*#4r~_~LEf2#=s@oTaQN6A;J4t`VEDyo z^nk~R8#;b?LU0blc2-3P4hJRyhV4wc4BZY)5)9iI7J~X;(E6)^VV=Ui2Big@CzvKN zYzNg}9!ydU`x=xVaQr};|Kix}sUXCWASS@Di9wfx+kr`gVTXW%5eH)aOLP~*w~kE{ zc-JzoKJtsfZUX;OW(`ogZUK)*vo)m51kZo5*fa1S1vj7U8Tb!?Dl#TJ7X1cc`25$i z1t%E{9C&6ht1$drU{}CAf%#d(NhTvu+ZfjWVsPbH>7W$AAt9Xt8lQLIp1|~!snbC# zfO`gW0;2xv=2Uj#n8;UgZgW-gOkpO>#vmT=U`U{#*2>^9Z zK$DUan4c{8s$%QWKLK8UiGt?8tUxnIOF(@zP@H}N)zmIL7vTLbi3bc#3`&gB;Q9;H z?tQ@YfMG|&VhxQ3F6jK12kQ}rwG5gG+!vUpFm7$oJ-{8nbcA7RN1_AA2Kf9J>r$4b z3`!2%7noEW_A=;$!sm&=Mg~Pkr1>w_r%WpkSUGUZ3NLG@WU#9dp96NhQAE!S<`t0o zD}!-az)gXD4*WB`LDOD#3H%e8pJ@D4uq)u7!|V+mKV(?QaL3^@gZ}~U0#G9v)RzIZ zpN&ENFD_X9WzoRpw5Wl5fsh8nt_6Ax-b)fNL1lrb00VsdP=cY4NwI}>~>I^ zpuxeU$*{{oZvyuMCeSFqK4?bu0j&N~Q`pF`>LABPr!@k*8T1ZxZ%})auoIMMcQ8GG z#03Wn3uqMU0LKQW4p3cifZ2cnG|&O=TtnN347@1}KN)r%-~kOEy#_}LXiglIi8e4F zfaI?QvR^pL75G0e+c?~B zFh0P0gSh~bo*M+-uy8i$J>Z|=Vpnfyh9nzV?46VOTFxoKeWY9an%D}|d z(tV)G0NlCmWYB-Wv4R0!f8_`mJL)W8klofJ?Tiok8&cM+wsaj2Hga252kMltqqC`nX8227^ijQJm9Ee`T&`~0IlEHcudEETZ`!kLwAD498OR> zs-xlE0S*hMOOSrS3&9l(|2XU?_%CSs#c(b`VFUjH<_w`IN4tic1~zp^;1y6(5!fjKT9zQB!q|C0seogX(+fuMJdp&b|HT0wLsMhf$)M!O zJ%MWpM<<6;0LLVzbC9?IjUR4g(n;VHVPav}=&;}bhX`m=i6H?rsdR`HJodGNHwiQ+ z&fwF)t-$aBG=A8@+{Dxnu!u>g0nz_@F7TJp-obqa;}nL!4f`DU=LkP%_`LwMLV)=h zB&|v?f~o*p2mg!8M;QJxY#{{@;8XW;H&dcd%W1+9?VaeZZ?4Y#dru5qYMn7`L7=gRt!8X%!({G9QJ|YbOFPQLL&~ACT3Xwi$#NB zmxKNSjwei7EPamCLFJ(aM<0W7L&p-PQ&4kQeHb=4XdL1&X5w<5?4faidjr!NhQ$sF z7dQlv*KcfL(ET8h!6YQm&YxrJA8K&OH+<=|e4z7#TZrL$gQbH1 zpT&I*ZyGi$=tMFfLeyVBK)tO8%nwz5GsuCOMsE^+FyuAJH@HK`4;@(ldDKkMe!%;Z z`O|^>O~wy+elXWD+*PoDz;lE70;IpZf^iPRRtD1>9LY=2Fhowy2^Y#dq{bQw4b znO;Hi7X!l_78?d-2G0bhi%X_6q&jdIFvT!Tlh6eXBp!gI`2>+O3>zI(8aOzZ4sbLd zNGael5Yl04V$eIl#lmy}lD}4n?qT?Gz~BJyKBh-3w-c5Ha(v*fVYu92cR*(g^CO5| z;Po4gb_e(uF+ULa?O-JU=`TCjIq)uo*Ixm5Sk7?RAL9MM{Hb9-hjkMF2W}hC$QuLC zpJr(N)yR^=(BYtWf#ZSGBZl1zl-$7cI~@*64ICXzFJSdo4nrr0-T_Wf)wV%l6=*?` z4nqfz8fZrB0i-*`hkk)T3 z0?k1;fR`94G;l0nVqn_9puou~gqZ(Y6VL@3f?L1<&Ylb$4NMA(9UNeD;Qg;R46hjM z95_JhE)Fvo9N;lvwq&>yVC=wqg%RHW+6U@wG4x;H{=)Q^0aP7xzhL;$VDG^{3DN&r zuW$;qdTjx-2E!>(M|EMdCc^~>BL^K3#Q32eLzjb&00#>bBf|*?B>|2OCM{680h;fI zk00hTH8JKeatJW>z@}DJ7@8FqHF7ARtUo-GTfkAnG@YUKfMNkh1d|w3`vL{fT8Iuv znd!ly>u^ZHhCv5ZN?l^u(4eEh&9dMyV?jrc0`nwDd^yPOVfY7%riaV{ponAO_hkOU z@LuJA1OH3r0L1#kUkyeHJv*3n7(O=`Jm9eaPwW~Ukl#;PoVY3z)N-4l!<;kh4JB3X;FT z>o-8tc?UrAUkr8(oDIwkOg|WGKpine|I6VfXgG8N^ApCOpk~+v=4VWxb$U7zxMBS- zmK4yCU;_6Hre~o3R|5AOre_SD3X2?gCm`m(R2XJ5=p}I9VEe|fw?RLF`wr6+hh7F| z2aXGf{ue7lBedHE?|-dm)l&503~FLx1sANK^&2-pQwa^sprJfFkW(KXIH6+1p>v2? zj}g2+YKH7LhK~$34*mk*E)1x6XMQH|lhMwLZ&LGfX#K_dh2boyyFG!Kg#on8k4J#n zY{Axm7|7F6^%b*PMvWh?_!y-`s3o-x2aFW5!!G8ib z3&TNBhZnS9<{_h*gYE>*1c;k87?(o2iW8WhFoEJie*!afAqUd>jYXjHhd~DvKA`bc z{sYVk4WNNUp9bzOXg$bkA<)I3*U+H=8a4z?94atbGV}>3H*h>atl!9DXadbLFff6p zesmbP1-Lkv8W|KCH58b-Am!l#Mp2e_Cfx*%0H!P8VP5V4CJu&Hj)ff@NlYss`D+D- z71Oas+l4$C%(s}1HP|lT&tR5fIM`^oLFNtfDoFm~kX^#_n+3co58nU!!1$BFW`X_+ zW+%w}GHCwm*aTw*{}axi82&WagO&mOV>;8Yc>xd7_~BHhb_P=y?*OJN4qF*?UAP07 z?sT*=C^v9C6jFkuc?O0p41Ej_LBobO7`8F!HgIP!-Qk=npxDBZ!sGy{zZ67{a5RIK z^_mEs0ryk56_}2&Ok`4M;8@7y0js|jI2>Y7f-czwCCCZPZy0VeY;M$f!wsElYhZW^ znnH5mpTYbL)Hq4tpTT^V>7m0u(0aB74B$2-qrex2e+-)&_#ZTbroHSN_(5wS?lKrR z@H{}Q-$(=Zo47YHy#b949^hWU^o61G0jMx%PJq>4Y7Dy=KucsnLj<61*94}wjI$e- zHF7LqQ-H(;sQ;+a3~h7?K-M2NXecm2$2UOzFVONc@H*;W40<4^zG1k{WYo~J z05N`eh2cM>hX`7BXn%nJ0rM4>?+o^h{14#sUyOg6jx;DP@i`!D!fO=Pgtu+iC4N4op^IzQxdIvZrA=V$hZ#djw z^+0b4^ID}t4VxbDHZdP?xZz<9n(=|xUyB+3GngOHedS!k^pDZLf&UisH&9|bpg#jq zfAuh&R5A+S*}}}j@`_>C1m1>b@G4VKj}<=urPI*apy0q^!=NA1z82U?}9ous~R&fs<3{z=RDRU^m0(zoZ%3JC#!`{xXFXwOvqMs*#~| zi(y+s?gNbo#QYZn(;-lCVd9+P@It_%fmeX}h{Hz)y8}D|-0<~>8$j{pz+b?#STLPc*vz1JfO{vr|0TLh;TeN%2VY9FHq*U1h6{KXG{0o{ zbilf%e?ZxWY|!p#Mf zKodrwo{OD>&n(3H`4ono3`!0i^O)4RK+7#Swm7|I*e#*w0BTUd#}6BJIw(1CO<-Em zG?PKgQDb7$Q&2A()Fy$ipXXuN$f5vR8Pdwo?6AUt1G10y2d>zcI z7;Z4^0u76S#>eaoczU?up}3^_@4}RRr)uYk=7rcg-m;u z2>fL+22C@iFnnaNOXR`JCm26*099oCLWuPn z3s``iJfN|Oi^b_EXyy3f0$&vVacn-scaYhD;Vz>-1K$VG zL|B8}LH-M{@xw-zY>v%>N(Z?1aj8w{JgFDp(bDunVdn(>1Kd-X;Nyo%p!(|o#{?%O zju{PlGq@(OJ#heyVu94a>MsWH%#qdvCl-MQ&`=cv+X2wH=mBm4*!(gBZvw+_CZhv7 zplL5qLy-@()c*%~AW<1Ue)xmoJA?g!^aAfM0)H4l%QhInyHU%8m$$0 zBADYCjyD)S;Hh9XX*knh4r*}1>#uh%-3&?!p!L0=?g=Bu1SVC7m7pCf6A}w}-3QJ+FmB*j!2A-lxdyb&!Gh&qf^mb+Bc%F^>4(BTM(FY( z@cb9JE@0wsX@>W|jxd~TF-qW@8Hd1I>2DW;NRe^zyX?+;BjD9V)?;h$HCvk3}3%- z7qq7aG)4Q2G(m%dTY!lVw0`~(hXrUc9*4pK4pl_` z#lYCcpvcG_!xYQV&Y&p3;ld=Ku!TqQ2}cED{!5PGDQMWRlG%<4G>)Y6gIkW}e`E0j zp9*I9{MQnOpImkf{0l(U7N{@N!2Cb}RA%OHK+Jz#0~LcQKDU_vf!3Kn;QzsG$8fyC z_yPY<<^z!S;R?Yi4eg+wQ~=W*5QBl+fyscOg+cQGcX1PZ{BW-#XhnTS8N*$URtLoi z+<{Co4t*2Ai~phHhYBJ`1ezTb8W=!L{Z0lZ2ks?J3=EAN8dtbQ7*0U?1uI0CF`aPQ z)WEQU=?&XyrcIz`s$SD+pX3MpbA+LGf%;#+0_+<2momR&_7i; zX3St<;$UcE(K*0vfLMQ+!*GJhs6oDg`2Yhbqwz3+6O!El{t3>o{a> z+0YD||62?I|&U4~$=x9;i!qLU_LSdJW{sG<%Oz`j85=uV20OUJq+!PiVhqF&OQQd44NG)3Ye}ivGi>~jA(f%?rcxsBgys~Mn+MDS zIJOAAW7y52=fEM-1l#|`sG_)*DcMEhf|3ctS_!2P&|-3f-2!?J92*hihb#=O42ce! z0ZcIrTOCv!I0TfAfEG#xte61HU!eZii-t`KJ{{aj3~xXS?LY(dzZh&3dK#Ev{V&O< z3_Bg|0=Pw(pR(LMU?0E^8fW{+WLMyS0lt2N^;uVI$Mz(i8_Z@6XII)d^h^NHh=CVa z!sovpGJr=58<`ZCIvBJVJQ|!pgO+*>TnmKY>kp4IG%~0-bObKnqQYGGIi zT0AMBgs8t5I+>I_JSGU~Fmy6%IdE)Zdg@@wkmJyWRDV5TILWXL)C~mf6Ss5Fna8}0 z;pGWC2cId<@cL^FC}le63veG1_{m{+fPaSaGlri6;Ki=+`l~_VgaT;WmoTV)w}T8M z{s^#R=xKq^f3a#Z^c`H(;QfNRilMJVVFkw$rk4S`81x!=S0UCP`Y<;)s2t#CXyR4s zX3)9GVZ?NXaWkmVE&-eW0`325cUyRX+l46>)G#~1QNVVGVH<<)iOvGV`a?d3;|-<> z{1VK341EoIpYUWbUsCwqVgErV6S4kq4QN-d13PFd%`b+15&R39UNHQ0vAfleRDb;k z?H+ofcjq?h0Ixy zatyqGSzw_!2W=a1)~3Tmf<&xodf?C=7$Ww5^MrM zjgyXFpqV~Urv^HH_=oAVpaE#rs|m+BhTR|dLH#e#DG;D>QCR(z%h24QYjk6#z2FgwxBK*v?2?D*I$f(7|t+ke!yR(EYomY!LWg+pxL(J4}&2CPXKcPq`h%K z;A&In0i_4rJDKbl`WvhlaQ$G?Y1q+Vrob^HNdYpxdV=+=LbHGZ!)yfxUY2GNg%%D2 zCZ2!|3auHpIx(=8nJO127*I<#Ck zWSEN}?ZXGGDIE*v|P ziX3G3fld(tEe!&X_k#VU@K#`V3;zq|3vA$Z1uIyeHhDK#9phJE=21AEVARHA(5wea z;RkvYn3*8qb3(AkshvUb1a|?KEYo6-h6arSE}0hay7vU8Ns#%k28L-2%^jLAxILKU z8rl~quHdL-;%fk{pXUIr`3KwOA@YW)SwZ0dx6C0Q(Bkce4g)40uI32~4rnMa&4RQK zUx=7@yH;ds$gB=5Z2eT5xizXulo(@H2haVb7Tt0`o_1GcvU%cNL{yOM6 z@Lys6%5>Ag47_aKL6QO7VR;8x-#df#d&61KxG`w{>n4aHz?{PHcZEp;?+s=?NPJlc zJnHCRPy$Z}3v{q(F?1XNEu?2qV&HFJYJ=o257whiji9nc0NkYl_rE~nhbjS_B3wd{ zaFzg#&od}FL`(pW8*3lnxWJ?W9&zQKz|L@uLF1XA z`7dq_h&dUIElM93fPBFXn)U*9ft%leHZmWOpU`{@5*MKL8!s4&7?6F9mUG+6z)7B?t- z;ACK8;FtiO2y^05*qoqnfy0EU2|EAfD9ga;pxnUez-Pm_oB=!p7r`){LGi$<1SSti zK3&0K$F#Iz;S*mEW+{ei4Y~_>GML2}K0yYQx*+)rwEplXgWU;!2IeOWH(AU;{mR4! z35I<)_!XEBLFShoLO%)oZ?J#Be}cJ)=}3bqXkf~o<5&Y||FW|LBz#r~PVi`#(DmSU zWRh`c7f?LXk;pU^w7>j1t`jr{GJ)TK`6*~{<^pJg8zi4LFnnjY%3yqezk$() z={!UA0iFlk77S+?j1KS=a5F&auLhQ4P~CKZyMarQp#iiWU;=2+?UBL-tp>#Wmm1fcY)cqA8NiFlc^tbMl_2#OIA3tEFo3EpkiR-W3u{5kO<5Ql7!(d@2{1w9y@A(* z;UiQ{C=eV*N298 z6RaQbdnjIF_}d_ z)?5aV@abSZ#k7b);{Z1U(+P&%EJ+O<224GUiy0Iya2PTf!RoIS3|$?|I=nlWUNdZL zN&*cwu3=ftsB}OAv42_g0mG{Xs|)-cjIS7~6)c2#HgKh}W-(;2ojEPlZCgH4R1ts!4Q+nVX#!R?C_9-OdJQh?-B50UdMn>dsn zau^8lu}osnNzgJd0&R{^IDmA1l<01Te@;eie2bn3D*B&Rbl9KP&&x5gXsz5PKGQGjtN34 z44nas+&Cs7^}mD~9W*XVfVNQWWY7aO6y1bCqjR9Wz=Gg{71aMazyhjMz{`5A7<@XE zl^9O6fGRTh{Fmfcp1;j@iTnYe{dx?h4*XM`pK|F7`Wl%ht>>z42xHA=P=!H*rmWQ zfn$ZzONLt=W(^!mkj4)gCUq&?;5K4A&#)z>RYb#u;WERP1Vs%_lP383d100|M$pJx z(;bHWOzHr&%ML)A-fyUzAaLi_~JHUt3|GEU~b}ixi$^47qe}gS({h^%)|0Med{6Cll zAn~WXgAP3!d=3&3KBjH3==?I#RlmDwkr(V1+))H z6fns!PG{16z#YKE2FYIvBBvOdcoY_Ji!dEw-25QrD2D+X56ff*odetoOcNmSzCv_K z!=VF4C-^sl#ynf>9_Vaf)?vEM0@??}tOkkG28JU{zZ~`*;@<*Ze<*i|-+=io%VQVN z`5TDw!w;Zwwg&JyW}qo`o*m454(AUTKj0}~hOWVDWJzLJ@j%Oha{|+ImfegxA2c>7 z=QMPmP&&Y|fjI**zuds8B+%8Mw19gd(<{c^fqDlxw=(H4bu%cP;MfT7f4ML*EMU-J z;51-506K2&fQCVo4QflyDp!`JOH>2JGoej!5ET_TcJhK91 zebfTk4-8)z>=}4Ld;kA4ftULK5dg2~C}4ge1|Azc!1{~fOM_v8&JAWehWicn3_3@c z4H(Wf+B5J!LYyD<0Mv>*z%hYIg`t~4&wyhZlY&BbgPsESGsOJYA%>j{3LrH)43imj zj&d+Mu{11Z$Z_CqY|?_{uLGhB8g?E~IKVN3NtL6!K`((rAW4T|wSwLu?gl0cNL(<8 zzGL{=V03^-hFO>4wu9XRo+f53fz>T`0{kx!^Iza~4oCPea9?5g&td1#f0O%K)BOg! z6#j?IA0X++L0}2PX#t}HJQIXN(0rx}b6@Eb5|F#K*XJD{_u{Q<+_1x5_~ZOlrL{N*9I zgQ1^cA?TPL0fy}inxJW~D@^TNnhxF$U6UZ;3_5>fdV}I4?jKB2EZZ9x9&pw$onl$r zpt*rt1F`<_1jFn^r3c&wTnY>uJTzW#+Ay70SbRVOv@mHBB!7YSFW+-8YT!>`)@1m_ zVBFNZmib4+Dh2HY{0|WI7x*keM*ha;4-KG2*L)4k2U%ut@G0;kj~{|p8}dwGR%-w) zkmCatGN)DS0{Rj47lR9^ZVHf?!k^C2>7bLqF@@=A(@6%aMDA(G>km5}lma=XFqty+ zJLq|EO=5b+(9Htsks<0YRmMgKg#eBzOrZ>|ZaN;I{mTs#8FW0jMG*b31cnm~n?NTJ zDli>kuv5@m%lz2s1cRLde+Rt&lKlqS8I-_&1HA6b-i3W8^FN1|4Aw6EcVOd(GgzNE z9A+>I@By9cc$&f35j_6|UNn0PzW+<$QA0<=A`OiWE~Z623l@PaWnciED8=2^1Ydu6 zrJ+?r(UT*9Nu;4wLjl}pWZc-O;~*`_#stY<5~3}j={$#yfF==!Rskg^4gn@L!JQ0w z3EUIm>o-Kft2$l4&N%5|l)^KkTb1GG0ni~Ei1iyw8h%a!ub&4kwzqNM2OUiG6SUK9 z2GaTsrV|d^7<3wh6`0O27zyz7FhB4(!2mkt5>bC?F?2DREsy}scXu%)ui#iP={3Wt z1$qtKFSxxR?K%xc(27~_xU#HZ)$!C+BpU41whwtK+ZojPUr`fhi5H#kB8M3o926LsJD8XmIv40LaA+`j2{b$8Jm3%z;(+9@9ir!*Mfq&ofuY8HwxFL3~$f7k%4za|L$VK~QN-yrjV znStRvgHc2O1!g6W^BndMd6vNXUyUpg3_T3G4H6H83>fY+m^E-u3Q|%y&7gO{*MSRm zeiWmMKsRF^s70g$KBAMmgN=ouTS4yxc)^1MsPV_aqQKP1pywbVz@;NFfgy!~n<0sX z4OB04D!}qr1Fws~AqG1J4bZe#Cuo04gR+9)Y0!GM24&dzp(J>;5Hf7|mlZs3{(dvY5waBXf;#=cLRe4Lj!}x0WJe4o`wzv1qN;d#QfJ9j@=A;3%FM>X)vwe z&^q9;fkB61MTZvyH`4sq8oA>i1s|>gpZ~I9*gZjO zD#r?@Hw;D%`UiSGDA|B2XeVx@`7b|)%?=6&I4szXGZ-!4dBJJGw1#0alTH#h()m$x z4*MIl7jRUF-D23%q5FWNl4%~-^cLL&W~BKq9)-;e1`Rxh%|{qMtJ)mmH4yG$yUb*B zgx`P}ssHsqz`n)*qwsHqzYemXV=8MB-V4}Y<^PCSzwwUow1V9No(;@T8-5=#I>fih zS*Phljok!(r1`J8jO`4%4ITwScP4CSP&lDs(A0CNl~MNu%KF2G_7?pGTose9F>Y^A ze8W}A6vxoELU##w1=9SNP&0#$K$ih%O5%aS0S^PFH%!e8I*+&w;PYRiD;Q2S*e}p~ z!2HtT7ssXsz6Ht|Os5#^79g)be8BKSz>b#_l$(CI+6nM8fELm_*omO5KWzBTWaj|d zD(moDz{W)fyw2gI9%zu~5F{@*fcAee=s9)IaC*lA>NoLBU{Yb~X3+b@Jpp?l?-|gD<-gkPeeQdTEhS->p<&!!7KL+*p4x5WYlrs5D;VKXlBs?9f}KIzmdeS z15^|=2tN>b#b~!c2Q(1|UMP;V|LZ8jPc~c7ZptSdh75Lrd{cy!DQCJaR4;kz^KOnT7SsY!Kep1(HB1db%bFr zgR%ohfY1>}kmJ1s*jN}EnRGy_ln=q`uO$q771SL#uCRgno_YtlCNQxufew-a`5n@3 zSs)6kk_-}bK*w(U0p(AL6fWS`$ zy8!+PNc9)PA5i!lVSWHwT*|NpypTh}PJthEelK_oO@mddVH1O1gZBc4*A4p)=r*!~ zD>5g&25zMDd;J(Ta_BH|gKEKz9y*|XQa&8b4WPMxr1>un&@v?M1hzX2+g(88hg>lX z?Toq&+y#jFFFA&-4Ymp3^LxKF*)HI*V6JOA4ywN@kmkP{K&vSGCosMMZ|>vYz`S3}+kc6L?-S|9AM_V3^?ZgWFEw%mMo^JUiy&zpbbjyY1$LnIhwm6ZHy9nz+rVtYaoWKyz-NOp)UF1GHw>V? zuACc`-?032uwmdd0Cm<9z-8S7$oMm(z#GU)X3(yve-n%+@N5va5jf*ue+aRExsfH0 zVRwVx2kt3M8VoxclnOXN^E(|U^c=W1Al4u1H0)B)I{?}m#(SVF2oBLKxum+#v9P zp`$@bp`(N85kn^fxZ$eJ(Q!dZp<@Q3|8<~Y0iy;Z2Lt$gHU$9=MIly(Miz|*4hAkI zNd7t?+Mod5?bXoqgrSpTk&}iEla5Fy$0`91r18U#4sQai59l0q{NQjlz(~cXMVRTr zAqR^To(4q!YY}L-*8%{=Drl;%twFJXqoU~^Xd&VU?g&Kx>kLCPqrwBwR3_-y@DCgYOlKQ58{}NzwnOay zTETRRanlYS1#ZwjyG;!|D?keo57;l@f6@#eKRm$jfys_(eS`1=raugJ68atBK_?q# zAH;D9aefqN{l+E-o(bHb^&6WUbf$2tf$Am){wd7x^&3459~r?X z!yExE^#?Cj^!Pc!&I7srS_G*A8kiLo&agn&AD&^bXX815Sihmwu#Zu15%&Tn3(&E> zp!1`&8@d?y8aP%kor0`;*I@Nw*xaIXfZKwJpP?C49`0h|nb6FrbAZ7Dss3Ww&H+9K zO+;Y|1L$B+E+K{%1|0B*MQ5vHtKE!}A8sCp^{6`(`UuIa&pn1Tfh^dERihv>u2LqD`!v7aVp<{0z;f7(RR0F>ud;^}iSeelYxRFh9WmgXs^04}&oS%Lis7 zmh%k8pvBwp{mY30n;DdjaBpCG-q6pm_&~=2B^^-7e}H=tqW;oS*sY*;fO`|uJBGy! zN(ZHH&XrO!SI{G4Af_Q!T_pc z`5L&v4>o4$8SC0Ik`s+U9{sX-qls_>20Z)Xn!|Sha4F47E75YKjzRollD)NIE z{|$^m<|q0;Fn?kA&1ele3kBZ)TGH?vveoDf!zl(U0iG6S&|z-i z1*q`)OSfS^1789645l|Ms~q?acx-5T!?2%W5y(C8^@qNot%XV4%uG)h8k96RI2agC zHh@lSL+*cxfsSBO;r3*@C$zLdUzx*$=^o?u35uZ6ctrgLIyUM8zX9`Eh64f?3_60& z2N*sx7@+sR!0S?)|FHb`uovL}1DfDt*nbfD{N8sAhZk)6#J7N3hv_t<-Ie~u!ml+> zD{MN@kJSH~!*Jb0v4f$QNrs_SLH8hc0`r`P#Q~rh1jPFJeT>T&B>&-h$7H9_-l+RR zI!fuAL;C`-o8jvZkATwQ0}dM|J%(mRox9wY;Il^*KyeB?e?xRt!z%`(1%7LkEf`LL z7V$0+e(3;Of5?xt|LXxm1gNbJUUmo?Vro$aub&4U+5lfa{{-AN=AQyOwpTz8bbjx% zhM%B=d?z5zKTHMfuER;x9!1i=%@< zuMu>A3R4GYPblbcgB=Wu(E4AEpwW2HoZUh&gALRXgSr{q&V;Pr0Jn{gICL`P9q``3 z^t1uAV-C6hb%g0818Au~^Am=bEOw5dwQ3AM88(6346nbIfx2BD{gXiZvJcoffEWtU zI`*uZ;{=0|0QiJG@R`h@$ORu%g4F-AU|7eXw8wiH(+iee3-~&`*9c`W>|#-B zK<B z3NajO*qXv$$$Zb@>jcpL<>qS+{~I=f4x)$GUk#wsqE7H{5`GIBlexvei1{JI?+oyc zX6X1K1M4S-e+`=-==@-ob2>i(H0>p9$MGMuejcg+HML7#Ib9flhT};D6Bkhv_VXv4;N%P?-rXZ4mpv5*>CiC{5sA!t_RBsH58?a2Kr6<$P=L-QAC{_7Vc)%^ioTL4;o@_^w#s7Hp>|N6l2jlq_o-vM+^JCi*FzXS6JP{|J} z=VA31G!L_-5;`4AHm%aRF>2`n6jObiT7j5;7+e1i4AIutrM^q4pr znphN?1hSeq44QNpyBYKjac>ZU)?X}wKN-#h*o$yH;Wl-+;b@f7(;=)m;bfv-3V#pc z{HPtEvPD6E0rNA+f`=pAuetsmuy5dhgy?^*1f5nV!lS~h%5j3#0JPwoh2f-tU8w&= z=PQu)8#h?B8afmd6gU>Jr}1Ycu152N`lqTuO}$OBf`W zxELBHD1e5OVEwNTjB+gOpuS8*laxYxgTew24<;#wX$_hSxHFvo!TVng;NwIDxHuRN zf{sbq#LUugk-^51Uj*L&l3l~_TfpuJ|3v0jpaR5&e+u&(2I%2n@bl;2LHl1pS_~%@ z+I39~3mP;OxS;Dd8W`p=h&L!c zI8k9F#W5W;=2^ic#?acRnCKC~1Yf^#26E(xB@+k3#t`H zKOv_@seq61^x4p?s_@gnE`xs-y#8WHY1j!m{$&bts=`hNr3j4)%4rNcoAe60XD~ew zfSn)32p(q(WHM>o%>ceS1hfWEF91}AL*fE7eh6Cmz)`>y!mv>R-2d_coiyaZjnw~2 zcKFe-NI|EU+1TaBg$*V=z067sKbk=EUx@naxxh})=+hjg=M29m*ro9AWc~u$ujj&l zQ5af(&0u||@Ug)#fp-S8T1%w^QvlBtCeWD}Mh*<1gXqEe%R=BG!;SzY5e`<+vcm;R zD>%5|2XVme{{o$VxRF7@fm48qRbZ=vq6bG1B)$?PBA8(7Hw2e}j?8iZ&r|ON6`lb? zCN8}V+728a;PYRCpz+L24!ofL*H4E{2|9DQRY4c21nA6x&3|Puu2J|5Is(Oj`HjI( z4KvWTFHlF!#Diaw8L@st;Dn$NLoaC9@C<`7qt5|m1C}!k@=W{(5a;)5F?KO1F5p<% zoUL%{fD&l`GU)y$$ z6vi-xBawmAfsKKog+Z60%LOrh$j8v$Vz_{}f|-w{xnc7Hp9*dvmLn~;3j7hyu=j1I*ApPz^4LpxSC7cN5b?hC2+(2e=O?DJpa{=s9q2 zfsM~MFse@2EszJgUgQO6FR%mX&=`jf0X+`z7(R6Viv`r?Z{P+U;XavVK?65v%{F*U zSOGS^(ZHJk>H?SCE6*ubO#3MdZl1xznM4A6NO(E1B}{}*T$Zv(d` z=(z7m{0kUgfM!Mx=xjip{{o*l0bXGFfd2x+uLjV)X8cI&4?*#6cYw!;TalrPL8!xj z6Z1=OUBCk}2RuH1f>noMH-kRt*!i^%yBV}TFoVv+2Z?BGKpH;;FQMTuVPXSa3Xs4I z@)zi&M-Br9`2H_BQ2*;eMBRqqCV=ui=oIkr4ly zb`62w40a!o_kYb{*v_DPgQJi+#-UZf)Pp;SNy1?}Xip8w{x9&Eja5u$jC~E7E2Mw2 zNr8Ovh68#23zQBIXc{Q_GBh7hIl*l##O1IVWDd&w7ib$b?*e9Rl~bRr7WuF6=5PRs z=%Dn!K-*TBxO)P z7rY-0-v0s}H4GjgQwO~7Xjf$xff_rGL7 z>G=c)1CtEHb_G??p-lf6mNV!a;6j=I`rcss#)ePX< zz8=8Nj{=pMdIuyIFy$!hW?*ySSitm#aWx}E4Xk|#>P6}t-~e4=yqO`XfkT1m4I`+` z)Ib_P%whNqx{quDa}LXQ(4iv@%x^eAZFL?*|4S0$X8s4tp!&-i)TM%oe1Pr$VmRu^ zT;Om=z?_BmAe_Mn5-DflJzxl0PQt)&)P=Q>F~%WWK=cTd5qgBRkii2aa=;M0=AWT~ ziBX}!LqUjxr3r)40In_=7#bKD6Br^G#28o`;0)FTh5&{z23DAwqaLh9j4=)23Zf@i zix_1f3?l|G17_Dz2iSem@QbAz7!nvcz*kMf-0Z=k#K_U$q#)1%V>GZRFiL<#8enR? zSe+UJ7KCVsa={o(i~)@S8$@(O83dvJ;$aMC2t6Qb!0H2G6tMa*hBG)E5Hw(MfcuNV zfkA+Qg@KU)#^3-CvoJC+I6~DNO#tmd2TevPATb!h*Gf1-!| zAlks5!sr1Ofw|d%If3B@gBb%a=)$EN3}Ott9gHv$m>MS*gGL?&XAXfw2!=odSOgY^ z4Gaw6LqHf94!{`#Ml3uG%nS?%pl)tpVl-&*Q4r=}IRs-IW;Hqh7CE2*t}hslI@z z2v?K98o?OG5ZWM$U@%HBI)OwSpkdg+#^~4(kRT$#io^(P2my&eQZoZ6t%4SQK@Prb z0Ifu1VPa%y@Kg}+V1X=cW?(q##vIsiCBamJ7tT1w6xcWgBm%SRs2gixV@yK0gy=Ci zgB>bz0J09B!PSkqu;EUExdiVqD1-GFV`9UdgmMX9gc`VZC?oV3i(!LIVz7kB0caR9 zV9Q?yEj|ij9IOotkhoxAV@zy_NDz}?ZG$sdK_X!itdQH^85mq0SPK|q7{VDu4}clL z3?c_u3mAMD+!;h+cDXt+Bs54UuyHUpff?Wgo6yJs5@~?>%ZWvykwd|WL!b%F07slc zs{}{{p@!9=F+d@NLzD@`FbL%lbz*cl7@{D;0nc9y%!~mCLJUNCSe=m=4Iv7m9IOt| z2xIhMaAFVuWnT^ugMo!X5Ogi9L?ep=bTu{ugR2u0c{nH!&tKLKy5Y2Gn0i(ef84qcMWkqM9+t!orY&fyIE4hryXa-~gN8s3L?yL4G;`r31t*@fHNFGBCd?^xM1K=bm9nT5>aS{FhmtvJrtcdLO>!= zn;00l7?~Oz76@ptKo|@#hJXg-W^Rx|9_C<%D+f#sczwVOMFS2V=3vGtAQ4!+GjJfP zfFcG+rN9oY9T4Fo;c-mBu%#za8N%R6R2FbJAY{P4r@i{O2`N)}%V1_X=1Fpup&hP%@?N8qR1TiL=Kk5Bx zUEy&|c;k~dm2fqTOa%^e1k_nL527(-IN^S0fmX-xdKtlhtHD-ofNN?A7DT*bt4|pu z!1XE2K^!cg>eyXD@B{_}ZWjYl=AhTh&WI)si zFgh?LFw9_3W8eg}NgxcENE6r?1_xI}z03fqpab9)G_>pmC4G!~8CHNm!`Xp>iNOH0 zZ=8eS5C#LL#ucMJg;%VC(0bW{5u;v)ESCY-%MdpQFyb=@qQ=41fhB-Zgu#_T5R>5q zslPlJ*ccoe1QJ*z7%>?TV;DRbm>5y&Wza!OFcGL42UmD??8b;*K|4U~VqkP*DQuKU zaF-A~#s*`+L}1~==*CpoFegD>g7X*#1F9y#6-)gNt)N8@LF{tCS}%k17Y8hVIWVv> zBsNGSut_ksVK886-Zg=xf>Dmay+QB+1_PEh7}4rwcm>VI!3Z_Sff21m50$8g8@pU44|CE0jiGS^)dR3U6 z15z)eFkp5u;>%wUgB+0Z7c5&fu)%X2SdoKk0*eJBAA@s)zylTwRu}^!0u93e21dvx zeCX-V0?bGZXuLZxvN9Mt@B}c6FdT(5SfC=%`wJXgommnNN*K8D2sXnR3{Vkx{sJ9z z%z-FQPzxA{n;AVo)iJ0R2G`4AhC>ocz3kxX;1VDx!s5y(h+sItL}2Lc>r09D6AuzDGV;RyCQh`_9l z;UXYuqA_N53=^q^n}Jy!!$khV)qtvFc)g6ufU5x?8>HdD1vx(mg#lN?0qF`Vz4hGOxU+An2Lj!}t84d;|m=c^R zP=Ns~1yaX>#T;-$5@a$HNCg7}2Sj-TsIiHhsLy~z;A*&9m=-duaL^LKWWd#+`U~zs z5Cg6TOR&H~45mhaf!%=d3_~%4%mEC>AxKM;12j1J7|F z#u-r712I7JTyPcG(kiHzN2RY2r@7*V9U#J{iAuAfdQVoF&Xf1!jyuGP+bk&K%5K%1_ee?GBIFq^2DiVRAMv) zMnhmU1V%$(Gz3ONU^E0qa0r0gOH817EGO{T&J?yFs4z|a6%a>Q)F;J`^tFhJF_8ZayX=>x4gU}Ru8h?tgw8Ug@dtg$!% diff --git a/fpga/fpga.v b/fpga/fpga.v index 8f8f38250..b22c9d5c7 100644 --- a/fpga/fpga.v +++ b/fpga/fpga.v @@ -138,7 +138,7 @@ lo_simulate ls( adc_d, ls_adc_clk, ls_ssp_frame, ls_ssp_din, ssp_dout, ls_ssp_clk, cross_hi, cross_lo, - ls_dbg + ls_dbg, divisor ); hi_read_tx ht( diff --git a/fpga/lo_simulate.v b/fpga/lo_simulate.v index 7eb910ba1..9e3cd50ab 100644 --- a/fpga/lo_simulate.v +++ b/fpga/lo_simulate.v @@ -12,7 +12,8 @@ module lo_simulate( adc_d, adc_clk, ssp_frame, ssp_din, ssp_dout, ssp_clk, cross_hi, cross_lo, - dbg + dbg, + divisor ); input pck0, ck_1356meg, ck_1356megb; output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; @@ -21,7 +22,8 @@ module lo_simulate( input ssp_dout; output ssp_frame, ssp_din, ssp_clk; input cross_hi, cross_lo; - output dbg; + output dbg; + input [7:0] divisor; // No logic, straight through. assign pwr_oe3 = 1'b0; @@ -30,8 +32,51 @@ assign pwr_oe2 = ssp_dout; assign pwr_oe4 = ssp_dout; assign ssp_clk = cross_lo; assign pwr_lo = 1'b0; -assign adc_clk = 1'b0; assign pwr_hi = 1'b0; -assign dbg = cross_lo; +assign dbg = ssp_frame; + +// Divide the clock to be used for the ADC +reg [7:0] pck_divider; +reg clk_state; + +always @(posedge pck0) +begin + if(pck_divider == divisor[7:0]) + begin + pck_divider <= 8'd0; + clk_state = !clk_state; + end + else + begin + pck_divider <= pck_divider + 1; + end +end + +assign adc_clk = ~clk_state; + +// Toggle the output with hysteresis +// Set to high if the ADC value is above 200 +// Set to low if the ADC value is below 64 +reg is_high; +reg is_low; +reg output_state; + +always @(posedge pck0) +begin + if((pck_divider == 8'd7) && !clk_state) begin + is_high = (adc_d >= 8'd200); + is_low = (adc_d <= 8'd64); + end +end + +always @(posedge is_high or posedge is_low) +begin + if(is_high) + output_state <= 1'd1; + else if(is_low) + output_state <= 1'd0; +end + +assign ssp_frame = output_state; endmodule