Мазмуну:

FPGA астероид оюну: 7 кадам (сүрөттөр менен)
FPGA астероид оюну: 7 кадам (сүрөттөр менен)

Video: FPGA астероид оюну: 7 кадам (сүрөттөр менен)

Video: FPGA астероид оюну: 7 кадам (сүрөттөр менен)
Video: Cine multi FPGA in Asteroids cocktail CAB 2024, Ноябрь
Anonim
FPGA астероид оюну
FPGA астероид оюну

Биздин CPE 133 Final Project үчүн биз FPGAбызда астероиддер оюнун эки баскыч баскычын жана 7 сегменттүү дисплейди колдонуп түзүүнү чечтик. Оюн ушинтип иштейт: астероид туш келди тандалган үч катардын биринде пайда болот жана 7 сегменттүү дисплейдин башка жагында кемеге карай келе жатат. Жогорку баскыч жана астынкы баскыч астероиддин жолунан кемеңизди жылдыруу үчүн колдонулушу мүмкүн. Антпесе, дисплей бир азга "BAnG" деп окуйт жана колдонуучу кайра аракет кылышы үчүн оюнду тез арада кайра баштайт. Кийинки нерсе - бул долбоордун кандайча жасалганын кыскача сүрөттөө, ошондуктан ар бир колдонуучу биздин дизайнды кайталап же жакшырта алат.

1 -кадам: Обзор

Обзор
Обзор
Обзор
Обзор

Долбоор негизинен кемелердин жана рок позицияларынын ар кандай баалуулуктарын сактаган жана көрсөткөн мамлекеттердин ортосундагы FPGAны өткөрүп берүү үчүн логиканы колдонгон Finite State Machines (FSMs) турат. Эки негизги модуль-бул рок менен кеме үчүн FSM оюну, жана VHDLде абдан жөнөкөй структуралык моделди колдонуу менен бириктирилген 7 сегменттүү дисплей декодери FSM.

FSMлер кеменин позициясы, роктун орду жана 7 сегменттеги декодер үчүн түзүлгөн. Кеме FSMдин максаты - оюнчу өйдө же ылдый баскычын басканда, кеме туура абалга өтүшү үчүн. FSM керек, анткени туура позицияга өтүү үчүн кайсы позицияда болгонун эстен чыгарбашы керек.

Роктун FSMинин максаты - рокту кайсы катарда турганына жана ошол катардагы акыркы абалга негиздөө. Мындан тышкары, ал аны көрсөтө турган модулдун позициясын көзөмөлдөйт жана кийинкиде пайда боло турган жаңы сапты псевдо-кокусунан тандап алат.

7 сегменттүү дисплей декодеринин FSMи кемени жана асканы көрсөтүү үчүн эле эмес, кеменин позициясы менен роктун позициясы бирдей болгондо "BAnG" көрсөтүү үчүн да колдонулган.

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

Долбоордо колдонулган материалдар:

  • Digilent, Inc.ден Basys3 өнүктүрүү кеңеши.
  • Vivado Design Suite
  • sseg_dec.vhd (Бул файл бизге Polylearnде берилген жана Брайан Миалы тарабынан жазылган)
  • Clk_div.vhd (Бул файл бизге Polylearnде берилген жана Брайан Миалы тарабынан жазылган)
  • Үч чектүү мамлекеттик машиналар (FSMs)

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" билдирүүсүн көрсөтүү үчүн колдонулган.

Сунушталууда: