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

لعبة الكويكب FPGA: 7 خطوات (بالصور)
لعبة الكويكب FPGA: 7 خطوات (بالصور)

فيديو: لعبة الكويكب FPGA: 7 خطوات (بالصور)

فيديو: لعبة الكويكب FPGA: 7 خطوات (بالصور)
فيديو: December AMA | December 10, 2021 2024, اكتوبر
Anonim
لعبة الكويكب FPGA
لعبة الكويكب FPGA

بالنسبة لمشروعنا النهائي CPE 133 ، قررنا إنشاء لعبة كويكبات على FPGA باستخدام مفتاحي ضغط وشاشة عرض من 7 أجزاء. تعمل اللعبة بحيث يولد كويكب في واحد من ثلاثة صفوف تم اختيارها عشوائيًا ، ويأتي سريعًا نحو السفينة على الجانب الآخر من شاشة العرض المكونة من 7 أجزاء. يمكن استخدام الزر العلوي والزر السفلي لتحريك سفينتك بعيدًا عن طريق الكويكب. عند عدم القيام بذلك ، تقرأ الشاشة "BAnG" للحظة ثم تعيد تشغيل اللعبة بسرعة حتى يتمكن المستخدم من المحاولة مرة أخرى. فيما يلي وصف موجز لكيفية تنفيذ المشروع بحيث يمكن لأي مستخدم تكرار تصميمنا أو تحسينه.

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

ملخص
ملخص
ملخص
ملخص

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

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

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

تم استخدام FSM لوحدة فك ترميز العرض ذات الأجزاء السبعة ليس فقط لعرض السفينة والصخور ولكن أيضًا لعرض "BAnG" عندما يكون موضع السفينة وموضع الصخور متماثلين.

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

المواد المستخدمة في المشروع هي:

  • مجلس تطوير Basys3 من Digilent، Inc.
  • جناح تصميم فيفادو
  • sseg_dec.vhd (تم توفير هذا الملف لنا على Polylearn وكتبه براين ميلي)
  • Clk_div.vhd (تم توفير هذا الملف لنا على Polylearn وكتبه براين ميلي)
  • ثلاث آلات حالة محدودة (FSMs)

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

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

تم إنشاء وحدة اللعبة باستخدام النمذجة السلوكية لوصف حالة السفينة والصخور في ولايات ميكرونيزيا الموحدة الخاصة بها. وتتمثل ميزة هذا في أنه من الأسهل بكثير نمذجة الدائرة بشكل سلوكي من خلال وصف ما تفعله بدلاً من معرفة جميع المكونات اللازمة لتصميم الأجهزة.

تم إجراء حالات الصخور باستخدام مولد رقم عشوائي زائف للموضع الأول للصخرة. لتحقيق ذلك ، أعطينا المولد ساعته الخاصة التي كانت سريعة للغاية بالنسبة لسرعة اللعبة. على كل حافة صاعدة ، يتم زيادة رقم مكون من ثلاث بتات ، وتتوافق جميع قيمه مع واحدة من ثلاث حالات بداية للسفينة. لذلك ، تتوافق ثلاث قيم مع الموضع 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: التعديلات المستقبلية

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

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

لقد ساعدنا هذا المشروع على فهم أفضل لآلات الحالة المحدودة والساعات والعرض التفاعلي على شاشات العرض المكونة من سبعة أجزاء.

أهم شيء في آلات الحالة المحدودة هو أنه من المهم معرفة (تذكر) الحالة التي أنت عليها حاليًا من أجل الانتقال إلى الحالة التالية المرغوبة. ومن المفارقات أن نصائح الحياة الجيدة ؛ يجب أن تعرف أين أنت لتعرف إلى أين أنت ذاهب.

من خلال التلاعب في حالات مختلفة من الساعات ، تمكنا من إنشاء أرقام عشوائيًا ، ونقل الصخرة إلى الموضع التالي ، وإدارة عرض رسالة السفينة والصخرة ونهاية اللعبة.

علمنا أنه لا يمكن عرض أكثر من أنود في نفس الوقت. استفادت الوحدة المعطاة لنا من أن العين البشرية يمكنها فقط رؤية الفرق حتى تردد معين. لذلك تم اختيار تردد أعلى لتبديل الأنودات. إن رؤية السفينة والصخرة في نفس الوقت هي في الواقع إشارة لأن كل منهما يتم عرضهما على حدة ، ولكن بسرعة كبيرة. تم تطبيق هذا المفهوم لعرض حركة السفينة والصخرة ورسالة "BAnG".

موصى به: