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

FPGA астероидын тоглоом: 7 алхам (зурагтай)
FPGA астероидын тоглоом: 7 алхам (зурагтай)

Видео: FPGA астероидын тоглоом: 7 алхам (зурагтай)

Видео: FPGA астероидын тоглоом: 7 алхам (зурагтай)
Видео: SCP-1730 Что случилось с сайта-13? 2024, Аравдугаар сар
Anonim
FPGA астероидын тоглоом
FPGA астероидын тоглоом

CPE 133-ийн эцсийн төслийн хувьд бид FPGA дээр хоёр товчлууртай унтраалга, 7 сегментийн дэлгэц ашиглан астероидын тоглоом бүтээхээр шийдсэн. Энэхүү тоглоом нь санамсаргүй байдлаар сонгосон гурван эгнээний аль нэгэнд астероид үүсч, 7 сегментийн дэлгэцийн нөгөө талд хөлөг онгоц руу дайрч ирдэг. Дээд ба доод товчлуурыг ашиглан таны хөлөг онгоцыг астероидын замаас гаргах боломжтой. Үүнийг хийж чадаагүй тохиолдолд дэлгэц дээр 'BAnG' гэж хэсэг хугацаанд уншиж, тоглоомыг хурдан дахин эхлүүлэх тул хэрэглэгч дахин оролдож болно. Дараахь зүйл бол ямар ч хэрэглэгч бидний загварыг хуулбарлах эсвэл сайжруулахын тулд уг төслийг хэрхэн хийсэн тухай товч тайлбар юм.

Алхам 1: Тойм

Тойм
Тойм
Тойм
Тойм

Төсөл нь ихэвчлэн хөлөг онгоц, хадны байрлалуудын өөр өөр утгыг хадгалж, харуулдаг мужуудын хооронд логикийг ашиглан логикийг ашигладаг Finite State Machines (FSMs) -ээс бүрддэг. Хоёр үндсэн модуль бол рок ба усан онгоцны FSM тоглоом бөгөөд VHDL-ийн маш энгийн бүтцийн загварыг ашиглан нэгтгэсэн 7 сегментээс хоёр сегментийн дэлгэц декодлогч FSM юм.

FSMs нь хөлөг онгоцны байрлал, хадны байрлал, 7 сегментийн декодерын зориулалтаар бүтээгдсэн. Усан онгоцны FSM -ийн зорилго нь тоглогч дээш эсвэл доош товчлуурыг дарахад хөлөг онгоц зөв байрлал руу шилжих боломжтой юм. Зөв байрлалд шилжихийн тулд аль байрлалд хамгийн сүүлд байснаа санах хэрэгтэй тул FSM шаардлагатай байна.

Чулуулгийн FSM -ийн зорилго нь чулууг аль эгнээнд байгаа болон тухайн эгнээний хамгийн сүүлийн байрлалд үндэслэн зөв байрлалд шилжүүлэх явдал юм. Нэмж дурдахад, энэ нь үүнийг харуулах модулийн байрлалыг хянаж, дараа нь гарч ирэх шинэ мөрийг хуурамчаар санамсаргүй байдлаар сонгоно.

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

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

Төсөлд дараахь материалыг ашигласан болно.

  • Digilent, Inc -ийн Basys3 хөгжлийн зөвлөл.
  • Vivado загварын иж бүрдэл
  • 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 дахин ихэсч, дахин эхлүүлээд дахин удаашрах болно. Энэ нь тоглоомын хүндрэлийг нэмэгдүүлж, үүнийг хэрэгжүүлсэн тохиолдолд хэрэглэгчдэд илүү хөгжилтэй болгоно, мөн рокын дараагийн төлөвийн цагийн хамгийн их тоонд хувьсагч үүсгэж, астероид унахгүй байх бүрт энэ хувьсагчийг 1.5 -аар үржүүлж болно. цохихгүй бөгөөд рок цохих бүрт үүнийг анхны утга болгоно.

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

Энэхүү төсөл нь хязгаарлагдмал төлөвт байгаа машин, цаг, долоон сегментийн дэлгэц дээр интерактив байдлаар харуулахыг илүү сайн ойлгоход бидэнд тусалсан юм.

Хязгаарлагдмал төлөв байдлын машинуудын хамгийн том зүйл бол дараагийн хүссэн төлөв рүү шилжихийн тулд яг одоо ямар байдалд байгаагаа мэдэх (санах) чухал юм. Хачирхалтай нь, амьдралын сайн зөвлөгөө; Та хаашаа явж байгаагаа мэдэж байх ёстой.

Цагны янз бүрийн тохиолдлуудыг өөрчилснөөр бид санамсаргүй байдлаар тоо үүсгэх, чулууг дараагийн байрлалд шилжүүлэх, усан онгоц, хад, тоглоомын төгсгөлийн зурвасыг удирдах боломжтой болсон.

Нэгээс олон анодыг нэгэн зэрэг харуулах боломжгүй гэдгийг бид мэдсэн. Бидэнд өгсөн модуль нь хүний нүд зөвхөн тодорхой давтамж хүртэлх ялгааг харж чаддаг давуу талтай байв. Тиймээс анод солих илүү өндөр давтамжийг сонгосон. Хөлөг онгоц, хад чулууг нэгэн зэрэг харж байгаа нь үнэн хэрэгтээ тус тусад нь харуулсан тул маш хурдан дүрслэн харуулсан болно. Энэхүү үзэл баримтлалыг хөлөг онгоц, хадны хөдөлгөөн, "BAnG" мессежийг харуулахад ашигласан болно.

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