Բովանդակություն:

Ականահան. 5 քայլ (նկարներով)
Ականահան. 5 քայլ (նկարներով)

Video: Ականահան. 5 քայլ (նկարներով)

Video: Ականահան. 5 քայլ (նկարներով)
Video: Kahitna Live at The Sounds Project Vol.6 (2023) 2024, Նոյեմբեր
Anonim
Ականահան
Ականահան

Մեր CPE 133 եզրափակիչ ծրագրի համար ես և Չեյսը որոշեցինք ստեղծել «Ականահան նավ» խաղ, որն օգտագործում էր կոճակը և մուտքագրում մուտքը Basys-3 տախտակից, ինչպես նաև VHDL կոդից: Խաղի համար ավելի լավ անուն կարող է լինել «Ռուսական ռուլետկա», սակայն մենք ցանկանում էինք ավելի ընտանեկան անունով գնալ: Խաղը ներառում է օգտագործողին սեղմել Basys- ի տախտակի միջին կոճակը ՝ 16 անջատիչներից մեկը պատահականորեն ռումբով «ակտիվ» նշանակելու համար: Երկու խաղացողներ հերթով շրջում են անջատիչները, մեկը մեկից, մինչև խաղացողներից մեկը «ռումբով» շրջում է անջատիչը: Երբ դա տեղի ունենա, յոթ հատվածի ցուցադրումը զգուշացնում է խաղացողներին, որ այդ խաղացողը նոր է պարտվել խաղը:

Քայլ 1: Ակնարկ

Նախագծում օգտագործվել են VHDL մոդուլներից շատերը, որոնք մենք օգտագործել ենք այս եռամսյակի ընթացքում: Bitամացույցի եզրին զուգահեռ օգտագործվել է չորս բիթանոց հաշվիչ `պատահական չորս բիթանոց համարը մոդելավորելու համար` անջատիչներից մեկը ակտիվացնելու համար: Պետական դիագրամ է օգտագործվել նաև յոթ հատվածի ցուցադրման համար տարբեր բառեր մուտքագրելու համար ՝ սկսած «PLAY» - ից, երբ խաղացողները գտնվում են իրենց խաղի միջնամասում, մինչև «LOSE», երբ խաղացողներից մեկը շրջում է ակտիվ անջատիչը:

Քայլ 2: Նյութեր

  • Basile3 զարգացման խորհուրդ Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Այս ֆայլը տրամադրվել է մեզ Polylearn կայքում և գրվել է Բրայան Միլիի կողմից)
  • 4 բիթանոց հաշվիչ ՝ պատրաստված T մատնաշապիկներից
  • A FSM

Քայլ 3: Խաղի պատրաստում

Խաղի պատրաստում
Խաղի պատրաստում
Խաղի պատրաստում
Խաղի պատրաստում

Այս խաղը ստեղծելու առաջին քայլը սխեմայի գծապատկեր կազմելն էր այն բոլոր բաղադրիչներով, որոնք մենք կօգտագործենք: Այս համակարգի մուտքերն էին կոճակ 1 -ը, 16 անջատիչը և ժամացույցը: Արդյունքները յոթ հատվածի ցուցադրումն էին և անոդները: Շրջանակային դիագրամը գծելուց հետո մենք Vivado- ի յուրաքանչյուր բաղադրիչի համար գրեցինք առանձին աղբյուրային ֆայլեր և դրանք միասին հավաքեցինք ՝ օգտագործելով հիմնական աղբյուրի ֆայլի տակ գտնվող նավահանգիստների քարտեզները:

Խաղի ամբողջ հիմքը պտտվում է այն բանի շուրջ, որ 16 անջատիչներից մեկը պատահականորեն նշանակում է ռումբով ակտիվ, և խաղացողները չգիտեն, թե որ անջատիչն է ակտիվ, մինչև այդ ակտիվ անջատիչը միացված չլինի: Մենք առցանց ուսումնասիրեցինք պատահական և կեղծ պատահական թվերի գեներատորներ, բայց ի վերջո որոշեցինք, որ 4-բիթանոց հաշվիչ օգտագործելը և համապատասխան անջատիչի ակտիվ լինելը բավական պատահական է այն, ինչ մենք փնտրում էինք: Մենք կարողացանք վերագործարկել մեր 4-բիթանոց հաշվիչը, որը մենք ստեղծել էինք նախորդ նախագծում, որպեսզի կարողանանք աշխատել այս առաջադրանքի համար: Մենք օգտագործեցինք հաշվիչը `0-15-ի միջև պատահական թիվ ստեղծելու համար; ապա հիմնական 1 բաղադրիչում պատահական թվի տասնորդական համարժեքը նշանակեցինք տախտակի համապատասխան անջատիչին: Ինչպես երևում է սխեմատիկայում, և՛ ելքը X («ակտիվ ռումբ») հիմնական 1 բաղադրիչից, և՛ անջատիչները, որոնք խաղացողները միացնում են, անցնում են FSM1: Պետական մեքենան թողարկում է մեկ բիթ Z արժեք, որն այնուհետև կարդում է BC_DEC1- ով: Մեր օգտագործած վերջնական վիճակի մեքենան ունի երկու տարբեր վիճակ. A վիճակում յոթ հատվածի ցուցադրման ելքերը «PLAY» են, և մեքենան մնում է այդ վիճակում, մինչև չճանաչի, որ ակտիվացված անջատիչը շրջված է: Երբ դա տեղի ունենա, FSM- ն անցնում է B վիճակին, որտեղ այն թողնում է «LOSE» յոթ հատվածի ցուցադրման վրա և մնում է այդ վիճակում, մինչև բոլոր 16 անջատիչները շրջվեն դեպի «0»: Երբ այդ պայմանը բավարարվի, FSM- ն մեկ անգամ ևս անցնում է A վիճակին և սպասում խաղացողներին սկսել մեկ այլ խաղ: Մուրի դիագրամը, որն օգնում է հասկանալ այս FSM- ը, ներկայացված է վերևում:

Քայլ 4: Ապագա փոփոխություններ

Մի քանի փոփոխություններ, որոնք մենք հաշվի էինք առնում մեր խաղը կատարելու համար, ներառում են դաշտում ավելի շատ ռումբեր ավելացնելը (հնարավոր է ՝ մեկից երեքի հասցնելը), միավորների հաշվիչ ավելացնելը և մի քանի ռաունդ: Ի վերջո, մենք որոշեցինք դեմ լինել այս բարելավումներին, քանի որ պարզեցինք, որ ավելի երկար, երկարաձգված խաղը սովորաբար ավելի լարված էր և, ի վերջո, ավելի զվարճալի, քան այն խաղը, որը սովորաբար ավարտվում էր երեք կամ չորս անցումներից հետո:

Քայլ 5: Եզրակացություն

Մենք շատ գոհ էինք այս նախագծի վերջնական արդյունքից; ոչ միայն այն պատճառով, որ խաղի վերջնական տարբերակը զվարճալի էր խաղալ, այլև այն պատճառով, որ նախագծի ստեղծումը և ծրագրավորումը մեզանից պահանջում էր օգտագործել առավելագույնը, եթե ոչ այն ամենը, ինչ մենք սովորեցինք այս եռամսյակում: Մենք օգտագործեցինք մատանի, հաշվիչներ, FSM- ներ, ժամացույց, տախտակից օգտագործողի մուտքագրում և ելք դեպի յոթ հատվածի ցուցադրում:

Մենք նաև իմացանք, թե ինչպես մի քանի շարահյուսական սխալներ կարող են ամբողջությամբ կոտրել ծրագիրը (նույնիսկ եթե դրանք լավ համարվեն ծրագրավորման այլ լեզուներում, ինչպիսիք են Python- ը կամ Java- ն) և դա միայն բազմաթիվ սիմուլյացիաներից և կոդի բազմակի կրկնություններից հետո բեռնվել և փորձարկվել տախտակ, վերջապես կկարողանա՞ք ձեր ծածկագրից դուրս հանել բոլոր սխալները:

Խորհուրդ ենք տալիս: