From 2b4298c4fd150d7f0c1b5e9e763e30cfc6ad1e89 Mon Sep 17 00:00:00 2001 From: Gehstock Date: Sat, 24 Nov 2018 02:03:56 +0100 Subject: [PATCH] Code Update --- .../Centipede_MiST/Centipede.qsf | 42 +- .../Centipede(Sound needs some Resets).rbf | Bin 0 -> 250806 bytes .../Centipede_MiST/rtl/asteroids_pokey.vhd | 562 ++++++++++++++++++ .../Centipede_MiST/rtl/build_id.v | 2 +- .../Centipede_MiST/rtl/cent_top_mist.sv | 8 +- .../Centipede_MiST/rtl/centipede.v | 66 +- .../Atari-Hardware/Centipede_MiST/rtl/pll.v | 50 +- .../Centipede_MiST/rtl/video_mixer.sv | 17 +- .../Centipede_MiST/rtl/video_space.sv | 65 ++ 9 files changed, 763 insertions(+), 49 deletions(-) create mode 100644 Arcade_MiST/Atari-Hardware/Centipede_MiST/Snapshot/Centipede(Sound needs some Resets).rbf create mode 100644 Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/asteroids_pokey.vhd create mode 100644 Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/video_space.sv diff --git a/Arcade_MiST/Atari-Hardware/Centipede_MiST/Centipede.qsf b/Arcade_MiST/Atari-Hardware/Centipede_MiST/Centipede.qsf index 85e437f3..7c901b6e 100644 --- a/Arcade_MiST/Atari-Hardware/Centipede_MiST/Centipede.qsf +++ b/Arcade_MiST/Atari-Hardware/Centipede_MiST/Centipede.qsf @@ -148,7 +148,7 @@ set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" - # Incremental Compilation Assignments # =================================== -set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_NETLIST_TYPE POST_FIT -section_id Top set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top @@ -157,4 +157,44 @@ set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top # end ENTITY(cent_top_mist) # ------------------------- +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_L +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_R +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to CLOCK_27 +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to CONF_DATA0 +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to LED +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_DI +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_DO +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_SCK +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_SS2 +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_SS3 +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_B[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_B[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_B[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_B[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_B[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_B[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_G[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_G[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_G[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_G[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_G[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_G[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_HS +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_R[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_R[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_R[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_R[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_R[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_R[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to VGA_VS +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to altera_reserved_tck +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to altera_reserved_tdi +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to altera_reserved_tdo +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to altera_reserved_tms +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to auto_stp_external_clock_0 +set_global_assignment -name USE_SIGNALTAP_FILE stp1.stp +set_global_assignment -name SLD_FILE "C:/Users/Harry Pothead/Desktop/Centipede_MiST/stp1_auto_stripped.stp" +set_global_assignment -name VHDL_FILE rtl/asteroids_pokey.vhd +set_global_assignment -name SYSTEMVERILOG_FILE rtl/video_space.sv set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Arcade_MiST/Atari-Hardware/Centipede_MiST/Snapshot/Centipede(Sound needs some Resets).rbf b/Arcade_MiST/Atari-Hardware/Centipede_MiST/Snapshot/Centipede(Sound needs some Resets).rbf new file mode 100644 index 0000000000000000000000000000000000000000..25c27580013f9c0118980c4a8c4b81455713337e GIT binary patch literal 250806 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

|tW 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

Co(z*r7}P_`!X9N|!GAtvk{!n_fw7 z@|g!B9&|DFmEBQtNqg#ZyH}!ejo_biz^8+1JoiE>et7p~?dF%`5pg%vdo%9RY3jY> z;)t}%<>UPaSUVqor4LNl+P}B?A6_ofX53}%>lUHyP3}1LMuZ6-$cB3LhpPQwb$+5G zc!OJ&`B|sJU;>g1zO)P_O9U7#Me(+In{a!!EX*l6@n!;0*O;IB8x}4|KLJHO6tlvr zA(6%YA1_%GX|P(L!1&XN<#o)SaEJrU93DnjOg~a?eggzhN^F4^KRuvzhT}RndvH+q zJuJZ6b{o<}?vW^AV@<>uLiHI(5v#LU3Pog1ei5etnj{QC6mS@h(rqh1=cGE)I<&@& ztcUGo@fDu%LXMLG=prfMWYy;Aii@o2Fb;h`L)&|W zhor}w?5`lY;B;RjpO}RmK)R@ORF7l5kC)6L^J*O`2VeP5pd~h9YJ{K-Lt&lh2Zs>QDUv9|o-UFI^b-13 zTEB|{fZ}{5QEfE7=gPSPs-ze6Sp%~7BL zR5Dx$SA`fF?p1?BVItfRhte6CWn|qcx!T~dUq?z%*+T_U!oGmsv5hunAC0GW0z^C-2Uw!q~?9!DzFR-qlm+nCc) zkUKtEqM5KK)e+9RB3ogks&{5m&RI?Z(AIg3Z+m?yzWu4q;2+=uE>Ns0hNOkgAe5=Px~~f@^c^I>|BY)&s-5v1t9!~#}rS$(k)o3ETazfdlFC@ z1wc>aad4<36)4L_Cl}Lz5qA)UP#!y6xl%5%RZAt{D zmwoVF#Oj-#NVtrl$v$DFSg98=q6$~!6)<`S55K2T{^6>2L!>cuY-?lHaH`rerTvsH zQCLRRSd5ipqXZkz7TWW^*Cid?F87jFeS6!_w~;4dhVnp&HcCi!Q(-KDv$SI{l7a`H z=HwhZC~I@tz?Ss-*Ys-pN^VE|Mq(IlXic`)KL7o0{&UO#4B`aa8uz*hl?hv+f`4N@ z4Cv(CcAf>GWs({j3XquZRp#1E8hviEC_?}{40Y$B_6PNwB%jz_(&h~AAxR;2AHocj zwVyU8wNp zHy<#!G$+Tn{X;cmhVz{pHbj|1;O#cM7{E`4oKe@h@i)V zP;Q%BNZ9?cG`4H8yg0vaDJ+d2Y)$k0MI}XAmP(3aGD$vUhQ zB%kmF<$ruDdcZb+_@%KeSLhatLyI@Ewfl`VwgT{U#pPSx)=Va<X5fVBQ^54&zp1z-7813$QZI53Aq90sqK9fUHK#S#A?$DWU=a}jSX9goMv z8I~#sZ+%JSN=6aGfj|c{5z({JZsupm5oLol&SkgRl!Uni>Ou7asY30bsD*$eVSFbT z4P|gp9E^l^JZL{h%PS|RqzRNIrOV&Poorx>x5C}^WN>1>>0AjNwqB6kQeF#wlKaqs zSfoiSB1r}w^K;ZPhA3x5Q+gmL$A_FKFq^}wS}u*gn`By+L>F5cTIEBDrD&c>&ttC~ zrV@if9psL&BmhHFS*inIT#;GEqDo8X5vGd(NPzDa(wZG?$9$;D@nw3(rvqN(k;c>JN&r5ex;1Qz@;f{%eTG8@75Ys~r*yGgQ1f6WM zAd464HvceTLQ#pNXo?;=5a-F$y49j_Gvt*5HxQA$1-T|VVIH(ORt!s>)$AwliOb&3Ye3?_y^|Zy*Q*f0E+$hl zELvOkX)o4gB-^5h} zTb!N<-lbDZ`Vzml$K#E$Uyagr+_f;i{CDqkZx<=4XQ#WZsd^SKy=Sz@L}N<4 zygr#hdz;Npyt9d$b(ehdT^`2~+}x1tw0@Gi37{Zvy`~;y|;Fdf=p@Y!8;sH>MQ0 zb7Os69qhaXW@tscwrw`XsA31yF6WIv&^#!J3062WEoHdd7cHO_*lMWA-QJ%8EH-@n z={Lej*8?Hov+foJ71JlVYh<9fj&Jp@06$g>Bw;38XeZnV8zs^Gm)7$ z+DE?k*Wg3!dR&A135eqVDrOV=h@!|BBqSs1JZv-S;Z8E^qGhU=0=(}%dV;&k>=St@ ziv1&{!qc!c>FN}-BMAzQ|k-6Mcb{ zNr+B^$T%;-!w`V;Nih!Av9~+F1#m^dGzBr>q9!m$umMR6rYUhefTAe_CH5)*1kga{ zmzq(k!<5><*G8reahAW~UtFMySpg_OC1F$OoHg1k;N(f(1ZqA>Odcv$n8g` zq#%(qgD>)&1Dt;Rb2bB6(U*t~>YrFo>MRu(AqjCXWTbYcLxyRFe_*UZ;SQ%xDLwSF z7c~g0SVM-T3X&yqL8dt+bfqJ%;MNE?AA=T~dQd#Mh5S&rq#ulISx;vfTDz5fa5;LZ z_MuSOs6s`1sD*4@;(aC%ZjPCZ5@P%$tIU#cTY_Ssz#VOLr#0Y>Lvj;1AWj+hpP>Pb z)DwS+9dHVSq?+N#2%>>yO6XHh*TBB8P)-I@?QtP7nqU~n)&w57HhAz4tWSCfk_U%i z@QgHN%ox487>YoEC5^>Tyj&Xv977941d8-54pp!60FxPO#}Jo7WQAcWjb-Wwk^xV2 z$T6TL2YzI@LWA)>Z<>D({*U)?m?9bsxRMy4D{dG^R0$A_1VJ^Ca|M}VXYk&owW3~h zWcq94N?o!QtxiuHz}gvY0Ge5cEe(yLOKs3QRGx#hXTF$`w8Lt7|%>a zixMmkV=}s{`o;yZBgT7HS;yXea z-}n8nEl!F@fn-;i8RuCr*xp9z>fhQtS7vQK3%rTz;W9PEh=~8t#hh#LxK$B5r6tr^ znGwjVu+$8rN&V$SIlx>MxQpf&27)3 z{e9fRK`=Llog{Xg9$zfEi)U1gP+X4(^ekilE_*?$JVkg9kE7+;0@cr65bCz>qe0F<4`&#Q(uJKZFufCslYwAg6d2fO7;mNyId#2N2>S;SVqn z5(_>JSc^-1W z|6Mno-@xpG3A~liFgs)ps0D7~HSO$9340Qk_E79d-Qd6c zBBT<*;v_J@BqpV0dK@qbJ_5aoc8NfR@)IP4qz0Dq;UFdQp9>MXf^iZSS}Z~&Xj<8@ zvj|^XSm*(T4@YPqcXcdwcpZq>mZ7~IxW_+qP74vbP8_+UHWP9ohp$BjY(e49g%%s3 z`eJ?doIfR2x_UewQn%~d4^js`NFwd0hzYQrTOxwS*&)6+8*ekKB4f6B2qiLQ`*;xG zjl5N3LJ$7n{+h(_WB9H-_K(i{muU#t-5E_HU^#2-O-;!JAXMF$!4SBMfr;HB zpq`BO#VFid%6%Ily^s>WoBQe6<<5MN-F!m$-UEOTtGb;pz7S7?*j-{wNlc6)ar7kW zl+b2w=70`u?@&_0Oq+L|5mdJRcJCsMMbR(<1QcnbD=}C_d)QNlsjTPqdg! ztI2L=Z)^~w&&BkQ=_P(4W=9ivT%UYpfstb_L!lcD5;fCvaug$k^(eKL#_Fq4B8Vf@ z*CcxJ*S~#{mP1^FM8VxNv74p~MRdvvMLkW?%s;W_6IzDSjEI^8Lcov-j?B^sc-95l z$R)>}=Yvn(iFXt6!%)aTFdPL?K4dtJ-^-oOi7sYLCJb3QDNg6du z%_C2JMCXA5o{ZR7zX;y-Em-y&ozD#;hm&5W-m>oaY*3FxM(F z0&$D7Rg394;KyZtLX8iIOAMhi?Eg3aA)t&bxyupHrgLr<(K;T)4q(nnt?@Pqc$s`7 zCc(s$sP@`fgN~UlDJ|nYQQV}hVOci{hQ%P08OO03eCUIQHp~#-?iy6dN^C3xNeMy# zn-Qq8E@)o{0rMx;sUVSzIYu65W43z!1dpXKsNst~M3=@Vhf21=eUCHG?7{_{SW^K! zR@7G(pI#*DL~^iB3SU25vLC~bPSh$_HZAfSpaQQj$dDmn0c(L~CuQD&7k=uLit2$g zoICP!-wJgzsT!t%385;VNoxGFb_&cX`Vf#rKMEyihM$Q>WU)x| zLh;$RhT+OGc>L|*#Iap+-i9H3(^$^%_j1m`z8Hr+n5$t%dOPrRO;7f3{vjC8Z4vX0OU0)o##(J*X4S3#Zl9AnGW#(!8tp$6xLg8Re6`UD~dLGW{G z)NzwZh3*B5Yu@#=uZt{#*5nnIrox>m;yy6LqxiVL{K0F>JR_hT zUAM@3SRZQ-dlwe-NAYpf!A!T@+!|?5uvPKUC8ri^Ut z3LGH{R{{cL#q&^98@+Xjk}Bmmyg&%18yJusN8w_~HgSveca~Tw4s_W@b&$6If?~kv zkZ+6-&bJ@IJaK1X`Q3W7cnl)|hMLTnEZ_f$7f2m*JmI58D%u0?aMC^@jP3|c>^^ZO z^d4cTo-n9ZP@p6`J4O%`tEp&`mJ$JCo!JP`c)*nZ#`{E<8u8y`rJspo!E@LbT%|Wz zGs%k6tg_RELP?-#xG}ycS_0QM#m1XXdUw^kw2q8nKmh?t6;VKZiN>QR!+s1lnm`jV03P?y7SQjOFe55-jSrCEJWZ#fBrULO+oaAHI|8rqqm+F#^JyhPs zZ22dGJ>c~zPt374Y@ry-B=>SJJ4pt%ep7XNq8XkENX)MouV1#__ivtS1GXr*lgxTrB$b%j+PJQBOYZeli; z*VJpcPXMSiwJRYqmQG55V-ez9nNSy`G#pICXB zUxT}T=$Lb-eZsc=BXm^KI=1PbLv%yQWljr2)I|l$!vJR?mK9ie$eN2NxC+!`wI&Ig zteR+^exwh7-zFNM3(A`A zeEkd6EXl6`P(>)K$6*Vr0mM)dh-N^u85L9mwp37gc;W)4c@A)3iqH$-tX>W-`*HM_ z8F8<(mGVtLd%j%`{fC+vuHna8J_lDF$($v~EI>RKzms+$pCb71mGUqBf*2wICix7T zOeHcN2v`D3@PmRn5KwyaWNkY_fdb>ND2J_sKl;tWmF%#9^syIDa%S-At4weK&m#Ya zwCe!>OZRUWJyNnXM9mf*4xt;8`URp7U-H7?`5ZR@NiQ?y99|9wrYR_3p#*ptRR5?_ zayF{OGr<%vA$L-l6yOaHJx8hg_`5D>7)U!W4>coyjqrk|H%mLeat)!TeZINJfBMJ)$@H)G_|==T@WH@`j~vg!sZ%;k z2m3!@*pb$;1~Q5WMPK3OkW&JaRbtkFYSv7b>%U|p)xxR(E?8YEBB-I%PYJlx#x#5I z-zGYmFBC}?3YKi;iNdv$9*$qV_gr||C|!?RIDQQg69JVXCbCo^p2BnFW^P=jaUvmS zfslKZKj0zK8uFw80Xiotvx;d(ks(A%;GN9!M(3R zuOJ#99VBHfrEtaI=M<4tV8i4lsDs+~85{*0b^v_omi`C>)>Le`qGmh)?gGLLh*r45 zb}{(bBGhAE1f(X%5XP(lwzt@iWjUU^{<^Uiw-~cZ1GsH779`oO(g>YWw+gk;o#Ap( zA%K8jG;O7GzM`sLokd)!z$tY*|NI;nPd_mI=w@*-tT_GywO8r)(2ty-MITy+f-SbC zR^tNQu^8jDC>Vw*-qqgvx{bZ2r?%I04XSv;sJ((t3|uKM#75yKRpLV5g$M}GM! zR6l8zlTf)rKTZv^Kg9sAQ#lD@YwzI{*?&raHxN4|HWey8pEy=XJD!$*u);6N-2zv? zM@e&Dh-v|Od?$QX5s)A1^;PH_2|{lzI`>IAh` zIh`B#L)Ta|v`Xz$yZrpovQy*7>b0IX9BYg+cB^ycWHoAor~bpquCMLdXk4zX-SKKa zZ)ABq;!o>bZRd;FMZ8XBJ=xz}{@^|9rm=4Dl7HV>FZFlh-}pIY4UWl~$!}O=n(Y*t z?0o;(J3FkKfSx}l1syr#Y}WC;)tjbD&rRUXicYWgQbnD#nMaS07HInao908x^DcHYmI_4gKXk9bn>*t{# z`dF!{b@EeQ?mh)S9H;B}i|WhY{rYJN<2cRMdw8syu%9mm1-;QG)zexImKM1a`rw0$ zd8om&2zxr&-f_#S8qL6s$D%F3o2h^^$u>c7^T zW9v1gHcOZPvYu$WK4m>~uNzMKnq_jF{YYzuF>HV=k7MSBm)CZ%-k238nzbRaqILxr ztFrv4O(xHNBKa@9|izBc3~P*>A6pX;oKRqC9yy6~q)s@W2x{xb$D09N1c}uD3h3mcCC^w^;SM$4}PwRFrJke(+7Z&t&-f zj1JaO%bKNk<#&Ib5lW%)IwI!Q+Y4C-@&bsn60vMtt{aihizsQl^3Yp0a_Mf|y|cS+ zic>o@@%&hvYd)Ll?&mJ>jlC}a-S)biwKlr4{DZx9Gbm>*mFtKYv-ig?UaxfN34op4 zWj~3yo_=tBLI-v6tou$%y`5Hh{8Q`2|3KwNB7IF_c-9qTP1qDFpOuK2mhXJgx@zqD zWN8hvM?dp|bz76IJoX!UhU&(4mm9NZKooTIbPqSSyPWAxl8x;ydi?m`-^Y%x*X+&9 zeb3@;gr{pij%jyRPLjfM1F>UdwaSSNj;+F=V=ixS>=>4;a$=9+P~TfM#pn^2g6)*qq=AmyqZ1F@>&WX&9Z7QtgbwKgZL^|7yn_qLs|!Wu3NS+<5YC#;%NdBO^7xbVC{?0IuT*BS)BO4SV= zTZKU@F6$=i!3WprhM{!@24Z$A)5ZoDrMxy=^c8Bm>JM1<+}+`lzfh1DZHAYYpZxKU z9d5fi#j3TZ_ioyFj>~G#aaosyg;cb;{KtA<@H!QAdU0Jq$@?9D=GWIJ>VGzFhdOmC zS9=b~;7yO6Io3|FUk=)q}~!N301(`t9zM(Zfdjpw)= zm%}GJdDcd6XZ34~PR7x-U0X-(cjG%R9%J2q<1W#SwYjw^p*9DhIA@+SKkgl+&)wTZ zo6EmEv$5A@wM_cDg~aace2}fi(&|rJT*HW4Pn&<%&fm{AV#x^^J`6?T6I6NTuk^6R zGuuou1pSh)4-e1y;5dqLA{vNkqpZIZRk`7>$Va4Sj8p({)1Qns&onljA<#!Zus$KL z&{&~oTh9=&!S=mF2&*nl4fSl;?f+jcI7#cZU0T7jwKYAq zc2Q~1l>hE+uRpef(>+r}>~vw|?TQ>*RWX{id}!v)kNQ6J)R~T;5kO&95xBc&H7=)h zC1fvVbcjSuvvMO*DO0)XoonpII?SqyN}H&mQ=Zky-3<>M>JMiBiYwjUob_8jSFd)< z^IK~#+RCMQvIdZNKcHLD8~oPYQ>FQ&J?plVhJ-ik<>@J>My;r`^;gE{7hQYy<(oKd zy}cpoOqK3mY|qYY-BRi<&MZzpu+>exww}c9{&6>--2dj!{sDCxo4l)(yJft}yaZYr z5vkTr '0'); + signal ena_64k : std_logic; + signal cnt_15k : std_logic_vector(6 downto 0) := (others => '0'); + signal ena_15k : std_logic; + -- + signal poly4 : std_logic_vector(3 downto 0) := (others => '0'); + signal poly5 : std_logic_vector(4 downto 0) := (others => '0'); + signal poly9 : std_logic_vector(8 downto 0) := (others => '0'); + signal poly17 : std_logic_vector(16 downto 0) := (others => '0'); + signal poly_17_9 : std_logic; + + -- registers + signal audf : array_4x8 := (x"00",x"00",x"00",x"00"); + signal audc : array_4x8 := (x"00",x"00",x"00",x"00"); + signal audctl : std_logic_vector(7 downto 0) := "00000000"; + signal stimer : std_logic_vector(7 downto 0); + signal skres : std_logic_vector(7 downto 0); + signal potgo : std_logic; + signal serout : std_logic_vector(7 downto 0); + signal irqen : std_logic_vector(7 downto 0); + signal skctls : std_logic_vector(7 downto 0); + signal reset : std_logic; + -- + signal kbcode : std_logic_vector(7 downto 0); + signal random : std_logic_vector(7 downto 0); + signal serin : std_logic_vector(7 downto 0); + signal irqst : std_logic_vector(7 downto 0); + signal skstat : std_logic_vector(7 downto 0); + -- + signal pot_fin : std_logic; + signal pot_cnt : std_logic_vector(7 downto 0); + signal pot_val : array_8x8; + signal pin_reg : std_logic_vector(7 downto 0); + signal pin_reg_gated : std_logic_vector(7 downto 0); + -- + signal chan_ena : std_logic_vector(4 downto 1); + signal tone_gen_div : std_logic_vector(4 downto 1); + signal tone_gen_cnt : array_4x8 := (others => (others => '0')); + signal tone_gen_div_mux : std_logic_vector(4 downto 1); + signal tone_gen_zero : std_logic_vector(4 downto 1); + signal tone_gen_zero_t : array_4x8 := (others => (others => '0')); + signal chan_done_load : std_logic_vector(4 downto 1) := (others => '0'); + -- + signal poly_sel : std_logic_vector(4 downto 1); + signal poly_sel_hp : std_logic_vector(4 downto 1); + signal poly_sel_hp_t1 : std_logic_vector(4 downto 1); + signal poly_sel_hp_reg : std_logic_vector(4 downto 1); + signal tone_gen_final : std_logic_vector(4 downto 1) := (others => '0'); +begin + + p_we : process(RW_L, CS_L, CS, ENA) + begin + we <= (not CS_L) and CS and (not RW_L) and ENA; + end process; + + p_oe : process(RW_L, CS_L, CS) + begin + oe <= (not CS_L) and CS and RW_L; + end process; + DOUT_OE_L <= not oe; + + p_ipreg : process + begin + wait until rising_edge(CLK); + -- in asteroids, these are dip switches + pin_reg <= PIN; + end process; + + p_dividers : process + begin + wait until rising_edge(CLK); + if (ENA = '1') then + ena_64k <= '0'; + if cnt_64k = "00000" then + cnt_64k <= "11011"; -- 28 - 1 + ena_64k <= '1'; + else + cnt_64k <= cnt_64k - "1"; + end if; + + ena_15k <= '0'; + if cnt_15k = "0000000" then + cnt_15k <= "1110001"; -- 114 - 1 + ena_15k <= '1'; + else + cnt_15k <= cnt_15k - "1"; + end if; + end if; + end process; + + p_ena_64k_15k : process(ena_64k, ena_15k, audctl) + begin + if (audctl(0) = '1') then + ena_64k_15k <= ena_15k; + else + ena_64k_15k <= ena_64k; + end if; + end process; + + p_poly : process + variable poly9_zero : std_logic; + variable poly17_zero : std_logic; + begin + wait until rising_edge(CLK); + if (ENA = '1') then + poly4 <= poly4(2 downto 0) & not (poly4(3) xor poly4(2)); + poly5 <= poly5(3 downto 0) & not (poly5(4) xor poly4(2)); -- used inverted + + -- not correct + poly9_zero := '0'; + if (poly9 = "000000000") then poly9_zero := '1'; end if; + poly9 <= poly9(7 downto 0) & (poly9(8) xor poly9(3) xor poly9_zero); + + poly17_zero := '0'; + if (poly17 = "00000000000000000") then poly17_zero := '1'; end if; + poly17 <= poly17(15 downto 0) & (poly17(16) xor poly17(2) xor poly17_zero); + + end if; + end process; + + p_random_mux : process(audctl, poly9, poly17) + begin + -- bit unnecessary this .... + for i in 0 to 7 loop + if (audctl(7) = '1') then -- 9 bit poly + random(i) <= poly9(8-i); + else + random(i) <= poly17(16-i); + end if; + end loop; + + if (audctl(7) = '1') then + poly_17_9 <= poly9(8); + else + poly_17_9 <= poly17(16); + end if; + end process; + + p_wdata : process + begin + wait until rising_edge(CLK); + potgo <= '0'; + + --if (reset = '1') then + -- no idea what the reset state is + --audf <= (others => (others => '0')); + --audc <= (others => (others => '0')); + --audctl <= x"00"; + --else + if (we = '1') then + case ADDR is + when x"0" => audf(1) <= DIN; + when x"1" => audc(1) <= DIN; + when x"2" => audf(2) <= DIN; + when x"3" => audc(2) <= DIN; + when x"4" => audf(3) <= DIN; + when x"5" => audc(3) <= DIN; + when x"6" => audf(4) <= DIN; + when x"7" => audc(4) <= DIN; + when x"8" => audctl <= DIN; + when x"9" => stimer <= DIN; + when x"A" => skres <= DIN; + when x"B" => potgo <= '1'; + --when x"C" => + when x"D" => serout <= DIN; + when x"E" => irqen <= DIN; + when x"F" => skctls <= DIN; + when others => null; + end case; + end if; + --end if; + end process; + + p_reset : process(skctls) + begin + -- chip in reset if bits 1..0 of skctls are both zero + reset <= '0'; + if (skctls(1 downto 0) = "00") then + reset <= '1'; + end if; + end process; + + p_rdata : process(oe, ADDR, pot_val, pin_reg_gated, kbcode, random, serin, irqst, skstat) + begin + DOUT <= x"00"; + if (oe = '1') then -- keep things quiet + case ADDR IS + when x"0" => DOUT <= pot_val(0); -- pot 0 + when x"1" => DOUT <= pot_val(1); -- pot 1 + when x"2" => DOUT <= pot_val(2); -- pot 2 + when x"3" => DOUT <= pot_val(3); -- pot 3 + when x"4" => DOUT <= pot_val(4); -- pot 4 + when x"5" => DOUT <= pot_val(5); -- pot 5 + when x"6" => DOUT <= pot_val(6); -- pot 6 + when x"7" => DOUT <= pot_val(7); -- pot 7 + when x"8" => DOUT <= pin_reg_gated;-- allpot + when x"9" => DOUT <= kbcode; + when x"A" => DOUT <= random; + when x"B" => DOUT <= x"FF"; + when x"C" => DOUT <= x"FF"; + when x"D" => DOUT <= serin; + when x"E" => DOUT <= irqst; + when x"F" => DOUT <= skstat; + when others => null; + end case; + end if; + end process; + + -- POT ANALOGUE IN UNTESTED !! + p_pot_cnt : process + begin + wait until rising_edge(CLK); + if (potgo = '1') then + pot_cnt <= x"00"; + elsif ((ena_15k = '1') or (skctls(2) = '1')) and (ENA = '1') then -- fast scan mode + pot_cnt <= pot_cnt + "1"; + end if; + end process; + + p_pot_comp : process + begin + wait until rising_edge(CLK); + if (reset = '1') then + pot_fin <= '1'; + else + if (potgo = '1') then + pot_fin <= '0'; + elsif (pot_cnt = x"E4") then -- 228 + pot_fin <= '1'; + end if; + end if; + end process; + + p_pot_val : process + begin + wait until rising_edge(CLK); + for i in 0 to 7 loop + if (pot_fin = '0') and (pin_reg(i) = '0') then + -- continue latching counter value until input reaches ViH threshold + pot_val(i) <= pot_cnt; + end if; + end loop; + end process; + + -- dump transistors + --PIN <= x"00" when (pot_fin = '1') else (others => 'Z'); + p_in_gate : process(pin_reg, reset) -- dump transistor fakeup + begin + pin_reg_gated <= pin_reg; + -- I think the datasheet lies about dump transistors being disabled + -- in fast scan mode, as the self test fails .... + if (reset = '1') or (pot_fin = '1') then --and (skctls(2) = '0')) + pin_reg_gated <= x"00"; + end if; + end process; + + p_tone_cnt_ena : process(audctl, ena_64k_15k, tone_gen_div) + variable chan_ena1, chan_ena3 : std_ulogic; + begin + + if (audctl(6) = '1') then + chan_ena1 := '1'; -- 1.5 MHz, + else + chan_ena1 := ena_64k_15k; + end if; + chan_ena(1) <= chan_ena1; + + if (audctl(4) = '1') then -- chan 1/2 joined + chan_ena(2) <= chan_ena1; + else + chan_ena(2) <= ena_64k_15k; + end if; + + if (audctl(5) = '1') then + chan_ena3 := '1'; -- 1.5 MHz, + else + chan_ena3 := ena_64k_15k; -- 64 KHz + end if; + chan_ena(3) <= chan_ena3; + + if (audctl(3) = '1') then -- chan 3/4 joined + chan_ena(4) <= chan_ena3; + else + chan_ena(4) <= ena_64k_15k; -- 64 KHz + end if; + end process; + + p_tone_generator_zero : process(tone_gen_cnt, chan_ena) + begin + for i in 1 to 4 loop + if (tone_gen_cnt(i) = "00000000") and (chan_ena(i) = '1') then + tone_gen_zero(i) <= '1'; + else + tone_gen_zero(i) <= '0'; + end if; + end loop; + end process; + + p_tone_generators : process + variable chan_load : std_logic_vector(4 downto 1); + variable chan_dec : std_logic_vector(4 downto 1); + begin + -- quite tricky this .. but I think it does the correct stuff + -- bet this is not how is was done originally ! + -- + -- nasty frig to easily get exact chip behaviour in high speed mode + -- fout = fin / 2(audf + n) when n=4 or 7 in 16 bit mode + wait until rising_edge(CLK); + if (ENA = '1') then + tone_gen_div <= "0000"; + + if (audctl(4) = '1') then -- chan 1/2 joined + chan_load(1) := '0'; + chan_load(2) := '0'; + if (tone_gen_zero_t(1)(5) = '1') and (tone_gen_zero_t(2)(5) = '1') and (chan_done_load(1) = '0') then + chan_load(1) := '1'; + chan_load(2) := '1'; + end if; + chan_dec(1) := '1'; + chan_dec(2) := tone_gen_zero(1); + else + chan_load(1) := tone_gen_zero_t(1)(2) and not chan_done_load(1); + chan_load(2) := tone_gen_zero_t(2)(2) and not chan_done_load(2); + + chan_dec(1) := '1'; + chan_dec(2) := '1'; + end if; + + if (audctl(3) = '1') then -- chan 1/2 joined + chan_load(3) := '0'; + chan_load(4) := '0'; + if (tone_gen_zero_t(3)(5) = '1') and (tone_gen_zero_t(4)(5) = '1') and (chan_done_load(3) = '0') then + chan_load(3) := '1'; + chan_load(4) := '1'; + end if; + chan_dec(3) := '1'; + chan_dec(4) := tone_gen_zero(3); + else + chan_load(3) := tone_gen_zero_t(3)(2) and not chan_done_load(3); + chan_load(4) := tone_gen_zero_t(4)(2) and not chan_done_load(4); + + chan_dec(3) := '1'; + chan_dec(4) := '1'; + end if; + + for i in 1 to 4 loop + + if (chan_load(i) = '1') then + chan_done_load(i) <= '1'; + tone_gen_div(i) <= '1'; + tone_gen_cnt(i) <= audf(i); + elsif (chan_dec(i) = '1') and (chan_ena(i) = '1') then + chan_done_load(i) <= '0'; + tone_gen_cnt(i) <= tone_gen_cnt(i) - "1"; + end if; + + tone_gen_div(i) <= chan_load(i); + tone_gen_zero_t(i)(7 downto 0) <= tone_gen_zero_t(i)(6 downto 0) & tone_gen_zero(i); + end loop; + + end if; + end process; + + p_tone_generator_mux : process(audctl, tone_gen_div) + begin + if (audctl(4) = '1') then -- chan 1/2 joined + tone_gen_div_mux(1) <= tone_gen_div(1); -- do they both waggle + tone_gen_div_mux(2) <= tone_gen_div(2); -- or do I mute chan 1? + else + tone_gen_div_mux(1) <= tone_gen_div(1); + tone_gen_div_mux(2) <= tone_gen_div(2); + end if; + + if (audctl(3) = '1') then -- chan 3/4 joined + tone_gen_div_mux(3) <= tone_gen_div(3); -- ditto + tone_gen_div_mux(4) <= tone_gen_div(4); + else + tone_gen_div_mux(3) <= tone_gen_div(3); + tone_gen_div_mux(4) <= tone_gen_div(4); + end if; + end process; + + p_poly_gating : process(audc, poly4, poly5, poly_17_9, tone_gen_div_mux) + variable filter_a : std_logic_vector(4 downto 1); + variable filter_b : std_logic_vector(4 downto 1); + begin + for i in 1 to 4 loop + if (audc(i)(7) = '0') then + filter_a(i) := poly5(4) and tone_gen_div_mux(i);-- 5 bit poly + else + filter_a(i) := tone_gen_div_mux(i); + end if; + + if (audc(i)(6) = '0') then + filter_b(i) := poly_17_9 and filter_a(i);-- 17 bit poly + else + filter_b(i) := poly4(3) and filter_a(i);-- 4 bit poly + end if; + + if (audc(i)(5) = '0') then + poly_sel(i) <= filter_b(i); + else + poly_sel(i) <= filter_a(i); + end if; + end loop; + end process; + + p_high_pass_filters : process(audctl, poly_sel, poly_sel_hp_reg) + begin + poly_sel_hp <= poly_sel; + + if (audctl(2) = '1') then + poly_sel_hp(1) <= poly_sel(1) xor poly_sel_hp_reg(1); + end if; + + if (audctl(1) = '1') then + poly_sel_hp(2) <= poly_sel(2) xor poly_sel_hp_reg(2); + end if; + end process; + + p_audio_out : process + begin + wait until rising_edge(CLK); + if (ENA = '1') then + for i in 1 to 4 loop + -- filter reg + if (tone_gen_div(3) = '1') then -- tone gen 1 clocked by gen 3 + poly_sel_hp_reg(1) <= poly_sel(1); + end if; + + if (tone_gen_div(4) = '1') then -- tone gen 2 clocked by gen 4 + poly_sel_hp_reg(2) <= poly_sel(2); + end if; + + poly_sel_hp_t1 <= poly_sel_hp; + + if (poly_sel_hp(i) = '1') and (poly_sel_hp_t1(i) = '0') then -- rising edge + tone_gen_final(i) <= not tone_gen_final(i); + end if; + end loop; + end if; + end process; + + p_op_mixer : process + variable vol : array_4x4; + variable sum12 : std_logic_vector(4 downto 0); + variable sum34 : std_logic_vector(4 downto 0); + variable sum : std_logic_vector(5 downto 0); + begin + wait until rising_edge(CLK); + if (ENA = '1') then + for i in 1 to 4 loop + if (audc(i)(4) = '1') then -- vol only + vol(i) := audc(i)(3 downto 0); + else + if (tone_gen_final(i) = '1') then + vol(i) := audc(i)(3 downto 0); + else + vol(i) := "0000"; + end if; + end if; + end loop; + + sum12 := ('0' & vol(1)) + ('0' & vol(2)); + sum34 := ('0' & vol(3)) + ('0' & vol(4)); + sum := ('0' & sum12) + ('0' & sum34); + + if (reset = '1') then + AUDIO_OUT <= "00000000"; + else + if (sum(5) = '0') then + AUDIO_OUT <= sum(4 downto 0) & "000"; + else -- clip + AUDIO_OUT <= "11111111"; + end if; + end if; + end if; + end process; + + -- keyboard / serial etc to do +end architecture RTL; diff --git a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/build_id.v b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/build_id.v index 772cae85..9106b2a5 100644 --- a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/build_id.v +++ b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/build_id.v @@ -1,2 +1,2 @@ `define BUILD_DATE "181123" -`define BUILD_TIME "201219" +`define BUILD_TIME "234234" diff --git a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/cent_top_mist.sv b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/cent_top_mist.sv index 216f40ad..93c22d84 100644 --- a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/cent_top_mist.sv +++ b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/cent_top_mist.sv @@ -33,13 +33,14 @@ localparam CONF_STR = { - wire clk24, clk12, clk6; +wire clk24, clk12, clk6, clk1p5; pll pll( .inclk0(CLOCK_27), .c0(clk24), .c1(clk12), - .c2(clk6) + .c2(clk6), + .c3(clk1p5) ); reg [3:0] reset_reg; @@ -144,7 +145,8 @@ sigma_delta_dac( //Note Cennected Joysticks breaks Controls centipede centipede( .clk_12mhz(clk12), - .reset(reset_reg[3] | status[0] | buttons[1] | status[6]), + .clk_1p5mhz(clk1p5), + .reset(/*reset_reg[3] |*/ status[0] | buttons[1] | status[6]), .playerinput_i(playerinput_i), .trakball_i(), // .joystick_i({joystick_0[1],joystick_0[0],joystick_0[3],joystick_0[2], joystick_1[1],joystick_1[0],joystick_1[3],joystick_1[2]}), diff --git a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/centipede.v b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/centipede.v index 1fdc330c..858ebc42 100644 --- a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/centipede.v +++ b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/centipede.v @@ -16,10 +16,11 @@ // //`define async_lr -//`define orig_phi0 +`define orig_phi0 module centipede( input clk_12mhz, + input clk_1p5mhz, input reset, input [9:0] playerinput_i, input [7:0] trakball_i, @@ -170,14 +171,14 @@ module centipede( wire [3:0] coloram_out; wire [3:0] coloram_rgbi; wire coloram_w_n; - reg coloren; + reg coloren; wire [1:0] rama_sel; wire [1:0] rama_hi; wire [1:0] rama_lo; wire [3:0] rama; - wire [5:0] audio; + wire [7:0] audio; // wire mob_n; @@ -960,7 +961,7 @@ hs_ram( // Audio output circuitry - +/* pokey_atosm pokey( .rst_i(mpu_reset), .clk_i(phi2), @@ -968,7 +969,7 @@ hs_ram( .dat_i(db_out[7:0]), .dat_o(pokey_out), .we_i(~rw_n), - .stb_i(~pokey_n), + .stb_i(1'b1 & ~pokey_n), .ack_o(), .irq(), .audout(audio), @@ -983,8 +984,22 @@ hs_ram( .serin(8'b0), .serin_rdy_i(1'b0), .serin_ack_o() - ); - + );*/ + +ASTEROIDS_POKEY ASTEROIDS_POKEY ( + .ADDR(ab[3:0]), + .DIN(db_out[7:0]), + .DOUT(pokey_out), + .DOUT_OE_L(), + .RW_L(rw_n), + .CS(~pokey_n), + .CS_L(1'b0), + .AUDIO_OUT(audio), + .PIN(8'b0), + .ENA(1'b1),//1.5m + .CLK(phi2)//6m + ); + // reg [7:0] last_pokey_rd; always @(posedge s_6mhz) @@ -1014,29 +1029,19 @@ hs_ram( wire gry0_or_1; assign gry0_or_1 = gry[1] | gry[0]; -// assign rama_sel = { coloram_n, gry0_or_1 }; -// -// assign rama = -// (rama_sel == 2'b00) ? { ab[3:0] } : -// (rama_sel == 2'b01) ? { ab[3:0] } : -// (rama_sel == 2'b10) ? { {gry0_or_1, 1'b1}, area[1:0] } : -// (rama_sel == 2'b11) ? { {gry0_or_1, 1'b1}, gry[1:0] } : -// 4'b0; + assign rama_sel = { coloram_n, gry0_or_1 }; + + assign rama = + (rama_sel == 2'b00) ? { ab[3:0] } : + (rama_sel == 2'b01) ? { ab[3:0] } : + (rama_sel == 2'b10) ? { {gry0_or_1, 1'b1}, area[1:0] } : + (rama_sel == 2'b11) ? { {gry0_or_1, 1'b1}, gry[1:0] } : + 4'b0; + + // assign rama = gry0_or_1 ? + // { {gry0_or_1, 1'b1}, gry[1:0] } : + // { {gry0_or_1, 1'b1}, area[1:0] }; - assign rama = gry0_or_1 ? - { {gry0_or_1, 1'b1}, gry[1:0] } : - { {gry0_or_1, 1'b1}, area[1:0] }; -/* -color_ram color_ram( - .clk_a(s_6mhz), - .clk_b(s_6mhz_n), - .reset(reset), - .addr_a(ab[3:0]), - .dout_a(coloram_out), - .din_a(db_out[3:0]), - .we_n_a(coloram_w_n), - .addr_b(rama), - .dout_b(coloram_rgbi));*/ dpram #( .addr_width_g(4), @@ -1067,7 +1072,8 @@ color_ram( assign sync_o = comp_sync; assign hsync_o = hsync; assign vsync_o = vsync; - assign audio_o = { 2'b0, audio }; + // assign audio_o = { 2'b0, audio };//original pokey + assign audio_o = { audio };//asteroids pokey assign hblank_o = hblank; assign vblank_o = vblank; diff --git a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/pll.v b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/pll.v index 683a7fcf..123a4f91 100644 --- a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/pll.v +++ b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/pll.v @@ -40,26 +40,30 @@ module pll ( inclk0, c0, c1, - c2); + c2, + c3); input inclk0; output c0; output c1; output c2; + output c3; wire [4:0] sub_wire0; - wire [0:0] sub_wire6 = 1'h0; - wire [2:2] sub_wire3 = sub_wire0[2:2]; - wire [0:0] sub_wire2 = sub_wire0[0:0]; + wire [0:0] sub_wire7 = 1'h0; + wire [2:2] sub_wire4 = sub_wire0[2:2]; + wire [0:0] sub_wire3 = sub_wire0[0:0]; + wire [3:3] sub_wire2 = sub_wire0[3:3]; wire [1:1] sub_wire1 = sub_wire0[1:1]; wire c1 = sub_wire1; - wire c0 = sub_wire2; - wire c2 = sub_wire3; - wire sub_wire4 = inclk0; - wire [1:0] sub_wire5 = {sub_wire6, sub_wire4}; + wire c3 = sub_wire2; + wire c0 = sub_wire3; + wire c2 = sub_wire4; + wire sub_wire5 = inclk0; + wire [1:0] sub_wire6 = {sub_wire7, sub_wire5}; altpll altpll_component ( - .inclk (sub_wire5), + .inclk (sub_wire6), .clk (sub_wire0), .activeclock (), .areset (1'b0), @@ -110,6 +114,10 @@ module pll ( altpll_component.clk2_duty_cycle = 50, altpll_component.clk2_multiply_by = 2, altpll_component.clk2_phase_shift = "0", + altpll_component.clk3_divide_by = 18, + altpll_component.clk3_duty_cycle = 50, + altpll_component.clk3_multiply_by = 1, + altpll_component.clk3_phase_shift = "0", altpll_component.compensate_clock = "CLK0", altpll_component.inclk0_input_frequency = 37037, altpll_component.intended_device_family = "Cyclone IV E", @@ -145,7 +153,7 @@ module pll ( altpll_component.port_clk0 = "PORT_USED", altpll_component.port_clk1 = "PORT_USED", altpll_component.port_clk2 = "PORT_USED", - altpll_component.port_clk3 = "PORT_UNUSED", + altpll_component.port_clk3 = "PORT_USED", altpll_component.port_clk4 = "PORT_UNUSED", altpll_component.port_clk5 = "PORT_UNUSED", altpll_component.port_clkena0 = "PORT_UNUSED", @@ -185,12 +193,15 @@ endmodule // Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "9" // Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "9" // Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "9" +// Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "18" // Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" // Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" // Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" // Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "24.000000" // Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "12.000000" // Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "6.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "1.500000" // Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" // Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" // Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" @@ -213,32 +224,40 @@ endmodule // Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" // Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" // Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" // Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" // Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" // Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" // Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0" // Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "8" // Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "4" // Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "2" +// Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "1" // Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" // Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "24.00000000" // Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "12.00000000" // Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "6.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "1.50000000" // Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" // Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" // Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" // Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" // Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" // Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" // Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" // Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" // Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" // Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" // Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" // Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" // Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" // Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" // Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "deg" // Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" // Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" // Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" @@ -263,15 +282,18 @@ endmodule // Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" // Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" // Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" // Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" // Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" // Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" // Retrieval info: PRIVATE: USE_CLK0 STRING "1" // Retrieval info: PRIVATE: USE_CLK1 STRING "1" // Retrieval info: PRIVATE: USE_CLK2 STRING "1" +// Retrieval info: PRIVATE: USE_CLK3 STRING "1" // Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" // Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" // Retrieval info: PRIVATE: USE_CLKENA2 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA3 STRING "0" // Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" // Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" // Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all @@ -288,6 +310,10 @@ endmodule // Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" // Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "2" // Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "18" +// Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "1" +// Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" // Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" // Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037" // Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" @@ -322,7 +348,7 @@ endmodule // Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" // Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" // Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" -// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" // Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" // Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" // Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" @@ -340,12 +366,14 @@ endmodule // Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" // Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" // Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +// Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" // Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" // Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 // Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 // Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 // Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 // Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +// Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 // Retrieval info: GEN_FILE: TYPE_NORMAL pll.v TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE diff --git a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/video_mixer.sv b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/video_mixer.sv index 22f27933..83da2ccd 100644 --- a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/video_mixer.sv +++ b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/video_mixer.sv @@ -181,11 +181,22 @@ osd osd .R_in(VGA_DE ? R_in[7:2] : 6'd0), .G_in(VGA_DE ? G_in[7:2] : 6'd0), .B_in(VGA_DE ? B_in[7:2] : 6'd0), - .R_out(VGA_R), - .G_out(VGA_G), - .B_out(VGA_B), +// .R_out(VGA_R), +// .G_out(VGA_G), +// .B_out(VGA_B), .HSync(hsync), .VSync(vsync) ); +vga_space vga_space +( + .*, + .ypbpr_full(1), + .ypbpr_en(ypbpr), + .red(R_out), + .green(G_out), + .blue(B_out) +); + + endmodule diff --git a/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/video_space.sv b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/video_space.sv new file mode 100644 index 00000000..bb70924e --- /dev/null +++ b/Arcade_MiST/Atari-Hardware/Centipede_MiST/rtl/video_space.sv @@ -0,0 +1,65 @@ + +module vga_space +( + input ypbpr_full, + input ypbpr_en, + + input [5:0] red, + input [5:0] green, + input [5:0] blue, + output [5:0] VGA_R, + output [5:0] VGA_G, + output [5:0] VGA_B +); + +wire [5:0] yuv_full[225] = '{ + 6'd0, 6'd0, 6'd0, 6'd0, 6'd1, 6'd1, 6'd1, 6'd1, + 6'd2, 6'd2, 6'd2, 6'd3, 6'd3, 6'd3, 6'd3, 6'd4, + 6'd4, 6'd4, 6'd5, 6'd5, 6'd5, 6'd5, 6'd6, 6'd6, + 6'd6, 6'd7, 6'd7, 6'd7, 6'd7, 6'd8, 6'd8, 6'd8, + 6'd9, 6'd9, 6'd9, 6'd9, 6'd10, 6'd10, 6'd10, 6'd11, + 6'd11, 6'd11, 6'd11, 6'd12, 6'd12, 6'd12, 6'd13, 6'd13, + 6'd13, 6'd13, 6'd14, 6'd14, 6'd14, 6'd15, 6'd15, 6'd15, + 6'd15, 6'd16, 6'd16, 6'd16, 6'd17, 6'd17, 6'd17, 6'd17, + 6'd18, 6'd18, 6'd18, 6'd19, 6'd19, 6'd19, 6'd19, 6'd20, + 6'd20, 6'd20, 6'd21, 6'd21, 6'd21, 6'd21, 6'd22, 6'd22, + 6'd22, 6'd23, 6'd23, 6'd23, 6'd23, 6'd24, 6'd24, 6'd24, + 6'd25, 6'd25, 6'd25, 6'd25, 6'd26, 6'd26, 6'd26, 6'd27, + 6'd27, 6'd27, 6'd27, 6'd28, 6'd28, 6'd28, 6'd29, 6'd29, + 6'd29, 6'd29, 6'd30, 6'd30, 6'd30, 6'd31, 6'd31, 6'd31, + 6'd31, 6'd32, 6'd32, 6'd32, 6'd33, 6'd33, 6'd33, 6'd33, + 6'd34, 6'd34, 6'd34, 6'd35, 6'd35, 6'd35, 6'd35, 6'd36, + 6'd36, 6'd36, 6'd36, 6'd37, 6'd37, 6'd37, 6'd38, 6'd38, + 6'd38, 6'd38, 6'd39, 6'd39, 6'd39, 6'd40, 6'd40, 6'd40, + 6'd40, 6'd41, 6'd41, 6'd41, 6'd42, 6'd42, 6'd42, 6'd42, + 6'd43, 6'd43, 6'd43, 6'd44, 6'd44, 6'd44, 6'd44, 6'd45, + 6'd45, 6'd45, 6'd46, 6'd46, 6'd46, 6'd46, 6'd47, 6'd47, + 6'd47, 6'd48, 6'd48, 6'd48, 6'd48, 6'd49, 6'd49, 6'd49, + 6'd50, 6'd50, 6'd50, 6'd50, 6'd51, 6'd51, 6'd51, 6'd52, + 6'd52, 6'd52, 6'd52, 6'd53, 6'd53, 6'd53, 6'd54, 6'd54, + 6'd54, 6'd54, 6'd55, 6'd55, 6'd55, 6'd56, 6'd56, 6'd56, + 6'd56, 6'd57, 6'd57, 6'd57, 6'd58, 6'd58, 6'd58, 6'd58, + 6'd59, 6'd59, 6'd59, 6'd60, 6'd60, 6'd60, 6'd60, 6'd61, + 6'd61, 6'd61, 6'd62, 6'd62, 6'd62, 6'd62, 6'd63, 6'd63, + 6'd63 +}; + +// http://marsee101.blog19.fc2.com/blog-entry-2311.html +// Y = 16 + 0.257*R + 0.504*G + 0.098*B (Y = 0.299*R + 0.587*G + 0.114*B) +// Pb = 128 - 0.148*R - 0.291*G + 0.439*B (Pb = -0.169*R - 0.331*G + 0.500*B) +// Pr = 128 + 0.439*R - 0.368*G - 0.071*B (Pr = 0.500*R - 0.419*G - 0.081*B) + +wire [18:0] y_8 = 19'd04096 + ({red, 8'd0} + {red, 3'd0}) + ({green, 9'd0} + {green, 2'd0}) + ({blue, 6'd0} + {blue, 5'd0} + {blue, 2'd0}); +wire [18:0] pb_8 = 19'd32768 - ({red, 7'd0} + {red, 4'd0} + {red, 3'd0}) - ({green, 8'd0} + {green, 5'd0} + {green, 3'd0}) + ({blue, 8'd0} + {blue, 7'd0} + {blue, 6'd0}); +wire [18:0] pr_8 = 19'd32768 + ({red, 8'd0} + {red, 7'd0} + {red, 6'd0}) - ({green, 8'd0} + {green, 6'd0} + {green, 5'd0} + {green, 4'd0} + {green, 3'd0}) - ({blue, 6'd0} + {blue , 3'd0}); + +wire [7:0] y = ( y_8[17:8] < 16) ? 8'd16 : ( y_8[17:8] > 235) ? 8'd235 : y_8[15:8]; +wire [7:0] pb = (pb_8[17:8] < 16) ? 8'd16 : (pb_8[17:8] > 240) ? 8'd240 : pb_8[15:8]; +wire [7:0] pr = (pr_8[17:8] < 16) ? 8'd16 : (pr_8[17:8] > 240) ? 8'd240 : pr_8[15:8]; + +assign VGA_R = ypbpr_en ? (ypbpr_full ? yuv_full[pr-8'd16] : pr[7:2]) : red; +assign VGA_G = ypbpr_en ? (ypbpr_full ? yuv_full[y -8'd16] : y[7:2]) : green; +assign VGA_B = ypbpr_en ? (ypbpr_full ? yuv_full[pb-8'd16] : pb[7:2]) : blue; + + +endmodule