From f3ebfcb9a0d4d549a72a721bd3da559eefabf5f8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 23 Oct 2017 21:56:47 +0200 Subject: [PATCH] chg: reverting old @satsuoni felica changes. chg: applied @pwpiwi 's fixes for iso 14B / 15 --- fpga/fpga_hf.bit | Bin 42175 -> 42175 bytes fpga/fpga_lf.bit | Bin 42175 -> 42175 bytes fpga/hi_flite.v | 8 ++++---- fpga/hi_read_rx_xcorr.v | 31 +++++++++++++++++-------------- fpga/hi_read_tx.v | 35 ++++++++++++----------------------- fpga/hi_sniffer.v | 17 ++++------------- 6 files changed, 37 insertions(+), 54 deletions(-) diff --git a/fpga/fpga_hf.bit b/fpga/fpga_hf.bit index 77a9331c05527339a2efbe9a5761656af61e534f..50128bbe7479cc9e8ecd3da6b841bdaf0a57e0bd 100644 GIT binary patch literal 42175 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
-NFg8Cd9oi~9+iK*`r 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 OqX0ioM8{HoA^!#6rwF$I literal 42175 zcma&P4|G%4l`p(??zOqrm92|0sY8HX%Z3U^wuMZH<2d%gc=FVQ7A0T4wV3(3<_StO zOeRg;PF_FS)#*Ey1;{o5h0xYXY2L+gQm3UEVF)pll8Z4^{0X=jCXb|PMo@=1l%ysl ziTVHij$}*jtTo?y?po=Md~|L(UJ`u+5E(gXg5ch@ZR*DPE_tEnImsQ2Ghf7fFA22pS8 zE&TlA+5h`dKM4mBP4hd#^8Yoz!*q~ns`8U9|D7g&U*IQvp8I!)pE!l6;_Fmw$dCVv zA62A(@&A8MT;Ahg={x_ce~9!i{!i{H{;wV(KUW3*LG*ue&y4h)|HVJl^yfDXN>M2l zkwZ|J>d9?6M(Kw%OXORQzNVq{yzIPjIw_jSHK_PwC;YXh`;5}hhQvbCl~nxHDjy__ z6VxTDF2}Ak-=}T%du%7%2fU${CILrp&? z<=9WR98F8ydzDnl=kz*vUslG|8`Knc+cU;7Rs3+{SNxdb-|AwDi;goqC!u)h3LfYZ z%CKt6dy;uotSegHqKz{@Z6puJm^Io$rF}Uvmo|tpOJB=osjrK2%ejIjGtUWXE`CT`6m%_Ah#jW{$9Ocl zl;;;kOnEc2aCqT3PS6(esj#V|rJFpaR_A=o(RInQU8`enX6!yXb00fK zjh4^Sopg-V_qi@8-&araTH#BTe?RkGK{_j^L+&AE%)CyoQ;krp=5cDIFSaRL;KKOP zjQe5bM(*CKjL_Q@;I6n*q5W;Y6Sx^rZUnaa~uJcIcL>!}^$$Ogh*5)(RPG$5{&V~_W%1A%sq)tL#*B|1jdlMFbF!?e0|`%Y2uh zk7%44@T)_k^q11cA$bp7GY;5pt35@2Id_LKPA9Bd?i*9inEye$ggd3w(MhTmt}%sL z()YBf-*yT-Ikvlalr~ej&{M3A*5g7OVvJ?WgTQK@se}Gzeo#HQpKuEC}-FyxRpDzegd>Hu29CmtT{3a zzHYn6%E#%J3?Q~LmWd=GWi&s%=55C~{Z=%Mz)UykI;$nuCrV@Z6#ZIrrEqil9)We) zDF8R!>|+`r4{6s~gXpq7e(g6bm3hy=FPLdG=`;|rcdCGZoy;ZL4b#9Z&Q0Lg^j^7) zlZZbTY43ECf(fUO@Dlu5f{kTt!DoIZj#GVd6HLI@irPmo!Rp{|Dd2bYln+nh*KU53 z{%3017{+`n))=lyJb01aqDJQ4tz_|Q2OT#S595=IFm8X`mC!fB?u~|Pce^o(Up_S= z7TbD1`)KGI{l6;Wybp%+6@TS`@|}z=QjXQs-e%gm8rewuRCBtwv3Mhl;*;~LoAj^S zXno`xXZ0X^k9vS#+S)XbRrMCEWx>pIf~2xT%x}9%iP0`Hhh2VUqjrcIqPQr|_!pnE zn{HB*4KrPr_OdsOwOpE{PG^)7Y$NO z8UN~@^O-Q+}~J@YuxcW#_ZoLX$mcWWN8k+#9^v!N#ApW?p~!~%;F8Pix&6Xf_$6Y*%yyw9C_x?rp+N9H>1cwT%*C6|ogmrzG?bd!R14zOdrI%^`{dhk|GPba0o|o^r72|o|dnFiHg*;(3K3UvaxV3#W z3vb>Ntj(Hdd;R%CdAlOOFTZnRaU|wj z;hcqgLh?D5W48AvR6ZJ$bKk?mgW8i1%(j0_-a#!C8O=PWPn*jQi$w!S!``D$#m?}u zQvLbJZ^eD7qBY8ejDKl!er5d$OLVgg@83gSzxl`QABk)5CIHz4eo@|Mbfj%(%6CP1 zOFb273NQPxyopZXIldJNP2$&XT5ps|xB7Q_3yF~TpV>Cr5c=Nlw6O9|nfFZeV?_Qk zcwF;!`jJs}1dGkZHb`eoVKkh7{#4pu{48*ki>Y9ff33`H%w`^oTrQUz<7i170Xju{F403URdG#vJ&7! zHu%?|@&o#JQG0e-a;ZP#U&6R(0%dGhf3r_?sQ|JK?28sW#n!|FW`6qp0KY`UG&POE zI>H41qR28k4*y4HmE&KSsmETh+v#Inv}*VcbG?s5G45%@Q^L}weCAEeD`2}i6xK2r z>?bU($Bnnc^+UdByOCKxDaST;6KVV_m<|K&8U}XDdA(-4ZG9?!QDDdwRZM=hbg=;- zTZTlj-u4N_$gH1ap3jIpWR_@kgH?Pl1_tKYK!_yvV||f8#xGKNEfgu~HMIaMGIqi! zx`A~lFt37$bL}L4E#_U(c`0wuSxkGxi>AJU%|#wjKB6bH_@%iJ=NA#s%0-t*0-5eY z9$q(8RjfRm@h?7Sn{msy*RDCJjPaYsy()4fFipB|sE8}^On#W*U&y`^{|&s70x978 zMH{@}O)#J=er;p$9ddIeR1&3fg73WB6Q#Rs_)c-gzrep1ZisxC>H_~#!5Jn0dXIi4 z%Ff{;i(e+}<~$X+_euG6oPYqh6nlsDochhHOflz|RBr_2{eBmFYfACmZGBfzrE zcL}ux*ktmjN^))_*i!6SfhgSwdzO559XW6j4AY`8L9RK>G5W?dH z3G;}JLc$ilG)6t-O3Zbpmm}7x$oXI9Fm9HA^|GgE0rw8G61I-| zIMTuj>R=1F_HdSe%{+o{ujhsFayg88?(23|u%mW;*cC6Im~ zPO22{Df}x)anJ)~=2&B7+FCtw+Fy!_RMPY~C-F-os0TK(udm^vEEx-JnN1t`%Y%BB zfAwjz=(NCiMwRc=CQ&=$8dr+M$Ko~1wYGecf8E}vUUMMM$Ms&!>%eKrQ&wH20|FP5 z_%-t?9f{Ybkk2os69VCVy!<9V9H|X|C0Ra+U$=Mjb^bCbaQeM%O;B#Q*wN+^#b#348c=xBp5U;ZO;dS1nE_Q1BSvCFow8x{5EC0xUEt%AhbNb;4YF9zKc4N%HCNJs! zhzmr+JE(7uWbtbUB!c;bw9u>lTJ;D$k^eaEsT|bBq<+X}UZ>*%>PkSFXO5fo3`SYR zU!PGwy!miWKiomr>?TpuuiWsag{l3R;4Sgkd8 zp5kI%=0@$>@0pg4iyyMRafbzU11;B7kZY77s#@8d^U++ zY1uHWttg%weoa()A6#4fef8&}Y)t=0ybUhjGxS5CRlO)O6qWwMe$WD4w1xge{-H1C zeJRVoBw96bq#2j#meKSx_vQAj^oG%N_={)%+Z6p!MnCs}UL%f%8$zxmVzK$JqAaDa znTlUsRFTrXOf{d5Jzi1ZXGAYE^SfPros;-AvyYBZZFk{0YDy;cje)$clPv;wx?@YhzasS|t~|vBac!g5wkIP=1BW{>C9e+x%2-AQzqnNT;Gyk0bB;y zZO!2q@&vG2_tqJ`#ue&cJq<#lxY8E5e`8$F;#V|HyWCrpkNIEH1hf2N$rUr7yNw+G z>H(|=9Mg~=3K*AM4qPNnydP1X#jiT*ba?vo)x`^FpHU;6qtFk(%F9JzUrs+3OJD|V}e;?O9;3OCFiTqgdcB%K3_=faVrc? zt*L%_Papj2ln6XhG)rlTjyKo5I(u!qpB*Rv!>(C+7Qa#~jaE@*2VGgx7;OR(!(xNS z#k2SY{qR5J@*7qbYbT)KZ-lHG9;01+_UUPkmh^YEsm&NqrL8~5egWDJJ~+T?Xdih@ z@31qgA6C*&;huVo%@Z-I7Fs{n>aS_OzaRk(gv&8&DuV^R2X&*lm$oz9pvU;8zZcsq@z*z#uP82#3BwP%Ib&1>~m^5=nl=eZrpI(CpJsWy+!xZ^06HM zdXu2;o=uzSBrOcP24~y_rdhkpbyo2^()O~A6vYH|Bb$%d8Vh|k3F*oX_$w1T4b6?!+;meg%H!TqOzCO zWq1LfdCosdCNDA_MF@>TtBPr^*F zj|l8Bq>oMF*J$1<(MINwzK9*7ew4b9OB|*bhWiY~D4xKtgd@Orh%#?lKim^5TTN@( zTlDkD%CJ7}%;FcBhfIGI5x}OaravEv{R#d@vo5;aSenBx1Nz}I&@PDZ)HLLVy_)}n zH62|3?VNr%%97;cVA(191bMHV7yU)z*V72F>GzYI9;bgNxK*h5UD~r~rVU3s4K*GS z;5(E0p}=I;i>fj$$ljy_@p3E8zg`Fb($9FZ{OgGEOwgBtzHtJ#SD-c#IY9$M=2<<^ zoYfBp%n0cJ#_dWHV_w+j`&faH7>2+e&gqBg`j=W`!#ap{21Hcohe1@A{uBQS@Qray z=U^EUn7A@eMZgcb<4d#nb-#ESYa^Jhf1UFHww%aSsRtxW2^)sAJL+HJDHZzRaPwu5 zHRO=#U@pm8yg7?s^XNs|&b1Ib%>ZP8Ev9aN+G{?b7k5tNhXaLS8J`i2G3KP`5x!Wt zM_jc6-sPQ3v;6Bl86|iP#;o12@8a%vXMAS;VMo(roB!^GEPh>f9HoBlll7*{j-A{! ztSo|7fJhR`@vn0T1s(yl(60_eB>#HAH1>giA+MXLe+Bb~Oq3*SnHwV%Al)?(6Qq#% zpwXP;UoGoM&OLt-^h4Yu=PoaR=J^@_vSz*yj7w()6~Hh5YF}KLuU?}5m0(*F__f9X zsO61(^Oo`vX)lgNJ0h;I#u4`v{cyYFUz*!)_tSV8_*aLL5=oveWK6{`GUK}WaGhwN z@|c!tzDk=OLE<`ve|^hrXUGN@IhSeo+E!Al^PH0SmF%*dY?6Q7&NdM$N1TP|_3#S< z>-jx%lZt$7Rk4|gnSEM4`z_GQy;k{q`rO(H+NFHPhJa}9#}y9{13%iFKI0QWEtVgE z%zJ<%6pW~25aFllhgS)(Wx7X|&rq9KXcdhsSLtSA*Y0Jb<&*pi_yriX^$>d-`g|FG zsOCB|L-$`j^asNZ&twtF()CFnzbZAD`~*w*{F zr%`n5eg>i(KM=#bvijjw4z^_jzv|3WC{Me_W;D{R0<46vqP3*IOQ_#A+X?BDiCh9g z8P|3f-zf&{p3A zVfUFSet{ac1Bouso5F7tev0v&3HjH!NTEsm>ZhBcsn-p(3ZeW;?s5I1K&6i(@@M%M z@GIKbvoX;=O4m|>Er|0zG#K=U@S?K#MbsHbdN9UpKEPoM^f^ewt+G3|mT8DcJa{TMIAh5vHRsgnki?R_~>zQk86y+n@hg132;Hn?QT);2u zl3cbB64^oW+n84lzW@RE+3mk`r1^47dOH6DpKMO$@GB*LFY2s9S!Dq2;;!9YKF6U4 z@EkF1l7CI__NKM>hdjf46CpkiBT-yW3v6e262EMEhBk^jt%4x?gf_G}&ZcX2nO(pHHNtPuJ-oUboce|ed!1>YFBuTWO33oBb7H^&*jfj_7!Yuo zC^H!{J@VQ){ZLXx=!pg!(souNCKyhrpcxd-;g{I!@B{%{Bj#Qn0WLSI@pXsi ztE5-ELiMYPQ2(Ou7e)VucEyA(66j00WH$h|W}GK{@(>u=WNi!i zA>NOM{tc7HL8Uhey^Lfd$1*#sAF5tjUxGZ!V)w=lgsKM+x}}haj*e0Auk?>MZy6$h z&(`KR3(SP!D+U>Hk*uB|hEMP>(=nGtsm2bL!aa8*c}w53K`Y~03X7A=2YIz7>xj57 z1==->E?f6i$O{H0W%<@B07Chr&DkNa>TJvc>kzP2BcOF7;M4M~ekkh~M&INsTPE@A2{sNX*u6*j&;eOK=wU#KW*v{2s~vK8U-xcFFYxIx3m|pm%J%8iC>8PcIDXz z`v<+@fld@#MFgK{PuReMR3_ihRF{eh3x^NJ2(g6UL7AEhfQ$|1$*&@E&4xZ-Z@ZyP z(pr=WbW8Wj6(z7BZ9qMK(7(a1(`)2zMGgs_4TD$C;No5a3XkTcZ2|mZr=T@~e+B5e zK;jWpZo@?_p%9kEua8lAEQeMp^+Qpe(g!>q>Q_B;^_@BV>cu+5s`E2R6@7#;6S(IZ z0i$>vneQsuAtQ;r$BVSE+SYd$S0hoZOrV2e0>Ajo5jqZD>Fd`$gx)9H{ZzTfxY}P& z%cJdC{&heAj_u`R$_=_{0hh2bb5$zs~*~c_ALHbM(F`|gAa?X#y49S^T+0{?WabUX7xj`Ew$08 zCbMhyC?l$Ql4UIj{5u`ZqH1u+B&^VM%>M z3B%)|V~gf7%3S37H-=c7X_6+KyAcMfI0`GL9c>8a4;cA_8UHGs-YY35Ae%jcG_0E6 zG0ZNvbx^hJm^zY)b=LHu40^_u7u#ebBF6IpJ8CtCfoP+d{1E*cA;^YoIn9vsO5Zb* zL9{9S3-~4cgdVLjx=2kGcs~hqJQUDSxjvThFK^yG&7D;4@Se~gGcP2o6L}UpMh8?S z4j?<0u?6tUfw(cIEo6n}&yye{0d|shS;DTX!#yEs3-oUo8|dr9u|)m~4UMBz!1K?T zuSUyK-K}gi^BnYV(E9k!b3m)P)87~W5(W|5!f%P%Fo@U%CLaU*+DKPq%;hKAYR$r<%A5S8*p&h!qY3;%|KSFz8rE88e2vS3 zQR%nyPp1(LyfUjFZVOBNLP}h+pu2?i9&>W7<<#WmVK+3MDZysm0@`?Z4WQp zn!~SZEG=IW(xR9Dl&WL8$p47%D>Vge1b*@KdsZtbA~3Hyq#{paiGqkFk+Pdq0Q_>u zTfn~_2b*ZHeSY0U3W`J#$t{6@371f8C1dx((<=JR?agC|8|T@562C6fvTLG5NNc^;@5r-6c+9j!UcM1IQZB1`7L@)EWbRpeV1gn{0yOv+$UX%d za`@G#xgsks>;J;;@N58E18(Dz5O_%%Q$t%N`}xPY#ji-hYJGyY`Ww9vQw@s$1zKhj++ z(HSZ8BCpqK1Ot8{yD6HYAD$OScWWbO1NKQRq zWb0prVa(N}LYg6vxDHen3gw(g68MEssvT+n>Yno+-H0}ZfnT5}qVa`WqCtf)udP}Bh5X}88oxjkHd-FPx6@f3iCNZP_0Nw` zhgK2PLg>wS)rtQ35ZfAFS5VeG>)~ww2KsxS<)CIEwur6M!nkPJ8kPLZ`AC+3%{*)z z9bODQQ|1YB7~PIu^=Kr(i@KG``qvWKKYt(%wI=!;I0(yXx?(oA7E1mVmTN=yZzMzY zCZdf+qrrOGC=?Tg4D>(e`see!(3U+3s4HIf4qq&skfBuYF9G~=X8gj7{;0M#??|kU z{fb`TJ5pL5SONG~%8}(?mZO1fbgTpxY$>51qix>#B>Mv)LmSNX&-c-7bXeSDxki=e z>Cf>d**|}kofJE*LKJ$K9J1tJ^a*chtFe$mT;u3@vygNFzeM$4;n$z-+LY_ejC#5y z?hYd!zC~|{+AtFPDfor{L(+bSsI|#>nFEqe^K~UjgMY=w#-Y)7@KBUo##zEY3QCxHEv6oxzS^e-cnKeaS?j(bVhiaHbhk9qIBf#KghDmRzZ|mLu-f+SW+>G$kMtd^OsZa@iRLVR`KXe@ zqRw<`jxAKd0TZa+BBAn5!LQW_gAKMTKBEHQhGir1ODZ1A;^mY0b^B?FR$`j1w1S8= z(U+hfGKpU`;9nE?mG>F?H~uo@YE}Hv>*j0W!cj@Ya8El|S~K~EFwU2B(F;k;LS4NN zr38$*Qr!ndQSZy)*9Zw_CQJRzsz?avhjFGs@pzm&jVyl6>2mjtse zhhNJ?mucGn7--hWVTL){dXMtBS)u7PKg+*vqYY1k%Z#%xP^7IatgT_6s6UBT_3Do^ z&ERsa%KnW*rGC2rvZ28CAG^p@h9UZNfJFoUry|C+v)kQOGrey56yDjs_XK-N!|@J{L9c%HV1 zFOAkosNDemRj`8nFZETiGOU%dEPf49gjdM?P^C`cOBGbG{OGPF<`Do{7Qedbz2r;4 zFQtxc(i(fJdX#7BW~w&sn!>-%F|^`1Bz^&N(Z3NXPhS|z*X8)v2s8$s z6AJj3R?nwxS(@cv--vglOzw>5SI~!Kg|QALHZ_LOh&ai=9P_CQDVFwQhSm=9Je2V- zUfqm)viwU0|2h|PmK0+z6?yntgN?8@ukV4b9RHH~yg+=GHQ!{^PoV9il(g!-Xhh8R z&tFz=*!Q)f?DaW)G}`o-`?(h&64JeV^Kec-yw3iR0-dx`_PW9YE$PJLsH2!uJjcIA zORztMWKDsfADY@P;1@ARC295){zXr7lOHE)L1AS9@GE~2I6fBJid_GEFLjt6NlPpI zJLygy1CYg^`of)m0|9xGe?i}Po2Th5Ac^*I-!^@I3Pj8DuU^@|!QIpa{>2st z-P_8~qtmivrF%VrNoPnIGfp^~9GmSKS^jl9z|SLsL(O#>+5iN0 zL>!||susu?k5Sq$ym?_BfU35e zrwd`jX0*AA0TiWj|u+u4jmEyVx0=UZ~=&cAJo58pjFDX?viOxW+c?6Yp9LN5 z9NaU`mX)@LAK#)^&EeO_#(1#725jxMWq*|0 zQqTk?8n?Uq01AFN9=ZSPUD{>)#vWY6Z)sA3d*(^;hS_Ag&*t!J6}=LJ)^yJ-5A9dW zZ9V1DM5kFlR20wRS6-$0EMmBpi1;W$X!dBEzlJ*1YHTk4)-^GhJ9bY<~t z2VD*Mxy!E*zh*2l@Icv93jUQ)hE-GAG?`aT`vl`8Yv!-pFpBI2?T4eG()UTm7OA`- zq1~$w1Z%UgD~3&`eukn6fknQ`#xwq9I_^N^FM9>O5OYBS7fAei&+!{kZuPBY$;@+t znr5Qxh5DDi5$zTY2Ff2v`Zj^N__O<$=L~>RO59{T5n`_o+g>!O^6 z?J^a)D=Q!#KciGt{1NX5KA7WQ>MrDdS{S+C1`(DQvk5z%gr3t6`SZqW!aN&X%V*I~ z#C8i|a2E8#d6xbImemijPbrRdc#l&9|1w84UuR84yH#lc-yhD{eRSr_lJ&>&dhY?S z)(*Hv+80!ukKWzqHudjkICT&nh$=Zl-F(JR`x9(SYgGltDT}=|=Ha zl(c_!&-s9^w4mIuRrxJl;;*+(dsq26fjCP>_Go^qd`@W|=0yv+OSWyifnPxmt-vRq z&=mePxuLnKhei#_Z+;N7e|7U{EkOz*L&^)C#S2aRSK3Qz+wB50(S8<}(bYi1OX z-NS=h;iu`8cq@d&7co;USN{Tjfz>X-I;>#O4@1kIU5fFX?Uw_a22!Va zMZ<-mjA*x8jlp#ND=g=g=3fN0FoLL_WR2MWCG}MfJz)y}x>IzTWpPxy?xjsJ6wtAQ z4)_KCn!>-n0=8vwt-|9*%3PgV<8RLJuU!4ha+Dy|FAI77ky3NLqiPVK@U9>HYgn7o zKVL-X-+)@EH{t@@wbp&o2kb(t>lYdS5;TO6(nvM_rK5a84!vkzD`>QfEEb-`ug~d}i7tX+<+jKv z(G>Efl(k5bYXv|d%fB9_F5x+&z3#*|bAgTUDM(D%xF__n9DY?Wgl@hj(Tqk86C$CX ztxh+)PQfo#!@NuxDv6~9Qa{V|8tGH`R}0eb0K8i6K48B#R>2)7gziujMq%IF=};$ zJ;Q*TLe>^S+z=4l-Vs=k$QU#4IhmIn>X_|KV9c(l)CM(Cyo|xo2sJxTo0)#j%wLps zh)OHg-|3F3zNNPWsTp!iCYc74jFDUXJep$1cZR>}5n zKxb1I+j#TW^RGi7b=%65?3O@sGMwXIFPe}??4sREeF9~RB}JB^(lMhkUK9fkrpI$8 zZ$9l6WNCHENpzG0-0DhnzuY}SB0>gw?_(KFRwt`ye@>p`!%N- znc!bzj@!)FJIZ>sr1S5Gq$pQ#CNj(UlBlwrYl=0M%ehPbbt&vWQe>2C!lrtT{&@{V ztS(qY$_yrNAwFk6K`k7@EcOc!v7w?%%Dd=#ZL$l`0&~Oip1!;h>XIlNR~E1nj$+$w z&M=iAYn3a(nemI{^sPpOmD$9Vpcw^_0k$;OgZ_C~r#N$up!EgO4w=0>=Q=E;@o1HN z-dq>KCu&T>r+S(GCkJGu!#1kbxR!YgCvWMo)|OG|TCSkq$?XlnAiKn8}e) zRcIZK`OV0Y@-sG-`@fL)A|7IwlmrFb15of*Jm4+vWDYrX;MXcjihu=v;bFLN$P4hV z#ompbO7*k}{Q8`3N&eMZ{z37L(Jx%s{7(C)hU8zc;JN%Xes$+v#_0%662E%cht1%X zTa_p~ik#m!g@2_;R=c3U5QC8DjdcP_`s62B{)PTS+Mb3j7InO6t_*5_$F|Zsfe0C5 zZ#ptqIdexr$Bb&sohs;Q3F6>i;$K+}2md;sSwGgy59|+l!x~?ly=Z=z>c=pq_p+m* z#zPW<`AR97s+29(n%8cni>cgW@o+bCk;= z@}M#MK5`9Bseg$BR=MR}%_`S-mZtd^0;5sgt8Hh;GP;B}@2hHJr7*n>Y!h|EjFn;($%)+HCh^NI>{SL?Sl%Pg-#961E!Uay z{-G0M*IAU$zDp+!z2F%M__Hm`|f3B-nF`!{5YWm2V8%#rtc?O7I65r14Z zIvWS&H(@;BUz5ANkQVmSR|Wb~j?-M*otS24>}AavbD<4@YIu19GSq!`Aqru}b%y<4 zc1}M8qG`1$C~tN2zeSUYzMb!Cx8wyB#f-h6ACezljPp0{^bNCuYUi4)kwS8_p^G z>jHRF{}{T#)B0G#HFxPZ=^AfnMSNB>_DVVW2>pll@?o471zsr-F4E^zv;fhv{Hu>c zR*eJAFMy*V5XF@>0t9^6omg6u@zbQkq=>`Ai;CG9S@yCDf3);*Ik2Lsn z@cYo?8c9kHA_{J2%Uia1d{K1QWc9bAs_I4mhMDoNV9AkiBxt@>3Y&t^dHcN$sQtmXBM35C z{qR{jnc5}K-zY^WsNLfF7{kDL;%+Nf|2k`+e}ifyevRjWe?^s)Yh2csDTiO@39>5R zh@78;7jSpH>zjl_nK(8mW%<{m43eO1J46$>KqF!?`VY}i1mOjJ)P{UN=s)D?(`=rO zj1cbOShVwKuZElBIsB>sepw+eWJ5R_>dO+pc9JiAN6F;=6nTCW_J0xh*9DTYyjv`l zjU2d$Db-3yepmOLPo;hs)4%pgbwaNjMnCrFAY$&}rI%@< zDPn%czv_%p0xQAFLj=J7FQMZ?gRV}v$etf{0{De}Qhs(APGrh4%Z|kK;EOZ}g@%`4m*RntJKp|*07$ju`scllpVJi&*cNu+ z6Y6^0{j7ric|xTxuD_FshZFpZe4<^JE&5AcVriK={(yW@O16Jq_HTe~jX@D|Il*CRachMTG>g@Q}SXh zHgUhERS7hEcr(wD{Tsg>-Zcuid5aEr^>Fr{s?2>+QxQe#!og8XJ1%Y`zYSh!7Id-@D{4 zu3yUWuL0?CZ)#%uj!hCmu;dGf$>p6pr2S64JS`!rjV7r|)S~za?aCOG^}g5Z&uAP48^vK3%+C zAl6Ozm&k*3=D?T-K&27PF9in%KT@F|+PBMlxcn|n^~oq9>qNF8^?6`{WMp2B4Ym{c zq3qvCj|b&5^&0ith+`KS9G?JEX2!pOUoyPg=sz6B#c$wW`nzxxs%cGeb5=jJoOq5I^D|E|Wbgz8e~%gyl|4ZL{uP#UrdAzQ%jGx=h2wycF*L+p(q3DFGs?2~^%NbQ9KlhR&luAGj3>=g9*vUrE*wwA)gB>zg~ajo6biu`En9!xmXrz-sw|56Lu=prve)%+`PH08ANDbhsfhi4}7OY*P7j$IPJPNOE?#Pg((_y>ml z%frh3nRtl)!xHonQJ00a7*neqL6Hw}20;!&M;5=10GmwvK_h>JJww&J0NFgXIlN0s zON*K(@$02Dz5}UI7QDS$($bgYj&EC=p2M#ZI_LmwZB^c9Z>tTwaIW*`bX45i?CVz6 zWb#9=BZ?k-iC>xi!&Q(&TZ%84d)5H;vh^>E#%;Wos9vU=2{sx)vt@|S_>7e&OgI3hi&b8!% zx*UF$(Cb*wT|Z!7Gf_(-&7be0^^UUUe{7AcnZ&Q#fL7T5HLm=J!*?2x+>l=T1*Y{0URvQ9Mt?M7gOYlrT5sm_?pX>}#tI zVr8Odz)@}KR?2wNE|9Tuf42>MJ z2HNHw)wEpb6>1Wh%SMsg|CK%lmdo=uK)b4Jw_PUt%^JK?Nd4ZAOG9zdLb-9!fRLvc&R`B4e99j4DQOXct@W}q9&;Yuh~pr!KAPP8|m zA;k8@mkv+h*WXl%?P4)$@nSDKj)Xy9q!;6r3{Wr)3b~VT;+F zF)wOlwl>d`t$%%ydc{A43)Zq99>PYj5&dtUe+P~93r0{8OHSgKN`qPjuktI)1`nwX zQTJU+47(|TL}sr3wT(VE{-vd8?2c_VU@JQ9(xJ85zsL+^xID|h&WS&oi?yPJ0=g~a zdYl}|f z@7OG=QmEPeoog2>yQqDijZNx@s6-HC)dBXeE89iy8EwD=PAw{IoTl|=#_ppt`^`$SE6n+T!wXV3W`H7IXB)>wH__e@5FNAzOY5j1m@Kd2s zgc_p;a%u3wq)3?XxQ~^Pyr+B4Vf7ks3@eZ<2*++9MOTpA+KsJ6@k#uW{qv`Q7my7r zjH5mMF*|1wGjJ}<3%m4A68I@%j9zI8C&4|!-}KR>mOd$y%c(; zT8Flca+QwqbYRT(Z@g4|CAue6vt=ocmqd+h^A_aBi2RbZW$~*G83^!8C?=)LUPHRc z$GK#zIsNe7aKDF%2Q9eyF$YVZAC+$8&|Yjlma&C5??LRysIc`q4k2BbDI~y7DTdg{ zk#hYT^eTPB)}Lf^NS3`~;q|kzp0Qu}Nj92!j?@o77k5E6)a#jSclV8hf8DZiv9|pJ zljeecXwfCwXHT<~blJ3v3H*hwKkxVc3;idX;X0e<2>) zIsAIn+|Hr#d5?`y zjvw?Nn%L7f43>SCV$EjQTY_-0i(58oF3HTA@0|6yy_BJFc607jOp ze|^KZS1FI{vh1~q%Htr96)N^O;e5ZWewb&9y)<7yL&MS{(~v+G#vXaFw&qmE7Vt07 zE>nQ@gIAKYKE!+oIG9)Qgnvo?g`>$tdi}^_v3>D7E5NNVuSBl?CHF5QCAQOLFG!uk zdgfqQe3GqyT^1vv)(PvpL-ODh7%o6>l;3B%9?J2r4|u1EKG-fmMQ#8z)!hm(M1!&0@ru1+TnTGtR!dmB>$5A z^B2N?Lwi~|ECn3y-k}s~qrt_+NQAQZ^$OiEF)y$!erq}|E}@bB3^jcN6U_3j?ff{r z5;lF=zJT|Gg!7_mQ@`J}1-Cl<4_b8{Tt4h=Sl66=85_j&ObCG z0x5baL(xQ-qxyVy*wYsD@QyNAIUUDLM=`CJr$voNX7TlHW#)t5^W3BjVtcA!%KooB zf=jlzJ-XJ6jbNS7E>6%vGob;|vivK-t{bm&@a0yHHc_tI^sWXA+9-q#voMxC^ur;t z)!HR`T+yhL0$~J3AM%ZWa65ARYnz%bdxcpEfrtr>cg_Y9p%Atv$G`T;F{A9|`2uZ? zY&U^ljpjPBz``uD{Oc%7&wUY_OV0>%2xlA=dfQE$3Fgo3U*5-0j_qpGw>$4_elr-b ze7)_r)5+K`6Yi99?<9VuIMPDo>dGa$Xg4{Q4`KWKm}7n(KFQ+O5Lf`tl{Elc=s)DJ z*L*r^1=cJxviwV3t+u_1WfNz4{Jbf2nHQ67!&b8hz%Q9c5e}W-WyM%RsbAeIw1kfGJ1|O{9hW1eY<{F#$)5 z<@nbP72O)c?ozkC8Dk*c^fTM}_tbT|v$jcIlhiCkI2yFmi_O>_> zdSSOd3XtM*J$v&W@N~uCUk1Y&(c!-H&;d?qyQp`!jz*n~e_4(^k~^m!M4P$_2p~Ni zkytQKfVFuu&%ybJ?6=m=lzYX}_l(cQJz@76pG8WGIC9VMO)6P_;;d zLOtO;B9ZIgc#H0j0j=J~IZHUUw*o>UnyKQo=xkK7{0nT0%A(psth8la5RDv94*o%X zZDBd}eX?bO6A|s^n0vGK(BLEHda4l}53$pH_cGvDcov{b&K>$;OPXcJ*;hwKQz{lg3LY=oqkP2C z(NTg=viLO~{)2?Si|zNyUI^hDRzAnV#>(W%1pjJN|B0T8c>Yb>#LA-s!q=*8#A54A zE%wVkhe`fbLEWN9XbDIJ1EM;mbwi^@cV8=ZNtl!P^;!Qi$fuES;2eT(t^iH*XrhhC#bVo&bWv`PGOTo>0p zwI=x2=h_ibJLs~@hePR(M0sx=0R#DA7QY$@dN0O9AJZB0ZX0cfqw(L{rtpfKez*)U z;j``tu)`E-4%=FR=lu#XR1wzvllq}N>MFnOo7NrQWA736f2CqyW^V~xoJRpv%h)vC zKW{WdK=Ce;%>zTOilsw_O}krMW^Vs7&OdBviYnNq*9?0d1O!};qF;2#J-T!_KP=xf z&hN!^8rv{0pLSKPPa?MXpiCm4_viZOf98SAk~tP&Kb5_yPgj;{8^}DU<@yh4lh_ce zvh=U9=gmE0K?-e$e@{P&t_%anviNlZ_zqgy(D@38y=iyVdA`b@i6cKWbM-HI{^5Ob zw^u4{;Q`T*%AFqtwNRki6=h)~-QO#oIY_A>5REHY{DN#q_&XyzmFnQz zw3uUp=jqFYj;Z(*{K`kAIIKO#zNEFqB#;$gb9dAcF+M=tP(RM4G{j>K&_{xw2J^BZJe$|9u6{Ty-Qa`PL=vT>2aFZKUx z@9Kl2x~}_qZ{HIS?c#kaw4Qa0-6shq1Zdg1SXS@Tx5Ht6~Cmf|yTyI|S;9mClE*Enbk@AGxsXZ4oc zBl6hW@)r#GFC%HhuLto%0)KfJ0^TQjNz5N?IS9`ML>BYE5I+>qrhaq_^E(m|;fOi# zzxvhv8)hpZZT^}1ivF?OHrCAk*TRNvVva<+6n`zl%G_~~uKXMQQ5RFIP2Vc9YI5Lz zDgJ`DRcWF6zVh)Po^U_M>%^QvYeR$LudBUDx!XxS47&LN*5Ud4Tei`#9IE7Rjl~be znTIeBgX`Hleu)_V1Bl7oB-77z4+r|?pI?@~J=~A={Hc(j@aHx>h#8lzqFSY zZ`MGg9N&1t{*Gs@)sG7VI;7Rtp!kdT$RJZJKjmzu{6V-~$G8MCu<8!$GWd&^B7?~~ z9UDd-4iWJB871GeaEokUSNZ-8q#1t>(ZYY#Uv*zOfDS)PuNsJNOh)lTi38*xSkR_% zjMo`@$xClaykks=juI|HRQ$!B%YtjuKTUine_<`~@?Q7H=-{@Y)Wr3QzaD_+3-@GH z|1E8nH+k09h7Y@7=fPH0{>rlqeeF5C>etH6Uj4wP6V2c9Sf*L=SIXE6g}l6+gTe?~H7Xq?b5u@J86< z9u|sk(C6jrvHh?2=@()_0lv)pSgy1&Xs46B5jGm}muJ6eZxOhycTf4G^IeHR;y(Q{ z^79<_fp>iVLjECrrQozCb={*O!h))xJ6c8N#ZpIqKjg3MuEkqyEDQIc?dXIG)|si0 zLF|yfDEk`yys}3^Q{KW@w7W^_z7{u1ft&iD^s4-Y<_I?Lj?c>z8&B(CYLSlTZ`do0 z{ag=kWwsB&EnSBMZ`R70QT~RRr^jrVLGUsSIdFjo^b_8e`gwYCs2uaZwhOFs9eqR$ zIapL^IxfhnlJhrSlr0XnkUpfpmvhIGXX{k{2GNgZFBEAU z`;rq*LE?hqUivrfHi1OM?U>Q{h^r*D>E+;^Ie{6@^|*gg0Az|0e~p7LZaDzkaqbE(Y0jzmC2gR~DjM(E`S1L$R^&e1aTR-8FS}{nKX1H8 zi`?b>@_Z2oX5Fvrd@kVqub=XAWe|SlPv}{ZKBAA?$cXkJb8XE3l87HZT5gvEFb>cQ z&&Ea=G&kZe&OiJ+45f8< zJ3;F&6IO!-09Wf$TAi);+8I{&qh{QQjyZa3ZL;QqrC<=-^^tZSZxHmUgG9Rp9w z{22JFUfbw662QAty4YnT$oTz?^UJgeVZ+|P(62BMPpDY@qa^=8b3IIK6+iq8y&+#2 zYdwwl;SWmwwNXE!gYxrZaKu#nkoC*wxvU#fS)JIgIHc|B#;7 zn#7gJ4i!+n^3pzpYy2FlKZS*Kc>cJJp0kgze43>X3*7BP$=0$VrO4ZfoF3*M?#u3C z^Yvxq7QTb2)iIWQDLLC26&*I-IeZrX{ukN>nU;6xjI-z%)CxvVb{t&(%|ysw66e2O zr(0!uY~xwyTp9kCNZgcPbuxtQ;m=DTpfg_2yT~UVCM);#0Vb577-2zRKR9Z<2!Ss_&nzy z9>D6xH*t9R(yU4%#U2N*n#Mx^>#9?_ZzY(v7%caaq22JR@xuvu)?RdY*?XX^N&fxH zf5(xW<2C|`M=&$}`7G^UiGA+;!yrtYlVV3~r`~K02qZildDJlq{LaWftY9%WI?&!= zX?q>Kd~@A^Rl zer)dvyXt?9(r> z^*#2Ez4WQXIoAho;vx=YBp!^PUp^sUbvs6JetAruaXNBo865N;OJP4Z7_VNw-^QBz zD(u*C`C@VIvScx_hF)OH)&{@H#Z=`51G7e-XX%zuuKUtiX$8yUO=MAXK%E4J_vjsQs@m(3VOw+zNfJ{EpuI zW^yq3YuYk|6$tB&&F$jfPr(XSv~uWdH$8)^lj^_VaI!sQ4n_JkgE;>X`(K8(TVPBZ zp^R|E1o98V`24;ZUHT}zfYiWDhj2WckiX#)=WnD3s{3F6Nyw1wOFwlzXv@QT<9On1 z{WbXlcsG8#-U0Z_WLPg#I%JdgaZIm@CcKc=Ua*M{4Xq@Y-=`g zB7M?E14}LwS=ImQ?1?pqhV(^Iu-x%N4Mcg?=4{T5ZMJIDZfz=6}KRAGS8Y-+579<0T)| zpSCs|;EN5q^1tf!L-6_Ywquq*WKi7T&zaoAHyol5pg+|1x1VirD&`RhIZUj4+cU=NYMG1UCURy5F?7W2Pg z`5o*oO(YgdIARjCb(8#|Tri&QTdMr8wGzkYefuooUq}SXW?PT5eTKy@`uZhJoS7B4 zgJK9h51C&4DepYy1Tv9+`9lf2p&LA=E`oBbl@)H6u5r_Gf7Jb$HVeG16Ny%|3;NZU zoL!G!RPnHT62%XZe+b(0`1~?to+kX@<59N!B0bR(#t&(v6Pqo^?VF7m2c|{9Wbl{9 z46iMC*2rRWy?LKlZD$XLU=;w}CvLa1UR%)@lDg)|UI*u$$~8bbK|TGXxwM8ZCsW2j zkyfK5lo{zYH)!|C)lPO)i-56#{F3NdBUrm2s9Hywi~%huiQd^Vnl+rLarla;07%0L zK_qjh*;Oi5R<>sABcPk2R2*u|XDMt~e@a_HtGsLh7q$7I4`4M3FHO)CXKy)m@RHi_? zVfZBu`JaAWE68QeOsjENE0h=*-#6PmA9zu_x=gpU#<|Bb%cd*WIIFGfM$`4UBr6NS z+!)a>Xt&=JCBG-sJL`s9$~j9ct!%iGL8ff1E6s40^k$TdYp&7mp;hP|a}7G>E}3<; zpd>4z@v750WzlWSnK5uzP(oq5q@E!uu=i|0n*f-}G(+CeWcM18%*c|&UGk`VV{S$j z=y#R;lIU3@OU(79``p#J%%Kou4^0b7pcg?O_AE)Pm&e_kb5|Tnto4C;NMo6sb60tp zNJf3#Y%BGm!t5cVt+Z_Iid>_Y3HlI$m$-g4`HI%pZ#kD+(59dss?*lWHSXoP?4}Ty zo6NN(zeI*2J;LnM?qiKZGy`A-*`689>1_0@o-X1csKZ$J025Y^N@VoTU50}Z?7~p` zfXAybD6y+DtWC~J%kPFXvAm*{}(INhoA$ zZDLt*X5-?K5Evt78}*8rw&6wfw3zoF_~X8Nwr0PTt9%4p`K!9<>DSKD;OB7G*fgIZ3bDP>cOU7 z5krl$^9-`iBfS7CH=-mGp?Xc1qGGoi^%(|508Q^FE>SY6#0om<-B_5h%m>#LrUPjG zTvC0O8CZU8RFT58kQBVAqLy6mA-k=A>)H^c*0$KfYbf+@ZHh!_(d6>UA5Wf|JXZ^p z%ar~W+7;L|J z{PB-&eW>@)%-!QBA67D&-Y1^2KWj`sZ~S!qC}bHMv{~|YCo_5hXw7(^te%LM6+s8UwPjS#b;g~ghRWhynOYEvSY8UItI;zH z+OirT0+Rq{g8?~@mtiRV5}|?g_+xn@QX8c|RiI=H7psdUl##U{kg+wPyR?I@rRlOR z0#QlXe-w$HE~D^BM8}Gk1KGDXEBZ?)BuX+MuLi7W5G;m-8Ddv|KSyGoR<|r zGYCX@9x7f2Jyi*snOZ$dD7C7qQMB+`G5w0vN-7Y_pbr;nmr=L0$7(>>hed+sicws%5$+&T*m}sPt8ZaC^tJ`o7)8odc@*lrqSrpG8X~SJmj^QT|4F|iN=CrysQX10>SHGy#6q;LL5DE;|()vfr#4G zdjSQ+NWlv$BBtYph?ma;osr1@C@-H+#}PsQwR%=99Y-bSl+1a&tO(i%N(SqgorJ5z zW(|jc4+8lmA?vVY%oRlMpGQKfBBUsiC9pHruQ$3;0a{zr(qn2lZLQLAyw`%GM1k#hNFq=zSm= zwj0C5UsvDZ3d4_Dz@$8s9FB_l-;`%K@&8{6-*($2{+do-;*bAZe_Av-Iq7lbwLm?x z_D`zh|E-MD+*+XC`4j4LI7O?oS5;K2!m1>axrh#KZ0DGEvyxEr?&5&upr;a^Uo0dZ zvk8&z#AdLn30qkHELSqD!iRlb-rOF7NV}EHC3IQIRC}XFsUw+Bq|2cWDqRK$>#6Fp zYE>0Pov3vAVjvV!x?KHI6;0{##Z1Bft-e=B=XW8bMQS`v3eKZ zsUDc>fvFyt>VZ#l5BTdPESRuf5})RNm}>h}4@~vIR1Zw`z*G-R^}wgI2MV}?l4#@A h1(NueklHV%|2{nt%9{nM@b@_D0RJASZcBxg{5Muq6QuwE diff --git a/fpga/fpga_lf.bit b/fpga/fpga_lf.bit index 5574a6bcf8c9bafc3ed2bdab611353ab8e70c713..a4d0f85f79ce6c78d826eacbde18d71356d9513b 100644 GIT binary patch delta 27 jcmdmgl4<`*rU}-3M#c;&44g&=Rwjm4CKek#%a#BDe#!`Y delta 27 jcmdmgl4<`*rU}-3h9(Rt44g(rRtBb4#zq@G%a#BDezypA diff --git a/fpga/hi_flite.v b/fpga/hi_flite.v index 8c8e26d39..86f03c3ab 100644 --- a/fpga/hi_flite.v +++ b/fpga/hi_flite.v @@ -392,10 +392,10 @@ always @(ck_1356megb or ssp_dout or power or disabl or mod) if (power) begin pwr_hi <= ck_1356megb; - pwr_oe1 <= mod; - pwr_oe2 <= mod; - pwr_oe3 <= mod; - pwr_oe4 <= 1'b0; + pwr_oe1 <= 1'b0;//mod; + pwr_oe2 <= 1'b0;//mod; + pwr_oe3 <= 1'b0;//mod; + pwr_oe4 <= mod;//1'b0; end else begin diff --git a/fpga/hi_read_rx_xcorr.v b/fpga/hi_read_rx_xcorr.v index dc8b01bc5..6e4c261bf 100644 --- a/fpga/hi_read_rx_xcorr.v +++ b/fpga/hi_read_rx_xcorr.v @@ -34,13 +34,13 @@ always @(negedge ck_1356megb) (* clock_signal = "yes" *) reg adc_clk; // sample frequency, always 16 * fc always @(ck_1356megb, xcorr_is_848, xcorr_quarter_freq, fc_div) - if (xcorr_is_848 & ~xcorr_quarter_freq) // fc = 847.5 kHz + if (xcorr_is_848 & ~xcorr_quarter_freq) // fc = 847.5 kHz, standard ISO14443B adc_clk <= ck_1356megb; - else if (~xcorr_is_848 & ~xcorr_quarter_freq) // fc = 424.25 kHz + else if (~xcorr_is_848 & ~xcorr_quarter_freq) // fc = 423.75 kHz adc_clk <= fc_div[0]; - else if (xcorr_is_848 & xcorr_quarter_freq) // fc = 212.125 kHz + else if (xcorr_is_848 & xcorr_quarter_freq) // fc = 211.875 kHz adc_clk <= fc_div[1]; - else // fc = 106.0625 kHz + else // fc = 105.9375 kHz adc_clk <= fc_div[2]; // When we're a reader, we just need to do the BPSK demod; but when we're an @@ -69,13 +69,16 @@ begin end end -// Let us report a correlation every 4 subcarrier cycles, or 4*16 samples, +// Let us report a correlation every 4 subcarrier cycles, or 4*16=64 samples, // so we need a 6-bit counter. reg [5:0] corr_i_cnt; // And a couple of registers in which to accumulate the correlations. -// we would add/sub at most 32 times adc_d, the signed result can be held in 14 bits. -reg signed [13:0] corr_i_accum; -reg signed [13:0] corr_q_accum; +// We would add at most 32 times the difference between unmodulated and modulated signal. It should +// be safe to assume that a tag will not be able to modulate the carrier signal by more than 25%. +// 32 * 255 * 0,25 = 2040, which can be held in 11 bits. Add 1 bit for sign. +reg signed [11:0] corr_i_accum; +reg signed [11:0] corr_q_accum; +// we will report maximum 8 significant bits reg signed [7:0] corr_i_out; reg signed [7:0] corr_q_out; // clock and frame signal for communication to ARM @@ -99,16 +102,16 @@ begin begin if(snoop) begin - // Send only 7 most significant bits of tag signal (signed), LSB is reader signal: - corr_i_out <= {corr_i_accum[13:7], after_hysteresis_prev_prev}; - corr_q_out <= {corr_q_accum[13:7], after_hysteresis_prev}; + // Send 7 most significant bits of tag signal (signed), plus 1 bit reader signal + corr_i_out <= {corr_i_accum[11:5], after_hysteresis_prev_prev}; + corr_q_out <= {corr_q_accum[11:5], after_hysteresis_prev}; after_hysteresis_prev_prev <= after_hysteresis; end else begin - // 8 most significant bits of tag signal - corr_i_out <= corr_i_accum[13:6]; - corr_q_out <= corr_q_accum[13:6]; + // 8 bits of tag signal + corr_i_out <= corr_i_accum[11:4]; + corr_q_out <= corr_q_accum[11:4]; end corr_i_accum <= adc_d; diff --git a/fpga/hi_read_tx.v b/fpga/hi_read_tx.v index 23d25deff..fc309cde6 100644 --- a/fpga/hi_read_tx.v +++ b/fpga/hi_read_tx.v @@ -12,7 +12,7 @@ module hi_read_tx( ssp_frame, ssp_din, ssp_dout, ssp_clk, cross_hi, cross_lo, dbg, - shallow_modulation, speed, power + shallow_modulation ); input pck0, ck_1356meg, ck_1356megb; output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; @@ -23,46 +23,36 @@ module hi_read_tx( input cross_hi, cross_lo; output dbg; input shallow_modulation; - input [1:0] speed; - input power; +// low frequency outputs, not relevant +assign pwr_lo = 1'b0; +assign pwr_oe2 = 1'b0; + // The high-frequency stuff. For now, for testing, just bring out the carrier, // and allow the ARM to modulate it over the SSP. reg pwr_hi; reg pwr_oe1; -reg pwr_oe2; reg pwr_oe3; reg pwr_oe4; + always @(ck_1356megb or ssp_dout or shallow_modulation) -begin -if (power) begin if(shallow_modulation) begin pwr_hi <= ck_1356megb; - pwr_oe1 <= ~ssp_dout; - pwr_oe2 <= ~ssp_dout; - pwr_oe3 <= ~ssp_dout; - pwr_oe4 <= 1'b0; + pwr_oe1 <= 1'b0; + pwr_oe3 <= 1'b0; + pwr_oe4 <= ~ssp_dout; end else begin pwr_hi <= ck_1356megb & ssp_dout; pwr_oe1 <= 1'b0; - pwr_oe2 <= 1'b0; pwr_oe3 <= 1'b0; pwr_oe4 <= 1'b0; end end -else -begin - pwr_hi <= 1'b0; - pwr_oe1 <= 1'b0; - pwr_oe2 <= 1'b0; - pwr_oe3 <= 1'b0; - pwr_oe4 <= ~ssp_dout; -end -end + // Then just divide the 13.56 MHz clock down to produce appropriate clocks // for the synchronous serial port. @@ -72,7 +62,7 @@ reg [6:0] hi_div_by_128; always @(posedge ck_1356meg) hi_div_by_128 <= hi_div_by_128 + 1; -assign ssp_clk = speed[1]? (speed[0]? hi_div_by_128[3]: hi_div_by_128[4]) : (speed[0]? hi_div_by_128[5]: hi_div_by_128[6]); +assign ssp_clk = hi_div_by_128[6]; reg [2:0] hi_byte_div; @@ -89,14 +79,13 @@ assign adc_clk = ck_1356meg; reg after_hysteresis; always @(negedge adc_clk) begin - if(& adc_d[7:4]) after_hysteresis <= 1'b1; + if(& adc_d[7:0]) after_hysteresis <= 1'b1; else if(~(| adc_d[7:0])) after_hysteresis <= 1'b0; end assign ssp_din = after_hysteresis; -assign pwr_lo = 1'b0; assign dbg = ssp_din; endmodule diff --git a/fpga/hi_sniffer.v b/fpga/hi_sniffer.v index 3d39413a3..3a989ce62 100644 --- a/fpga/hi_sniffer.v +++ b/fpga/hi_sniffer.v @@ -17,11 +17,8 @@ module hi_sniffer( output dbg; input xcorr_is_848, snoop, xcorr_quarter_freq; // not used. - -// let's try hi-pass - // We are only snooping, all off. -assign pwr_hi = ck_1356megb & xcorr_quarter_freq;//1'b0; +assign pwr_hi = 1'b0; assign pwr_lo = 1'b0; assign pwr_oe1 = 1'b0; assign pwr_oe2 = 1'b0; @@ -32,12 +29,8 @@ reg ssp_frame; reg [7:0] adc_d_out = 8'd0; reg [2:0] ssp_cnt = 3'd0; - -reg [12:0] avg=13'd0; - -assign adc_clk = ck_1356megb; -assign ssp_clk = ~ck_1356megb; - +assign adc_clk = ck_1356meg; +assign ssp_clk = ~ck_1356meg; always @(posedge ssp_clk) begin @@ -48,9 +41,7 @@ begin if(ssp_cnt[2:0] == 3'b000) // set frame length begin - // adc_d_out[7:0] <= (alias_buf>>>3) +8'd126;//( $signed(adc_d-adc_d_old)>1 | $signed(adc_d_old-adc_d)>1)? alias_buf+adc_d-adc_d_old:alias_buf; //alias_buf[11:3]+8'd126;//adc_d; - // adc_d_out[7:0]<=adc_d; - adc_d_out[7:0] <=adc_d;//-(avg>>3) +8'd126; + adc_d_out[7:0] <= adc_d; ssp_frame <= 1'b1; end else