جدول المحتويات:

كاسحة ألغام: 5 خطوات (بالصور)
كاسحة ألغام: 5 خطوات (بالصور)

فيديو: كاسحة ألغام: 5 خطوات (بالصور)

فيديو: كاسحة ألغام: 5 خطوات (بالصور)
فيديو: مأرب .. تدشين عمل أول كاسحة ألغام من صنع المقاومة الشعبية | تقرير: وئام الاكحلي 2024, يوليو
Anonim
كاسحة ألغام
كاسحة ألغام

بالنسبة لمشروعنا النهائي CPE 133 ، قررت أنا و Chase إنشاء لعبة "كاسحة ألغام" تستخدم الزر وتبديل المدخلات من لوحة Basys-3 بالإضافة إلى كود VHDL. يمكن أن يكون الاسم الأفضل للعبة هو "الروليت الروسي" ، لكننا أردنا استخدام اسم أكثر ملائمة للعائلة. تتضمن اللعبة أن يقوم المستخدم بالضغط على الزر الأوسط على لوحة Basys لتعيين أحد المفاتيح الستة عشر بشكل عشوائي ليكون "نشطًا" مع قنبلة. ثم يتناوب لاعبان على تقليب المفاتيح ، واحدًا تلو الآخر ، حتى يقوم أحد اللاعبين بقلب المفتاح باستخدام "القنبلة". عندما يحدث ذلك ، تنبه شاشة الأجزاء السبعة اللاعبين إلى أن هذا اللاعب قد خسر اللعبة للتو.

الخطوة 1: نظرة عامة

استخدم المشروع العديد من وحدات VHDL التي استخدمناها على مدار هذا الربع. تم استخدام عداد من أربع بتات مع حافة الساعة لمحاكاة رقم عشوائي من أربع بتات لتنشيط أحد المفاتيح. تم استخدام مخطط الحالة أيضًا لإخراج كلمات مختلفة لعرض الأجزاء السبعة ، بدءًا من "PLAY" عندما يكون اللاعبون في منتصف لعبتهم ، إلى "LOSE" عندما يقلب أحد اللاعبين التبديل النشط.

الخطوة 2: المواد

  • مجلس تطوير Basys3 من Digilent، Inc.
  • Vivado Design Suite BC_DEC.vhd (تم توفير هذا الملف لنا على Polylearn وكتبه براين ميلي)
  • عداد 4 بت مصنوع من زحافات تي
  • ولايات ميكرونيزيا الموحدة

الخطوة الثالثة: صنع اللعبة

صنع اللعبة
صنع اللعبة
صنع اللعبة
صنع اللعبة

كانت الخطوة الأولى نحو صنع هذه اللعبة هي رسم مخطط دائري بكل المكونات التي سنستخدمها. كانت مدخلات هذا النظام هي الزر 1 والمفاتيح 16 والساعة. كانت النواتج هي عرض الأجزاء السبعة والأنودات. بعد رسم مخطط الدائرة ، كتبنا ملفات مصدر فردية لكل مكون في Vivado وقمنا بتجميعها معًا باستخدام خرائط المنفذ ضمن ملف المصدر الرئيسي.

يدور الأساس الكامل للعبة حول التخصيص العشوائي لأحد المفاتيح الـ 16 ليكون نشطًا بقنبلة ، ولا يعرف اللاعبون أي مفتاح نشط حتى يتم قلب هذا المفتاح النشط. نظرنا في مولدات الأرقام العشوائية والعشوائية الزائفة عبر الإنترنت ، لكننا قررنا في النهاية أن استخدام عداد 4 بت وتعيين المفتاح المقابل ليكون نشطًا هو عشوائي بما يكفي لما كنا نبحث عنه. تمكنا من إعادة تعيين الغرض من عداد 4 بت الذي أنشأناه في مشروع سابق حتى نتمكن من العمل في هذه المهمة. استخدمنا العداد لإنشاء رقم عشوائي بين 0-15 ؛ ثم في المكون main1 ، قمنا بتعيين المكافئ العشري للرقم العشوائي لمفتاحه المقابل على اللوحة. كما هو موضح في التخطيطي ، ينتقل كل من الناتج X ("القنبلة النشطة") من المكون الرئيسي 1 والمفاتيح التي يقوم اللاعبون بتشغيلها إلى FSM1. تقوم آلة الحالة بإخراج قيمة Z ذات بت واحد والتي يتم قراءتها بعد ذلك بواسطة BC_DEC1. آلة الحالة المحدودة التي استخدمناها لها حالتان مختلفتان: في الحالة A ، تُخرج الشاشة السبعة مقاطع "PLAY" وتظل الآلة في هذه الحالة حتى تتعرف على أن المفتاح النشط قد تم قلبه. بمجرد حدوث ذلك ، تنتقل FSM إلى الحالة B حيث تُخرج "LOSE" إلى عرض الأجزاء السبعة وتبقى في هذه الحالة حتى يتم قلب جميع المفاتيح الـ 16 إلى "0". عندما يتم استيفاء هذا الشرط ، تذهب FSM مرة أخرى إلى الحالة A وتنتظر اللاعبين لبدء لعبة أخرى. يظهر أعلاه مخطط مور للمساعدة في فهم ولايات ميكرونيزيا الموحدة.

الخطوة 4: التعديلات المستقبلية

تتضمن بعض التعديلات التي كنا نفكر في إجرائها على لعبتنا إضافة المزيد من القنابل إلى الميدان (ربما تزيد من واحد إلى ثلاثة) ، إضافة عداد نقاط وجولات متعددة. لقد قررنا في النهاية عدم هذه التحسينات ، حيث وجدنا أن لعب لعبة طويلة وممتدة كان عادةً أكثر توتراً وفي النهاية أكثر متعة من اللعبة التي تنتهي عادةً بعد ثلاثة أو أربعة تقلبات.

الخطوة 5: الخاتمة

كنا سعداء للغاية بالنتيجة النهائية لهذا المشروع. ليس فقط لأن الإصدار الأخير من اللعبة كان ممتعًا ، ولكن أيضًا لأن إنشاء المشروع وبرمجته يتطلب منا الاستفادة من معظم ، إن لم يكن كل ما تعلمناه هذا الربع. استخدمنا Flip Flops ، والعدادات ، و FSMs ، والساعة ، وإدخال المستخدم من اللوحة ، والإخراج إلى عرض الأجزاء السبعة.

تعلمنا أيضًا كيف يمكن لبعض الأخطاء النحوية أن تعطل البرنامج تمامًا (حتى لو تم اعتبارها جيدة في لغات البرمجة الأخرى مثل Python أو Java) وذلك فقط بعد عمليات المحاكاة المتعددة والتكرارات المتعددة للشفرة التي يتم تحميلها واختبارها على اللوحة ، هل ستتمكن أخيرًا من إزالة جميع الأخطاء من التعليمات البرمجية الخاصة بك.

موصى به: