Агуулгын хүснэгт:

Уурхайчин: 5 алхам (зурагтай)
Уурхайчин: 5 алхам (зурагтай)

Видео: Уурхайчин: 5 алхам (зурагтай)

Видео: Уурхайчин: 5 алхам (зурагтай)
Видео: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Арваннэгдүгээр
Anonim
Уурхайчин
Уурхайчин

CPE 133-ийн эцсийн төслийн хувьд Чейз бид хоёр "Minesweeper" тоглоомыг бүтээхээр шийдсэн бөгөөд үүнд Basys-3 самбараас оруулсан оролт, VHDL кодыг ашигласан болно. Тоглоомын илүү сайн нэр нь "Оросын рулет" байж болох ч бид илүү гэр бүлд ээлтэй нэрээр явахыг хүссэн юм. Тоглоом нь хэрэглэгчийг Basys самбар дээрх дунд товчлуурыг дарахад бөмбөг ашиглах боломжтой 16 унтраалгын аль нэгийг санамсаргүй байдлаар хуваарилах явдал юм. Хоёр тоглогч ээлжлэн ээлжлэн ээлжлэн ээлжлэн ээлжлэн тоглогчдын нэгийг нь "бөмбөг" -өөр солих хүртэл ээлжлэн эргүүлнэ. Ийм зүйл тохиолдвол долоон сегментийн дэлгэц нь тоглогч дөнгөж хожигдсон тухай тоглогчдод анхааруулдаг.

Алхам 1: Тойм

Төсөл нь энэ улиралд ашигласан олон VHDL модулийг ашигласан болно. Дөрвөн битийн тоолуурыг нэг ирмэгийг идэвхжүүлэхийн тулд санамсаргүй дөрвөн битийн тоог дуурайх зорилгоор цагны ирмэгийг ашигласан. Долоон сегментийн дэлгэц дээр тоглогчид тоглолтын дунд байх үед 'PLAY', тоглогчдын нэг нь идэвхтэй унтраалгыг эргүүлэх үед 'LOSE' хүртэл янз бүрийн үг оруулахын тулд төлөв байдлын диаграммыг ашигласан болно.

Алхам 2: Материал

  • Digilent, Inc -ийн Basys3 хөгжлийн зөвлөл.
  • Vivado Design Suite BC_DEC.vhd (Энэ файлыг Polylearn дээр бидэнд өгсөн бөгөөд Брайан Мийли бичсэн)
  • T флип флопоор хийсэн 4 битийн тоолуур
  • FSM

Алхам 3: Тоглоом хийх

Тоглоом хийх
Тоглоом хийх
Тоглоом хийх
Тоглоом хийх

Энэ тоглоомыг хийх эхний алхам бол бидний ашиглах бүх бүрэлдэхүүн хэсгүүдийн схемийг зурах явдал байв. Энэ системийн оролтууд нь 1 товч, 16 унтраалга, Цаг байв. Гаралт нь долоон сегментийн дэлгэц ба анодууд байв. Хэлхээний диаграмыг зурсны дараа бид Vivado -д бүрэлдэхүүн хэсэг бүрийн хувьд тусдаа эх файлуудыг бичиж, үндсэн эх файлын дор порт газрын зургийг ашиглан нэгтгэв.

Тоглоомын бүх үндэс нь 16 унтраалгын аль нэгийг тэсрэх бөмбөгөөр санамсаргүй байдлаар хуваарилах явдал бөгөөд тоглогчид энэ түлхүүрийг эргүүлэх хүртэл аль унтраалга идэвхтэй байгааг мэдэхгүй байх явдал юм. Бид онлайнаар санамсаргүй болон хуурамч санамсаргүй тоо үүсгэгчийг хайж үзсэн боловч эцэст нь 4 битийн тоолуур ашиглаж, холбогдох унтраалгыг идэвхжүүлсэн байх нь бидний хайж байсан зүйлд хангалттай санамсаргүй байдлаар шийдсэн юм. Бид энэ даалгаварт ажиллахын тулд өмнөх төсөл дээр бүтээсэн 4 битийн тоолуураа дахин ашиглаж чадсан. Бид тоолуур ашиглан 0-15 хооронд санамсаргүй тоо үүсгэсэн; Дараа нь main1 бүрэлдэхүүн хэсэгт бид санамсаргүй тооны аравтын эквивалентийг самбар дээрх харгалзах унтраалга руу хуваарилав. Схемд үзүүлсэн шиг main1 бүрэлдэхүүн хэсгийн X гаралт (идэвхтэй бөмбөг) болон тоглогчдын асаасан унтраалга хоёулаа FSM1 рүү очдог. Мужийн машин нь нэг битийн Z утгыг гаргадаг бөгөөд үүнийг BC_DEC1 уншдаг. Бидний ашигладаг Finite State Machine нь хоёр өөр төлөвтэй: А төлөвт, долоон сегментийн дэлгэц нь 'PLAY' гаргадаг бөгөөд идэвхжүүлсэн унтраалгыг эргүүлэхийг хүлээн зөвшөөрөх хүртэл машин энэ төлөвт үлддэг. Нэгэнт ийм зүйл болсны дараа FSM нь "LOSE" гэсэн долоон сегментийн дэлгэц дээр гараад бүх 16 унтраалгыг "0" болгон эргүүлэх хүртэл энэ төлөвт байх болно. Энэ нөхцөл хангагдсан тохиолдолд FSM дахин А төлөвт орж тоглогчдыг өөр тоглоом эхлүүлэхийг хүлээж байна. Энэхүү FSM -ийг ойлгоход туслах Мур диаграммыг дээр үзүүлэв.

Алхам 4: Ирээдүйн өөрчлөлтүүд

Бидний тоглоомд хийх гэж байсан хэд хэдэн өөрчлөлтийн хүрээнд бөмбөгийг талбайд нэмж оруулах (магадгүй нэгээс гурав хүртэл нэмэгдэх магадлалтай), онооны тоолуур болон олон тойрог оруулах зэрэг орно. Эцэст нь бид эдгээр сайжруулалтын эсрэг шийдсэн бөгөөд урт, сунгасан тоглоом тоглох нь ихэвчлэн гурав, дөрвөн удаа эргүүлсний дараа дуусдаг тоглоомоос илүү хурцадмал, эцэст нь илүү хөгжилтэй байдгийг олж мэдсэн.

Алхам 5: Дүгнэлт

Энэ төслийн эцсийн үр дүнд бид маш их баяртай байсан; Тоглоомын эцсийн хувилбар тоглох нь зугаатай байсан төдийгүй төслийг бүтээх, програмчлах нь биднээс энэ улиралд сурч мэдсэн бүх зүйлээ ашиглахыг шаардсан юм. Бид Flip Flops, тоолуур, FSMs, цаг, самбараас хэрэглэгчийн оролт, долоон сегментийн дэлгэцийн гаралтыг ашигласан.

Хэд хэдэн синтаксийн алдаа нь програмыг хэрхэн бүрмөсөн эвдэж болохыг (Python эсвэл Java гэх мэт бусад програмчлалын хэл дээр сайн гэж тооцогддог байсан ч гэсэн) зөвхөн кодын олон симуляци болон олон давталтын дараа байршуулж, туршиж үзсэний дараа л олж мэдсэн. Удирдах зөвлөл, та эцэст нь кодынхоо бүх алдааг арилгах боломжтой болно.

Зөвлөмж болгож буй: