Мазмұны:

FPGA астероид ойыны: 7 қадам (суреттермен)
FPGA астероид ойыны: 7 қадам (суреттермен)

Бейне: FPGA астероид ойыны: 7 қадам (суреттермен)

Бейне: FPGA астероид ойыны: 7 қадам (суреттермен)
Бейне: Cine multi FPGA in Asteroids cocktail CAB 2024, Қазан
Anonim
FPGA астероид ойыны
FPGA астероид ойыны

Біздің 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» хабарламасын көрсету үшін қолданылды.

Ұсынылған: