From 1bc7d68af835d7004b41f39c6c98623b3584aca8 Mon Sep 17 00:00:00 2001 From: Ruige Lee <295054118@qq.com> Date: Sun, 18 Jun 2023 13:06:31 +0000 Subject: [PATCH] MIIM write out --- .metals/metals.lock.db | 6 + .metals/metals.mv.db | Bin 0 -> 626688 bytes .vscode/settings.json | 5 + src/main/scala/mac/MII.scala | 229 ++++++++++++++++++++++++++++++++++- 4 files changed, 237 insertions(+), 3 deletions(-) create mode 100644 .metals/metals.lock.db create mode 100644 .metals/metals.mv.db create mode 100644 .vscode/settings.json diff --git a/.metals/metals.lock.db b/.metals/metals.lock.db new file mode 100644 index 0000000..679ec4b --- /dev/null +++ b/.metals/metals.lock.db @@ -0,0 +1,6 @@ +#FileLock +#Sun Jun 18 13:05:58 UTC 2023 +server=localhost\:43909 +hostName=localhost +method=file +id=188ce9cbab0d7600f0e447af9df2123be91298d838e diff --git a/.metals/metals.mv.db b/.metals/metals.mv.db new file mode 100644 index 0000000000000000000000000000000000000000..caf42c48feeaa2def232facb119a8a8c17fadd2c GIT binary patch literal 626688 zcmeFaYmg*Yb{d<02}BBiB*w8N4k_)882gJH=EGeV{<$y7)Yc35_Z z;cz(QpOoYv{hf2~&AeHU?jFow0qmXvrn53D?;}s%=Q-c`&Xr3+cDFZZ-MLgP>n~f~ z??spVTrQVw?H~2;T=I+A)-VdkQTvi#skGYd(r&q$&vpjGgK&)0Z$!gUchIN%I=yJz z+K+~pDp9o)mO8n`jC@1_A_0+rNI)bY5)cW91VjQN0g-@6KqMd%c>g7EMfU&i|4Wb> zhy+9eA_0+rNI)bY5)cW91VjQN0g-@6;60Xrw()li1|Z1xB3SaX2jStRAjIL#OT|hq zdl>FTBPa@ngTeSxz6ESRE>|fO3)yk^AiC7@E1gOh;{ZC@@t}377!=h*{{T*Ku66GB zGEY33`BVEjckcWn3z_=4%*EvwUsP+o|L0MY!QVy(zxxXpz1mVU*xrhUfJCTvchnl-%Q5BgXI=?*cJvQB z@eha>{Ml-+htz6qwu48(ut=w+jtz2GLPWNKp$8Ri0-*#ss$b5mS7ZihbNq1+6F4%2N z)h-cTn`_r@6`acDD!*bR7o~=hL~?!wh@wPvsWHai#cy1@!o*mEM7dnCP%H*<%ySb@escpWxe*I;2ePdf)zj^g)c9Dj>rTWeFtE)S>>*eP5&dtsB zCDphxFUjJvr@nsi&owriwe6<5vAKQ?d8+R;UsX#tZq~1^HD ztIZqD>#NP{jaPTJHg0YpcV?+-9aa0TlRW(-&nk8C*Up(oZ`2xBnyXWlyS1_T zovkZP2y(`gYH?3L?g{cXuPDj()c5l(yr2K@%ZHuh z^v+Pb2YP2~OV8n*{pC~M*;XBIYyIWs*7lO8U(vPI;*3sU-o@5-ZTsfdlGuc+c+V=X! zbz84>WQZc0FE=-B!=TdQL{4$;@6GStSl?`NmE+1hkIL+v+?E?xHnxzv86Gw^uG(ri zS59cUi^~h2KwJC|&fFGDm5IhUqXKrYqS`Dkd=icCXXZ4%>BMJha;1qT=RE83iQ@xm zzwjvt_18~%!>M|0H8)>rZd$p{Zg!ImY^!;-iQ#;8$0VM91@60_*%B8%jTdwC%rB;z zKk3ETXIP@@FE2cack&;d<(=5-pK0($4N@Zkmv!R%K&2NxgZJ@=r@Rjy^C8V2uf^}d z>1OKX=Jn<#=DJl?e^sqE*J?MfZmZgsTE`@|y}tdb+G_s9P0VLaXWH0$b!)qM4ev+) zvXl3Npi*hpcZxx&yi*ABwViso(A-%Is?AzGpRcSI{H4j)d`e?L@A|Cz#>F?yOSEM@ za4qQ3^a!IcY;A6`_oY|M9 zywjX$M=9Aak=SWjvZdD6H@CKz7e0@s^u5`O05|2C`ZbEywe+Z*>8?DZt_xqlBVIjo zFFE<)bm#aYp6K4gdLk5fpM9dawD2W#iC;OTOKfl4xY~TBd39&&)ob-+*r&6}{kKKa zcM>ptYquTbJDu`F-%caLMP0t#QRJuh|Gab13V>5~47Td={@|fknA{1LGC!F)ckUdv zso&0I3ZLiWxqt9izw)(5p|n`(WHOJfJ@(7z&V42G7@hk$eem@m(1*M}6!f8}4<&sl z>qA8!s`?P>!>&HG^r5W}kv?>|d|g1GOAU1DAmpF&{I|$|OZ>OYe=GdA%71tHZ;Ss% z<$eh53acFO9L5R5?qvP!o#^;dr4wT3mMdi62z!@`(Jn^CN=K*b_S?~$E51KF-EO6t zYejiZ*AB~md$+xtDlb1fUAnxm75ddMm9FqE(^)5zlb4_*S?^ERGngY!r1Nvt z;{1A+XFp%Mp6+`$<;{^N$)%c`B^R9zS_!R|n|SZ-QY9>OX1za?E|{HeetEhd<>$yV z^?a3FemCFoALIVF<2JYaT(O2Z-|wWv`c+PT)Nc>24)#_i-+wFp^W@{SKEtU8hf#lf z81_eDYYZQ&(bLY5kee|An3{i+Z|eI zZ?*lXntBOtX=iHMx(h<#Q+#yg{JF1Xcqs00Q&`!#NOfP)mGJ%4St)f^ba3VL ztGH+RTWT=iV(T;*K;9B#>-_i=mvyk9u)m(Kf@^ZxF+ z-Sd9uTy(B{KB%4#!c1o2_~MT}lKH6BoEMFzykw45a}3Qf(X8LUCcQXE&Fbn{jV8UI z)zih@2_0)mtEWl9nadUYYSrpkgF+iqM50NbrL5kKmDNS9aShsmqjAl5e$D8EOQxdb z2~GO^ita+kt{0qnQ$wQ#uAm6EIF(UDDDKZ%LnyXkk@Cxxl&-)0w@eMIriL&_u<^^P z(`VFB8znkcmtLH(NyMsjYm*3yxx(4&S><}Rid9FDxsJ7+gr=Is(*>!k>BB^#wd%WR zt$JX!>Q!4$*iLqLV|lukl*D$DSolIM&x+r6E1I_!fO$rq*%p8YvhyUhYsKwxwq+-> z#*=xLooeX5Z(}@pNS2+XaPRY@%al`d!-px8BqJKemaQ1VE30Dbry-fL&9M#}z#u7kHej z7TZN*GHjJ{yzsJ206q^8LAA2`uvGxi06g|%kNvgG`OjxA=*1B z^FlGwTNHfJ3p)D3o5u^~aw`h+`O<}o*(1^y-VEz6*j4ct+9vTA+SlnX*vQZqUh2~q zUT$8fn7zscyBWU_2AyIM6)P9)PVhn$6iU%8w~r5_?8H6eH&@L5DQfeLbkkF7*faqB@Xd*vk>Tdx zuFcBcweYC!9+P*Ek<&{3cpTM+!|>RqdJif95C?tUgPhMl@*ZV;?mRL+%ln!X>g-p5 z?9OM-o$cQ9_jNDszK?v*o$=mB?xPNmoX6*k`7YqrN6vWfBJTaj8Smv5ws8Jj=A4@7 z65PnI4*GlVs(qiO1>9G&eqS;SCS-y(3bnu%Mi8KKphtMBjx8m&kfx1y)sqhVPX_d=Sp&I3j?Xa4UO08-u>g?uP#R!bz&&Ol(C{x8rGBcSc7C@gtc^CJ(%OJSVfMyplBZ zWHAIGwqG`GZf+9RCi!Io#1Oq1wT?(GJG6m~t28N%(NU`vjYdnV4tspFc0K-marr6O z&cZX>&R}&9*fIqdejl;Mz@}K_B}i+uP^#u^H%|caKgo7zqK8o!Azt zO9CL9#=b2JfNWyy6#$t5)CquWCd5<#WCoHb05SoP5n$Vb_XI!|%VPd2*TK0p-wyy8 z;AGQ))p*}v_B=Og+gHwT8$mW>w4$9wF>8DoYwp`~*4)nXYfR!Kwsi{pw#3D_3+#oj zVB7Hz=WIJB)1T>8pb~2vo6Yr?uahr@$3>n2qljdi&9x@>a*ZZ-@v#Sni;gsSM{KWF z0UUs%Azv#4skRX!sUgpL1=&Vp$ZLpjnvkR zUet_|Ph6D)C9EKTKQpJfOuS7-38%NJ6L-L$WxBn59Xqn`pEpI!*^#ZmGpD(U=efSU zWtAOg><6@}K0|jo1yOAJ-opkzujXM>uB}#fR*Tj8PNBJ0->LXPd1n>sm3&aImMUc^ zpPb&i1X%NbY`3pxz%`$(fO)uP_(dcz=X@}YbN&We$DcK??yNZHNw25$yPck=oX(1#k&n8*z_oL=^R-863pLUp zFMav{USOo~!nZSzzx0cM=X^VJ;SWCLB89*BUp*>FVT)&*i>RCePNfjPX8`e8b8IS| zAcX}f%y9!WR&+jc*C2icDa=4(K?*yK#)WNLM1>0m{lOrGzutaKkiyZ5!T+XUy}lrY zXCs9_`}N`DnTweVjQ@grkAVbFlWgc4Ium3Yk8942jv?L9r*J#s%M;`qzin`?@FCJ5 zFMJ`SYXOj4Lu*ki_$guw+yU>Ym;$EQwk#aQvVns6h7E?GV7?Dib<73>ELads(MKRh z3vI(!!s8Z7e%^%)=g5j1{B2X&c`!{Eq-iSoKp@Ra2D_%Q#0j3%sqbveX2;gl`p!+V zam=XcgK=@3p{lX#oeRv35ybPTIp){&-SKj8MQ5}D_{SK8;B1zT{P)evw{%2jKx8K* zMa&;!5!t736&d9C>F+)!Gjau*2V7TUAj|nuF8>6>A;D5o%I%u#xd5a{d>wtGRH>BA zbwGF9k@;R~7hCpwIfyD?8Oi(w0N~)#cn&RpO>>tC$F_U?G1-}8-`*?}a zY-U4)BQ`WR&tyLG+A9DDZX7CgS>0-khdqKaZH>d>c;|Hw;E1QyJ5!haW%c~?>ejG3 zjuhRlHV&g`j>b_75ulb~(}s(i+Kj?BG9Mp}P~v5^N#C8q z2=$2qQ@yueDpvK4;7&uJ>;Y2YW+6D5(78ES5p) zl74>5`Tnazk|k-=2NEY4k_d6>URpZ$Kt|Z9CXb}LBh~HW zVf9<1_J!x0&XolW;m*ra-Q`w1og1}Qr%Gt6(cXH$JN7zZZv zo|TwyaNg$C5HZk{cZ(l&G>V4kH(67^_*G6lH%cSnc-)|u-@>W6!0&70a9QbV%6*zk zm(_T9gs0%!O#-*wE0YuDW*-EJ_^WQNCgt0Fd|RzVkP24>?O}eYMtCN%le7B+<@vU4 zvE8w1437F^Fr&5TI8vSA;6UZnc%VvoGJJr%Q|WC;?G%E zY54ysd}g-h$$E+2!NdG$^#894`ak6%An5OHi`FpUxeTw*d@c-|m_LNTo zXXnQe9-j{ck54`w1i_GnJR}~UgjZ@dj}KGjFbz)N6O+HD$3cXEQZB{nZ{tIN>&V=5 z8imeZ0EG@ff?)bT_xG;zw&eViWLf)m=KPm_N*`&vf^%$F=!eWg{h#tt{)hxb0wMvC zfJi_jAQBJ>hy>0mfl2#&VnmOv|1I#I=A-wP|Ib20s}>nL1^?6#fYV@~w)!r{^C2Su zp4@-(A7zBV>Dc--PVnbU`R^JxMDu25xHSra69~S9z-ct^Z_0w*DG;_#?*m>z_{NeG-I0-%l+JjGNa5dbyE%vqvh3V{>Y zzjn^XNR)0@Lf{m0Ma||fnn9x^1WrQW^noXED*VV2IA#8e&;07SuU$L`JAWqg=$$qn zpZu5qnvc)?!uR=D{nHK~zjIe#zx^lrdhe(8`A`1ar}_7vFYDuP-P6av|9c(2{!bqN zJ|F++nm+!!zvFSJ1PYfxpGO{j{3B0X{P-t7{h7~w;Y(l1WG?@n_vg=l?UBrRxHDX= zJb!mEyfZos!5RMi=K5CSmFKS28qaOrT5nu=el%=7e-L*2&yQMRFT~f@^Z0Rv&o2JO zb4YXt#QqA`78kn*hXXjEwm=OZ_3|q_lNZ2T-h;>IVyg#NJW5gz;l>udIga{moDbSZ zJ@RUUuUmY_`bPYF9bwygk@l0*E`f`13tYUY%8eR=bOyO{zE<=LtE)MGbq(ZZrFt`0 z&DSbxOZWeT>+9wTf9Az^@r0)K>+9EMR-b%H587SmvoFJ6@bGBtsrq2h^Oo6(^xFEm zx)$~!)Ptx$)(+L{eLS#E*5YIvM`KENO0q_8(7F?+9Nb4roqv)P&e50E*$UNn!4Ejx z?M3{C5^>CU-}F9{8)nE0zrW4djE5ndF!lTIlGyM(x67Auuc_7U8{Kv^d;u5Y4}3Pw zWz`uB*%f+!Fhb*GnIKbk>ue1AeR!mkdo(#qv%sv|FjDCziJPPG{tlk(kQ{8=NT=W@m`D>lQj@+moeW2h= z93G%$E3ZFL`QW)-v`P5b^EJ0p`K zo)S4Sdxh5~4hy`}w)QQL+tt*w#&4IM>-7_(y3`{L!@!8D6TwTJGP%{*-n_b6+pZ~U zG^WLJFK!GD4#Iw$Is&)tsge>3j6|;KlH7teL7lm+>g(J0SIEsnJb8o)ZGLx$s)?TV z0t(TWF+XEsGQY$XRn+%z23e8RXlR)Gf!BN&j`;D12gBrX?8~NNCg(prF6$}9ayK{* z{oD)&eHy>-D6m{~2W^ZrXd76Uv|DP3<;Z9SGEJAiwcqW4Qvu%iNhPdI`2~$^Z!nY; zBTA4wI=wJdqNS&hsBK5IYwdxl<5ZFS$UA+ay@)?^m?|ufhGwc*QR`?iBXu-FIn?N} zVzQIgguvqNOixT}29wiH8&f!5>2<8PENey9C3)C+JpkKDLUIA34$G8aD?=+5WZ@ED zWRv{S=TKzaVrDiNQ>PhC?S!mnvCi;X>3*B$99g%cUU&?_YFRr{PP5mHhuytBw66Z1 z6>U5K?7WWZbAy6-xC@WG_{XfuXO&^J$l}diGHe@Gy4<;u1AV4);UBa7+sV1uk)AS| z%EkVOjDi#ElBRRvx2?OKXR`nYj*pd!^E|ZBLy_FL`L)okcCe0{BglWWl))j>i$Yq8 z9k+TQbD@4T0*lQ4aM165Pxm9v3$2NI$()y_324m7iB-U?IdzEE8jtQ)-0^$SIZU-^ z{Rm8@Gb2wsRG-3ZlrDsu2U>;^W%|b{SzcD}m=0&FoDBbv^F#-9s_Q%~mR@>FnOjfD zRr8YA&TV*1(v?%7AaTi9oSLM5afwOv5?yB==f=$@)sb-}0LzNL8@w`h4XIxXa(6gs zG_MS2X?hD9A?0Szg5@})bQLEup&jGA7Nu7oc7BE82Z`kh zG+0lkxrjhElwSkcQ2HI2dU5N~q*PRrf{F(_XX4`Of~V@xFps%Xu68TBjDlD>LZe~%1;3^IggX#&gd}G%2s$Z{9)yJYR!8tjyNt+ILo0FCX(44y z$T*Bb1j`)}52N`Y1EYaJ%THD8GKddLc`zSh2E+!0*h=FfOe$JsZ1Ez4<|3$$JoQS{ z@>C&f%q5sV(;SVoEHNqCQK#Eyrchd)?9wluRnul!SCviJL$N6zw^o*EUEdpoZEQh# zPpb7pc+BD8Xm6h%H@$LMp&2%*Ch_A!e5s|D=ULiE&k-^`J){hS&pqY6Gw%*iKjyHK zSzd|Ob<&#Bg*By1h7~dbc=U%($h6?mADlq6vpy?! zJL=gll+XxED;vOTic8M>PrlL*@uJU*znxGV3xTzfUhhL0UH7b-oi?D; zAG~&4N7tH=w6V=u!$V5aT3HTlCR=Q9)&l$Ueabs&`d;#N{zL1EuO!bq@#smLcA6%M zVa99VPNX~AsRcqqi)JyPoN#E80S

i&EE-3~v|JYOdCRjX7T{=fTEZ4JzdzS81%R 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 + val Divider = Wire( UInt(8.W) ) // Divider for the host clock // Divider (input clock will be divided by the Divider[7:0]) + + + val TempDivider = Mux( Divider < 2.U, 2.U, Divider ) // If smaller than 2 + val CounterPreset = ( TempDivider >> 1 ) - 1.U // We are counting half of period + + + // Counter counts half period + val Counter = RegInit( 1.U(8.W) ) + val Mdc = RegInit(false.B) // Output clock + val CountEq0 = Counter === 0.U + val MdcEn = CountEq0 & ~Mdc; // Enable signal is asserted for one Clk period before Mdc rises. + val MdcEn_n = CountEq0 & Mdc; // Enable signal is asserted for one Clk period before Mdc falls. + + when( CountEq0 ) { + Counter := CounterPreset + } .otherwise{ + Counter := Counter - 1.U } + + // Mdc is asserted every other half period + when(CountEq0) { + Mdc := ~Mdc + } + + +} + + +trait MIIMShiftReg{ this: MIIMBase => + + val ShiftReg = RegInit(0.U(8.W)) // Shift register for shifting the data in and out + val Prsd = RegInit(0.U(16.W)) + val LinkFail = RegInit(false.B) + + when(MdcEn_n){ + when(|ByteSelect) { + /* verilator lint_off CASEINCOMPLETE */ + ShiftReg := Mux1H(Seq( + ByteSelect === "h1".U -> Cat("b01".U(2.W), ~WriteOp, WriteOp, Fiad(4,1)), + ByteSelect === "h2".U -> Cat(Fiad.extract(0), Rgad(4,0), "b01".U(2.W)), + ByteSelect === "h4".U -> CtrlData(15,8), + ByteSelect === "h8".U -> CtrlData( 7,0), + )) + } .otherwise{ + ShiftReg := Cat(ShiftReg(6,0), Mdi) + when(LatchByte.extract(0)){ + Prsd := Cat(Prsd(15,8), ShiftReg(6,0), Mdi) + when(Rgad === 1.U){ + LinkFail := ~ShiftReg.extract(1) // this is bit [2], because it is not shifted yet + } + } .elsewhen(LatchByte.extract(1)){ + Prsd := Cat(ShiftReg(6:0), Mdi, Prsd(7,0)) + } + } + } + + val ShiftedBit = ShiftReg.extract(7) // This bit is output of the shift register and is connected to the Mdo signal + +} + +trait MIIMOutputCtl{ this: MIIMBase => + +// Generation of the Serial Enable signal (enables the serialization of the data) +val SerialEn = WriteOp & InProgress & ( BitCounter > 31.U | ( ( BitCounter === 0.U ) & NoPre ) ) + | ~WriteOp & InProgress & (( BitCounter > 31.U & BitCounter < 46.U ) | ( ( BitCounter === 0.U ) & NoPre )) + +val MdoEn = ShiftRegisters( SerialEn | InProgress & BitCounter<32.U, 3, false.B, en = MdcEn_n) +val Mdo_2d = RegEnable( ~SerialEn & BitCounter<32.U, false.B, MdcEn_n) +val Mdo_d = RegEnable( ShiftedBit | Mdo_2d, false.B, MdcEn_n) +val Mdo = RegEnable( Mdo_d, false.B, MdcEn_n) + + + + + + +} + + +trait MIIM { this: MIIMBase => + + + // Generation of the EndBusy signal. It is used for ending the MII Management operation. + val EndBusy_d = RegNext(false.B, ~InProgress_q2 & InProgress_q3) + val EndBusy = RegInit(false.B, EndBusy_d) + + + // Update MII RX_DATA register + val UpdateMIIRX_DATAReg = RegInit(false.B, EndBusy & ~WCtrlDataStart_q) // Updates MII RX_DATA register with read data + + + + + // Generation of the delayed signals used for positive edge triggering. + val WCtrlData_q = ShiftRegisters(WCtrlData, 3, false.B, en = true.B) + val RStat_q = ShiftRegisters(RStat, 3, false.B, en = true.B) + val ScanStat_q = ShiftRegisters(ScanStat, 2, false.B, en = true.B) + val SyncStatMdcEn = RegEnable(ScanStat_q(1), false.B, enable = MdcEn) // Scan Status operation delayed at least cycles and synchronized to MdcEn + + + + + + // Generation of the Start Commands (Write Control Data or Read Status) + val WCtrlDataStart = RegInit(false.B) // Start Write Control Data Command (positive edge detected) + val WCtrlDataStart_q = RegEnable(WCtrlDataStart, false.B, enable= ~EndBusy) + val RStatStart = RegInit(false.B) // Start Read Status Command (positive edge detected) + + when( EndBusy ){ + WCtrlDataStart := false.B + RStatStart := false.B + } .otherwise{ + when( WCtrlData_q(1) & ~WCtrlData_q(2) ){ + WCtrlDataStart := true.B + } + when(RStat_q(1) & ~RStat_q(2)){ + RStatStart := true.B + } + } + + + + // Generation of the Nvalid signal (indicates when the status is invalid) + val Nvalid = RegInit(false.B) + when( ~InProgress_q2 & InProgress_q3 ) { + Nvalid := false.B + } .elsewhen(ScanStat_q2 & ~SyncStatMdcEn) { + Nvalid := true.B + } + + + // Signals used for the generation of the Operation signals (positive edge) + + val WCtrlDataStart_q = ShiftRegisters(WCtrlDataStart, 2, false.B, en: MdcEn) // Start Write Control Data Command delayed 2 Mdc cycle + val RStatStart_q = ShiftRegisters(RStatStart, 2, false.B, en: MdcEn) // Start Read Status Command delayed 2 Mdc cycles + val InProgress_q = ShiftRegisters(InProgress, 3, false.B, en: MdcEn) // Operation in progress delayed 3 Mdc cycles + val LatchByte0 = ShiftRegisters(InProgress & ~WriteOp & BitCounter == "h3F".U, 2, false.B, MdcEn) // Latch Byte selects which part of Read Status Data is updated from the shift register + val LatchByte1 = ShiftRegisters(InProgress & ~WriteOp & BitCounter == "h37".U, 2, false.B, MdcEn) // Latch Byte selects which part of Read Status Data is updated from the shift register + val LatchByte = Cat( LatchByte1, LatchByte0 ) // Latch Byte selects which part of Read Status Data is updated from the shift register + + + + // Generation of the Operation signals + val WriteDataOp = WCtrlDataStart_q(0) & ~WCtrlDataStart_q(1) // Write Data Operation (positive edge detected) + val ReadStatusOp = RStatStart_q(0) & ~RStatStart_q(1) // Read Status Operation (positive edge detected) + val ScanStatusOp = SyncStatMdcEn & ~InProgress & ~InProgress_q(0) & ~InProgress_q(1) // Scan Status Operation (positive edge detected) + val StartOp = WriteDataOp | ReadStatusOp | ScanStatusOp // Start Operation (start of any of the preceding operations) + + // Busy + val Busy = WCtrlData | WCtrlDataStart | RStat | RStatStart | SyncStatMdcEn | EndBusy | InProgress | InProgress_q3 | Nvalid; + + + // Generation of the InProgress signal (indicates when an operation is in progress) + // Generation of the WriteOp signal (indicates when a write is in progress) + val InProgress = RegInit(false.B) // Operation in progress + val WriteOp = RegInit(false.B) // Write Operation Latch (When asserted, write operation is in progress) + + when(MdcEn){ + when(StartOp) { + InProgress := true.B + when( ~InProgress ){ + WriteOp := WriteDataOp + } + } .elsewhen(EndOp) { + InProgress := false.B + WriteOp := false.B + } + } + + // Bit Counter counts from 0 to 63 (from 32 to 63 when NoPre is asserted) + val BitCounter = RegInit( 0.U(7.W) ) // Bit Counter + + when( MdcEn ){ + when( InProgress ) { + when( NoPre & BitCounter === 0.U ) { + BitCounter := "h21".U + } .otherwise { + BitCounter := BitCounter + 1.U + } + } .otherwise { + BitCounter := 0.U + } + } + + // Operation ends when the Bit Counter reaches 63 + val EndOp = BitCounter === 63.U // End of Operation + val ByteSelect = Wire( Vec( 4, Bool() ) ) // Byte Select defines which byte (preamble, data, operation, etc.) is loaded and shifted through the shift register. + + ByteSelect(0) := InProgress & ((NoPre & (BitCounter === 0.U)) | (~NoPre & (BitCounter === "h20".U))); + ByteSelect(1) := InProgress & (BitCounter === "h28".U); + ByteSelect(2) := InProgress & WriteOp & (BitCounter === "h30".U); + ByteSelect(3) := InProgress & WriteOp & (BitCounter === "h38".U); + } \ No newline at end of file