Cov txheej txheem:

Mastermind Game hauv VHDL: 3 Kauj Ruam
Mastermind Game hauv VHDL: 3 Kauj Ruam

Video: Mastermind Game hauv VHDL: 3 Kauj Ruam

Video: Mastermind Game hauv VHDL: 3 Kauj Ruam
Video: CHAPTER 25 RESIDENT EVIL FULL CHAPTER LEAKED - Dead by Daylight 2024, Kaum ib hlis
Anonim
Mastermind Game hauv VHDL
Mastermind Game hauv VHDL
Mastermind Game hauv VHDL
Mastermind Game hauv VHDL

Rau peb txoj haujlwm, peb tsim "Mastermind" game hauv VHDL los ua si ntawm Basys3 board. Mastermind yog kev ua si txhaum cai ib txwm ua si nrog pegs thiab game board. Player ib qhov chaw pegs ntawm cov xim sib txawv hauv kab ntawm 4, zais los ntawm cov neeg ua si ob. Cov neeg uas ua ntawv ob ces muaj 'x' tus lej ntawm kev kwv yees tso cov pegs rau ntawm pawg thawj coj saib uake pom rau tus neeg uas ua ntawv. Tom qab txhua qhov kev kwv yees, tus neeg uas ua ntawv paub ob tus lej 2: pes tsawg tus pegs yog xim raug, thiab pes tsawg tus pegs nyob hauv txoj haujlwm raug nyob hauv kab. Siv cov lus qhia no, tus neeg ua si ob yuav tsum kwv yees qhov sib lawv liag ntawm tus pin uas tus neeg uas ua ntawv tso rau hauv tus lej kwv yees tau faib.

Hauv peb qhov kev siv, qhov kev ua si yog ib leeg nkaus xwb. Kev sib xyaw ua ke ntawm pegs tau tsim los ntawm txoj haujlwm, thiab cov neeg uas ua ntawv yuav tsum siv Pawg Basys3 los kwv yees qhov ua ntu zus. Muaj plaub "xim," sawv cev los ntawm tus lej binary. 7-ntu zaub qhia pom peb qhov tseem ceeb: tshuav puv, tus lej ntawm tus lej hauv txoj haujlwm raug, thiab tus lej tus lej uas yog xim raug hauv qhov tsis raug (cov txiaj ntsig no pib ntawm 9, 0, thiab 0). Tus neeg siv khoom siv cov hloov pauv ntawm lub rooj tsavxwm los xaiv tus lej binary rau nws qhov kev kwv yees, thiab tig lwm qhov hloov pauv kom xa qhov kev kwv yees. Yog tias lawv yog qhov raug, qhov kev ua si xaus thiab 7-ntu qhia pom "GG." Yog tias tsis yog, lub txee tig rov qab txo los ntawm 1 thiab tus neeg ua si tau txais cov lus tawm tswv yim raws li muaj pes tsawg tus pin hauv lawv qhov kev twv kom phim cov xim lossis txoj haujlwm ntawm tus pin hauv kev sib xyaw. Yog tias tus neeg uas ua ntawv khiav tawm ntawm qhov tsis muaj kev twv kom raug, cov duab qhia "GO" (sawv cev rau kev ua si dhau). Tus neeg ua si kuj tseem tuaj yeem tig rov pib dua kom pib dua txhua lub sijhawm.

Kauj ruam 1: Cov ntaub ntawv

Khoom siv
Khoom siv
Khoom siv
Khoom siv
Khoom siv
Khoom siv

Txij li tag nrho cov game tuaj yeem ua si ntawm lub rooj tsavxwm nws tus kheej, tsuas yog cov ntaub ntawv xav tau yog Basys3 Board, lub micro USB cable txuas rau lub rooj tsavxwm, thiab lub khoos phis tawj/laptop uas koj tuaj yeem siv rau tus lej!

Kauj ruam 2: Txoj Cai

Txoj Cai
Txoj Cai
Txoj Cai
Txoj Cai

Txhawm rau qhov kev ua si no ua haujlwm ntawm FPGA, txoj hauv kev yooj yim tshaj plaws los mus sau ntawv nws yuav yog tsim lub xeev lub tshuab. Muaj lub xeev lub tshuab tso cai ua ntu zus thiab sib tham sib paub tsim nyog rau kev ua si kom ua haujlwm tau zoo. Txhawm rau txhua yam kom ua haujlwm tau zoo, lub xeev lub tshuab yuav ua raws lub moos moos teeb liab ntawm FPGA, kom ntseeg tau tias txhua yam nyob ua ke. Lub ntsiab module yog lub xeev tshuab nrog plaub lub xeev; Lub Xeev Pib (Pib), Xa Lub Xeev (SubAns), Lub Xeev Tso Tawm (Dis), thiab Lub Xeev CheckEndGame (CheckEnd). Nrog rau lub xeev lub tshuab, lub ntsiab lus tseem ceeb muaj ob lub submodules, 4-digit Seven Segment Display (uas muaj nws tus kheej ClkDivider submodule), thiab Random Number Generator (qhov tseeb yog psuedo-random tus lej generator). Kuj tseem muaj cov txheej txheem txheej txheem kom muaj LED qhov siab tshaj txhua qhov kev hloov pauv thaum hloov mus raws li txoj hauv kev rau tib neeg kom pom qhov lawv nkag mus yooj yim dua. Cov txheej txheem txheej txheem ntawm cov cai tuaj yeem pom hauv daim duab qhia kev xav.

Thawj qhov khoom siv los saib yog Random Number Generator (randomgen). Txij li nws tsis muaj peev xwm ua tau kom tau txais cov lej tseeb tsim los ntawm kho vajtse, qhov kev daws teeb meem yooj yim tshaj plaws yog kom muaj qhov randomgen tiag yog Linear-feedback Shift Register (LFSR). LFSR muaj cov tswv yim ntawm clk thiab cov zis "a" (tus lej 12-ntsis). Txhua lub moos hloov pauv, tus lej 12-ntsis tshiab tau tsim los ntawm "000000000001", thaum kawg dhau los ntawm txhua qhov sib txuas ntawm 12-ntsis ntawm 1's thiab 0's ua ntej rov ua nws tus kheej. Cov zis "a" tau muab rau txhua lub moos, yog li nws txuas ntxiv mus tas li. Lub clk tau teeb tsa mus rau Clk los ntawm cov qauv tseem ceeb, thiab "a" tau teeb tsa rau lub teeb liab RandNum hauv cov qauv tseem ceeb.

Qhov thib ob submodule yog 4 tus lej Xya Segment Display. Nov yog txoj hauv kev zoo nkauj ntawm kev nthuav tawm 4-tus lej Xya Segment Display. Cov zaub tau teeb tsa ntawm Clk los ntawm cov qauv tseem ceeb, tsis tau qhov submodule nws muaj nws tus kheej submodule ntawm ClkDivider. ClkDivider (teeb tsa rau 1298 Hz) tau siv los ua kom lub sijhawm nrawm rau Xya Caum kom txhua tus lej tshwm nyob rau tib lub sijhawm (txij li tsuas muaj ib tus lej tuaj yeem ua tau ntawm ib lub sijhawm). Qhov sib txawv "tus lej" tau siv los ua voj voos ntawm cov chaw ntawm cov zaub, thiab nrog txhua tus lej los txog qhov xwm txheej ntawm qhov pib 4-ntsis cov lus tso tawm, nrog kev xaiv los qhia tus lej 0 txog 9 thiab kuj tsis muaj dab tsi. Tus lej sab laug deb tshaj plaws ntawm cov zaub tau teeb tsa tsis muaj ib yam vim nws tsis tau siv hauv qhov kev ua si no.

Lub hauv paus tseem ceeb suav nrog lub tshuab hauv xeev. Plaub lub xeev hauv tus txheej txheem yog Pib, SubAns, Dis, thiab CheckEnd. Thaum nyob hauv thawj lub xeev, yog tias SubmitBtn (hloov siv xa koj cov lus teb rau kev kuaj xyuas) tau teeb tsa rau '1', tom qab ntawd lub tshuab txav mus rau SubAns State. Txhua lub sijhawm Rbtn (hloov siv lub tshuab rov pib dua) tau teeb tsa rau '1', tom qab ntawd lub tshuab rov qab mus rau Lub Xeev Pib. Thaum nyob hauv SubAns State, thaum SubmitBtn = '0' dua, nws txav mus rau Dis State. Thaum nyob hauv Lub Xeev Dis, yog suav suav = 0 (Lub lem tig los kwv yees poob rau 0) lossis yog RSpotCount = 4 (lub ntsiab lus tus neeg uas ua ntawv zoo li txhua qhov xim hauv qhov chaw raug), lub tshuab mus rau Lub Xeev CheckEnd. Yog tias tsis muaj qhov tshwm sim, tom qab ntawd thaum SubmitBtn = '1' dua, nws rov qab mus rau SubAns xeev kom tso cai lwm qhov kev kwv yees. Thaum nyob hauv Xeev CheckEnd, qhov no yog qhov kawg ntawm qhov kev ua si, thiab tsuas yog txoj hauv kev tawm yog txhawm rau rov pib dua, xa rov qab mus rau Lub Xeev Pib. Qhov no yooj yim pom muaj peev xwm hauv lub xeev daim duab qhia chaw. Tus Cwj Pwm Thawj Lub Xeev pib ua txhua yam rov qab mus rau txoj haujlwm pib. Suav Rov Qab (lub teeb liab uas txuag pes tsawg tus tig laug tus neeg uas ua ntawv muaj) tau teeb tsa rau 9, RSpotCount (teeb liab uas txuag tau pes tsawg xim uas koj kwv yees nyob hauv qhov chaw raug) tau teeb tsa rau 0, RColorCount (teeb liab uas txuag tau pes tsawg ntawm cov xim uas koj xav tias yog lawm tab sis nyob hauv qhov chaw tsis raug) tau teeb tsa rau 0, thiab cov suav me me (lub teeb liab uas thaum kawg tau teeb tsa rau Countdown uas tau hloov pauv txhua qhov tig hauv lub xeev tom qab) tau teeb tsa rau 9. Tsis tas li, hauv Lub Xeev Pib lub RandNum (psuedo-random tsim tus lej) tau faib ua plaub qhov kev txheeb xyuas sib txawv (ib qho rau txhua 3-ntsis xim) thiab khaws tseg rau cov cim kos 1, kos 2, kos 3, kos 4. Cov tshev no yog qhov koj kwv yees tiag tiag piv rau, yog li txawm tias LFSR ib txwm ua rau RandNum hloov pauv txhua lub voj voog, thaum koj tawm ntawm Lub Xeev Thawj zaug cov tshev nyiaj nyob zoo ib yam, tso cai tus nqi khaws tseg los sib piv koj cov lus teb tawm tsam. Qhov no kuj txhais tau tias txhua lub sijhawm lub tshuab rov pib dua, tus neeg ua si muaj tus nqi tshiab los kwv yees.

Lub Xeev SubmitAnswer (SubAns) hloov pauv tus lej suav suav (teeb liab "hloov pauv") mus rau '1'. Qhov no xav tau tom qab txhawm rau txhawm rau taug qab kom ua haujlwm. Tom qab ntawd, lub xeev sib piv cov neeg siv khoom nkag los ntawm cov hloov pauv mus rau cov tshev hauv lub xeev saum toj no. Teeb liab rs1, rs2, rs3, rs4 thiab cov cim rc1, rc2, rc3, rc4 yog cov lej sib txuas uas nyob ntawm Cov Lus Yog hais tias tau teeb tsa rau 1 lossis 0. Lub teeb liab rs yog rau qhov chaw raug thiab rc rau xim raug. Piv txwv li yog tias xim 1 tus neeg twv twv sib npaug rau qhov kos 1 ntawm RandNum, tom qab ntawd rs1 = 1 vim qhov ntawd txhais tau tias xim raug yog nyob ntawm qhov chaw raug. Yog tias xim 1 tsis sib npaug kos 1, tab sis sib npaug ib qho ntawm lwm qhov tshev, ces rc = 1. Qhov no ua tiav rau txhua xim thiab txhua daim tshev.

Lub Xeev Zaub (Dis) xub nrhiav thawj tus suav suav suav. Yog tias nws yog '1', tom qab ntawv suav tsawg dua 1 (yog li thawj zaug nws mus ntawm 9 txog 8 thiab lwm yam). Txwv tsis pub lub lem tsis hloov. Txawm hais tias qhov ntawd pab tau li cas, txhua qhov rs qhov tseem ceeb los ntawm saum toj no tau ntxiv thiab muab rau teeb liab RSpotCounter. Tsis tas li txhua qhov txiaj ntsig rc tau ntxiv thiab muab rau RColorCounter. Thaum kawg Countdown tau muab tus nqi ntawm kev suav me me. Cov cim RSpotCounter, RColorCounter, thiab Countdown tau hloov pauv mus rau 4-ntsis std_logic_vectors sab nrauv ntawm tus txheej txheem, thiab thawb mus rau Xya Segment zaub submodule los ntawm daim ntawv qhia chaw nres nkoj. Txoj kev no, tso saib pom qhov raug kom txog thaum koj xa cov lus teb tshiab.

Lub Xeev CheckEnd yog rau seb koj puas tau yeej lossis poob. Yog tias koj tau yeej (tag nrho 4 xim nyob hauv qhov chaw raug, txwv tsis pub hu ua RSpotCounter = 4), tom qab ntawd "GG" (qhia tau zoo li 66) tau tshwm rau ntawm Xya Ntug los qhia tias koj yeej. Yog tias koj tau poob (Suav suav rov qab tau mus txog 0) tom qab ntawd "GO" (pom zoo li 60) tau muab tso rau ntawm cov zaub rau Game Over. Nrog ob qho txiaj ntsig, tsoo qhov hloov pauv hloov mus rau yuav txav lub tshuab rov qab mus rau Lub Xeev Pib ua si dua.

Source Code tuaj yeem pom ntawm no.

Kauj Ruam 3: Xaus

Ua kom tiav txoj haujlwm no qhia peb ntau yam txog kev tsim cov kab ke nyuaj. Peb qhov kev tsim thawj zaug tsis yog lub xeev lub tshuab ua kom tiav. Peb pom nws nyuaj rau debug, thiab rov sau dua cov lej ntau zaus siv ntau txoj hauv kev (suav nrog FSM). Raws li tus kws qhia tawm tswv yim, peb nyam nrog FSM txoj hauv kev thiab peb tuaj yeem ua tiav qhov kev ua si. Peb tau kawm paub tias nws muaj txiaj ntsig ntau dua los tsim cov cai raws li kho vajtse ntau dua nrog cov txheej txheem txheej txheem ib txwm muaj. Peb kuj tau ntsib ntau qhov kev cov nyom uas cuam tshuam nrog rau xya ntu tso saib. Ua kom nws nthuav tawm ntau tus lej yam tsis muaj "dab" yog qhov nyuaj, thiab peb yuav tsum siv lub moos faib ua kom tiav qhov no. Yog tias peb yuav txhim kho txoj haujlwm no ntxiv, peb yuav txuas cov xim LED rau Basys3 yog li tus neeg siv tuaj yeem pom xim (zoo li hauv kev ua si ib txwm muaj) ntau dua li cov lej sawv cev ntawm cov xim. Thaum kawg, peb tau txais kev nkag siab ntau dua ntawm kev tsim cov txheej txheem nyuaj, kev siv lub neej tiag tiag, thiab cov kev cov nyom ntawm kev siv kho vajtse ntau dua li kev sim sim nrog cov xwm txheej zoo meej.

Pom zoo: