Мазмұны:

Кеніш: 5 қадам (суреттермен)
Кеніш: 5 қадам (суреттермен)

Бейне: Кеніш: 5 қадам (суреттермен)

Бейне: Кеніш: 5 қадам (суреттермен)
Бейне: Основные ошибки при возведении перегородок из газобетона #5 2024, Шілде
Anonim
Мина тазалаушы
Мина тазалаушы

Біздің CPE 133 қорытынды жобасы үшін, Чейз екеуміз Basys-3 тақтасынан енгізуді, сондай-ақ VHDL кодын қосатын батырманы қолданатын «мина тазалаушы» ойынын құруды шештік. Ойынның жақсы атауы «орыс рулеткасы» болуы мүмкін, бірақ біз отбасылық достық атау алғымыз келді. Ойынға пайдаланушы Basis тақтасындағы ортаңғы түймені басу арқылы 16 қосқыштың біреуін кездейсоқ түрде бомбамен «белсенді» етіп тағайындайды. Содан кейін екі ойыншы қосқыштарды кезек -кезек аударады, ойыншылардың бірі қосқышты «бомбамен» аударғанша. Бұл кезде жеті сегментті дисплей ойыншыларға ойыншының ойында жеңіліп қалғанын ескертеді.

1 -қадам: Шолу

Жоба осы тоқсан ішінде біз қолданған көптеген VHDL модульдерін қолданды. Коммутаторлардың бірін іске қосу үшін кездейсоқ төрт разрядты модельдеу үшін сағат жиегімен бірге төрт биттік есептегіш қолданылды. Күй диаграммасы жеті сегментті дисплейге әр түрлі сөздерді шығару үшін пайдаланылды, ойыншылар ойын ортасында болған кезде «ОЙНАУ» -дан, ойыншылардың бірі қосқышты аударған кезде «Ұтылу» -ға дейін.

2 -қадам: материалдар

  • Digilent, Inc компаниясының Basys3 әзірлеу тақтасы.
  • Vivado Design Suite BC_DEC.vhd (Бұл файл бізге Polylearn -да берілген және оны Брайан Мили жазған)
  • Т -флиптерден жасалған 4 биттік есептегіш
  • FSM

3 -қадам: Ойын жасау

Ойын жасау
Ойын жасау
Ойын жасау
Ойын жасау

Бұл ойынның алғашқы қадамы біз қолданатын барлық компоненттері бар схеманы құру болды. Бұл жүйенің кірістері 1 түймесі, 16 қосқыш және Сағат болды. Нәтижелер жеті сегментті дисплей мен анодтар болды. Схема сызбасын салғаннан кейін, біз Vivado -да әр компонент үшін жеке бастапқы файлдарды жаздық және оларды негізгі бастапқы файлдың астындағы порт карталарының көмегімен біріктірдік.

Ойынның барлық негізі кездейсоқ 16 коммутатордың біреуін бомбамен белсенді болуға тағайындаудан тұрады және ойыншылар сол қосқыш қосылмайынша, қандай қосқыштың белсенді екенін білмейді. Біз кездейсоқ және жалған кездейсоқ сандар генераторларын қарастырдық, бірақ біз ақыр соңында 4 биттік есептегішті пайдаланып, сәйкес қосқышты белсенді деп тағайындауды біз іздегеніміз үшін жеткілікті кездейсоқ деп шештік. Біз бұл тапсырмада жұмыс істеу үшін алдыңғы жобада жасаған 4 биттік есептегішті өзгерте алдық. Біз 0-15 арасындағы кездейсоқ санды құру үшін есептегішті қолдандық; содан кейін main1 компонентінде кездейсоқ санның ондық эквивалентін оның тақтадағы сәйкес қосқышына тағайындадық. Схемада көрсетілгендей, main1 компонентінен шығатын X («белсенді бомба») да, ойыншылар қосатын қосқыштар да FSM1 -ге өтеді. Мемлекеттік машина бір бит Z мәнін шығарады, оны BC_DEC1 оқиды. Біз қолданатын соңғы күй машинасының екі түрлі күйі бар: А күйінде жеті сегментті дисплейде 'PLAY' шығысы болады және машина іске қосылған қосқыш аударылғанын білмейінше сол күйде қалады. Бұл орын алғаннан кейін, FSM жеті сегментті дисплейге «LOSE» шығаратын В күйіне өтеді және барлық 16 қосқыш «0» күйіне ауысқанша сол күйде қалады. Бұл шарт орындалған кезде, FSM қайтадан А күйіне өтеді және ойыншылардың басқа ойынды бастауын күтеді. Бұл FSM түсінуге көмектесетін Мур диаграммасы жоғарыда көрсетілген.

4 -қадам: Болашақ өзгерістер

Біз ойынға енгізетін бірнеше өзгерістерге алаңға тағы бомбалар қосу (мүмкін біреуден үшке дейін көбейту), есептегішті және бірнеше раундты қосу кіреді. Біз, ақырында, бұл жақсартуларға қарсы шешім қабылдадық, өйткені біз әдетте үш -төрт ауысудан кейін аяқталған ойыннан гөрі ұзағырақ және кеңейтілген ойын ойнаудың кернеулі және ақырында қызықты болатынын анықтадық.

5 -қадам: Қорытынды

Біз бұл жобаның соңғы нәтижесіне өте риза болдық; Ойынның соңғы нұсқасы қызықты болғаны үшін ғана емес, сонымен қатар жобаны құру мен бағдарламалау бізден осы тоқсанда білгеніміздің бәрін болмаса да, көпшілікті пайдалануды талап еткендіктен. Біз флип -флоптарды, есептегіштерді, FSM -ді, сағатты, пайдаланушылардың тақтадан енгізуін және жеті сегментті дисплейге шығуды қолдандық.

Біз сондай -ақ бірнеше синтаксистік қателер бағдарламаны қалай толығымен бұза алатынын білдік (тіпті егер олар Python немесе Java сияқты басқа бағдарламалау тілдерінде жақсы деп есептелсе де) және тек бірнеше модельдеу мен кодтың бірнеше қайталануы жүктелген және тексерілгеннен кейін. тақта, сіз ақырында сіздің кодыңыздағы барлық қателерді өңдей аласыз.

Ұсынылған: