Мазмұны:
- 1 -қадам: Шолу
- 2 -қадам: материалдар
- 3 -қадам: Ойын жасау
- 4 -қадам: Нәтижені көрсету
- 5 -қадам: Барлығын біріктіру
- 6 -қадам: Болашақ өзгерістер
- 7 -қадам: Қорытынды
Бейне: FPGA астероид ойыны: 7 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Біздің CPE 133 қорытынды жобасы үшін біз FPGA-да астероидтар ойынын екі түйме қосқышы мен 7 сегментті дисплей көмегімен құруды шештік. Ойын астероид кездейсоқ таңдалған үш қатардың бірінде пайда болатындай жұмыс істейді және 7 сегментті дисплейдің екінші жағындағы кемеге қарай қозғалады. Жоғарғы және төменгі түймені кемеңізді астероид жолынан шығару үшін пайдалануға болады. Егер бұл орындалмаса, дисплейде «BAnG» бір сәтке жазылады, содан кейін ойын тез арада қайта басталады, сондықтан қолданушы қайталап көруі мүмкін. Келесі кез келген пайдаланушы біздің дизайнды қайталауы немесе жақсартуы үшін жобаның қалай жасалғанын қысқаша сипаттайды.
1 -қадам: Шолу
Жоба көбінесе FPGA -ны кемелер мен роктардың әр түрлі мәндерін сақтайтын және көрсететін мемлекеттер арасында беру үшін логиканы қолданатын соңғы күй машиналарынан (FSM) тұрады. Екі негізгі модуль-бұл рок пен кемеге арналған FSM ойындары және VHDL-де өте қарапайым құрылымдық модельді қолдана отырып біріктірілген 7 сегментті дисплей декодері FSM.
FSM кеменің орналасуына, роктың орнына және 7 сегментті декодерге арналған. Кеменің FSM мақсаты - ойыншы жоғары немесе төмен түймесін басқанда, кеме дұрыс позицияға жылжи алады. FSM қажет, себебі ол дұрыс позицияға өту үшін қай позиция соңғы болғанын есте сақтауы керек.
Рок FSM -нің мақсаты - рокты қай қатарда орналасқанына және сол қатардағы соңғы позицияға қарай дұрыс орынға жылжыту. Сонымен қатар, ол оны көрсететін модульдің орнын қадағалайды және келесі кезде пайда болатын жаңа жолды кездейсоқ таңдайды.
7 сегментті дисплей декодеріне арналған FSM кеме мен рокты көрсету үшін ғана емес, сонымен қатар кеменің орны мен рок жағдайы бірдей болған кезде «BAnG» көрсету үшін де қолданылған.
2 -қадам: материалдар
Жобада келесі материалдар пайдаланылды:
- Digilent, Inc компаниясының Basys3 әзірлеу тақтасы.
- Vivado дизайн жиынтығы
- sseg_dec.vhd (Бұл файл бізге Polylearn -да берілген және оны Брайан Миалы жазған)
- Clk_div.vhd (Бұл файл бізге Polylearn -да берілген және оны Брайан Миалы жазған)
- Үш соңғы күй машинасы (FSM)
3 -қадам: Ойын жасау
Ойын модулі өздерінің FSM -лары үшін кеме мен рок жағдайын сипаттау үшін мінез -құлықты модельдеуді қолдану арқылы құрылды. Мұның артықшылығы - бұл жабдықты жобалауға қажетті барлық компоненттерді анықтаудан гөрі, оның не істейтінін сипаттау арқылы мінез -құлықты модельдеу әлдеқайда оңай.
Рок жағдайы роктың бірінші орналасуы үшін жалған кездейсоқ сандар генераторының көмегімен жасалды. Мұны істеу үшін біз генераторға ойынның жылдамдығына қарағанда өте жылдам болатын өз сағатын бердік. Әр көтерілетін жиекте үш биттік сан ұлғаяды және оның барлық мәндері кеменің үш басталу күйінің біріне сәйкес келеді. Демек, үш мән 3 -позицияға (жоғарғы оң жақта), үшеуі 7 -позицияға (орталықта), екеуі 11 -позицияға (төменгі оң жақта) сәйкес келеді.
Кездейсоқ генерация пайда болып, астероидқа бастапқы күй берілгеннен кейін, ол көлденеңінен кемеге қарай үздіксіз ағып өтеді.
0 ← 1 ← 2 ← 3
4 ← 5 ← 6 ← 7
11 ← 10 ← 9 ← 8
Роктың келесі күй логикасы үшін қолданылатын сағат ойынның жылдамдығын басқарады; біз сынақ және қателік арқылы 9999999 оның максималды саны үшін жақсы мән екенін анықтадық.
Кеменің логикасы сол жақтағы орталық позицияға (4 -позиция) инициализациялау арқылы жұмыс істейді. Егер жоғарғы немесе төменгі түйме басылса, кеме басылған түймеге сәйкес келетін 0 және 11 позицияға жоғары және төмен жылжиды.
Кеме қозғалысы пайдаланушыға жақсы болуы үшін біз оның қозғалысын асинхронды етпедік. Біз оның күйін өзгерту үшін сағатты қолдандық, және біз ең көп 5555555 санын қолдандық.
4 -қадам: Нәтижені көрсету
7-сегменттен тұратын екілік декодер кеме мен астероид үшін 4 биттік позицияның айнымалы мәндерін қабылдайды және сәйкес бейнені көрсетеді (не кеме, не тас немесе «BAnG» хабарламасы).
Ол мұны алдымен екеуінің тең екендігін тексеру арқылы жүзеге асырады, содан кейін егер тексеру шындыққа оралса, «BAnG» хабарламасын көрсетеді.
Егер ол шындыққа қайтып келмесе, декодер кеме мен тасты олардың арасында өте жоғары сағат жиілігімен ауыстырып, оларды бір уақытта көрсетіліп тұрғандай көруге алдап, көрсетеді.
5 -қадам: Барлығын біріктіру
Біз кеме мен роктың FSM -ін FSM дисплейіне қосқан бір үлкен FSM -де қамтыдық. Ойынға BASYS3 тақтасындағы жоғары және төмен түймесі мен жүйелік сағаттар кіреді. Шығу-сегмент-дисплейдің сегменті мен анодты векторлары.
Бұл кірістер мен шығыстар порт картасында көрсетілген шектеулер файлында көрінеді.
6 -қадам: Болашақ өзгерістер
Болашақта жобаға кеме қозғалысының қосымша мүмкіндіктерін қосу жақсарту болар еді. Бұған тағы 2 түймені енгізу арқылы және кемеге 0, 4 және 8 -ден басқа позицияларды (күйлерді) алуға рұқсат беру арқылы ғана қол жеткізуге болады. Басқа ықтимал модификация астероидтың келесі күй уақытын бақылай алады, осылайша ол баяу басталады және жылдамдықты арттырады. Ол кемені сағынған сайын, ол соққы алғанша, ол қайта іске қосылады және қайтадан баяулайды. Бұл ойынның күрделілігін арттырады және егер ол іске асырылса, оны пайдаланушыға қызықты етеді және оны астероид түспеген сайын бұл айнымалы мәнді 1,5 -ке көбейтетін роктың келесі күй сағатының максималды санына айнымалы құру арқылы жасауға болады. рок соққан сайын оны бастапқы мәніне қайтармайды.
7 -қадам: Қорытынды
Бұл жоба бізге жеті сегментті дисплейлерде интерактивті түрде көрсетілетін соңғы машиналарды, сағаттарды жақсы түсінуге көмектесті.
Ақырғы күйдегі машиналар туралы ең үлкен нәрсе - келесі қалаған күйге өту үшін қазіргі уақытта қандай күйде екеніңізді білу (есте сақтау). Бір қызығы, жақсы өмірлік кеңес; қайда бара жатқаныңызды білуіңіз керек.
Әр түрлі сағаттардың манипуляциясын қолдана отырып, біз кездейсоқ сандарды құра алдық, рокты келесі орынға жылжыта алдық, кеменің, жартастың және ойынның соңындағы хабарламаның көрсетілуін басқара алдық.
Біз бірнеше анодты бір мезгілде көрсетуге болмайтынын білдік. Бізге берілген модуль адамның көзі белгілі бір жиілікке дейінгі айырмашылықты ғана көре алатынын пайдаланды. Сондықтан анодты ауыстырудың жоғары жиілігі таңдалды. Бір уақытта көрінетін кеме мен тас - бұл тұспал, өйткені олардың әрқайсысы бөлек, бірақ өте тез көрсетіледі. Бұл тұжырым кеменің, жартастың қозғалысын және «BAnG» хабарламасын көрсету үшін қолданылды.
Ұсынылған:
DIY 37 Leds Arduino рулетка ойыны: 3 қадам (суреттермен)
DIY 37 Leds Arduino рулетка ойыны: Рулетка - бұл кішкентай дөңгелекті білдіретін француз сөзімен аталған казино ойыны
BBC Micro: бит және Scratch - интерактивті руль және жүргізуші ойыны: 5 қадам (суреттермен)
BBC Micro: бит және Scratch - интерактивті руль және көлік жүргізу ойыны: Менің осы аптадағы тапсырмаларымның бірі - біз жазған Scratch бағдарламасымен интерфейс жасау үшін BBC Micro: bit пайдалану. Мен бұл ThreadBoard тақтасын ендірілген жүйені құрудың тамаша мүмкіндігі деп ойладым! Менің сызатқа шабытым
3d лабиринт ойыны Arduino көмегімен: 8 қадам (суреттермен)
Arduino қолданатын 3d лабиринт ойыны: Сәлем достар, бүгін біз ARDUINO UNO көмегімен лабиринт ойынын жасамақпыз, өйткені Arduino Uno - бұл жиі қолданылатын тақта, онымен ойын жасау өте керемет. Бұл нұсқаулықта джойстиктер көмегімен басқарылатын лабиринт ойынын жасауға мүмкіндік береді. Ұмытпаңыз
Arduino Sorta Sudoku ойыны: 3 қадам (суреттермен)
Ардуино Сорта Судоку ойыны: Көптеген адамдар Судоку мен немерелеріне ойын ойнағанды ұнатады, сондықтан мен портативті «Сорта Судоку» ойынын жасауды шештім. Менің нұсқамда ойын 4х4 торлы, бірақ тек бір сан берілген. Ойдағы қалған сандарды болжау
FPGA реакциясы ойыны: 10 қадам
FPGA реакциясы ойыны: Жазғы Резерфорд пен Регита Соетандар