جدول المحتويات:
- الخطوة 1: مقدمة
- الخطوة 2: المواد
- الخطوة 3: تصميم الصندوق الأسود لمخطط المستوى الأعلى
- الخطوة 4: CLKDivide
- الخطوة 5: تحويل كتلة العملية
- الخطوة 6: آلة الحالة المحدودة
- الخطوة 7: التحكم في كتلة عملية العرض مع المستوى
- الخطوة 8: التحكم في سرعة LED مع المستوى
- الخطوة 9: تجميع الأجهزة
- الخطوة 10: استمتع
فيديو: لعبة رد فعل FPGA: 10 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
بواسطة Summer Rutherford و Regita Soetandar
الخطوة 1: مقدمة
بالنسبة لمشروعنا النهائي لـ CPE 133 ، قمنا بتصميم لعبة رد فعل في VHDL للوحة Basys3. يمكن مقارنة هذه اللعبة بشكل كبير بلعبة الأركيد "Stacker" حيث يتعين على اللاعب إسقاط الكتل في الوقت المناسب. يتم توصيل لوحة Basys3 بلوح يحتوي على مصابيح LED بديلة. سوف تتناوب مصابيح LED هذه بتردد معين ، اعتمادًا على المستوى. تستخدم هذه اللعبة مقسم الساعة وشاشة العرض المكونة من 4 أرقام و 7 مقاطع ، بالإضافة إلى آلة الحالة المحدودة. عندما ينشط اللاعب المفتاح الصحيح بينما يضيء مؤشر LED الأوسط ، سيتقدم اللاعب إلى المستوى التالي من اللعبة ، مما يزيد من وتيرة مصابيح LED البديلة. هذا يجعل كل مستوى متتالي أصعب من المستوى السابق. عندما يتغلب اللاعب بنجاح على المستوى 7 ، أعلى مستوى ، ستظهر رسالة على شاشة المقطع وستومض جميع مصابيح LED في نفس الوقت وتنطفئ.
الخطوة 2: المواد
المواد التي ستحتاجها هي:
- لوحة Digilent Basys3 مع كابل USB صغير
- اللوح
- 5 مصابيح LED
- 5 مقاومات (استخدمنا 220 أوم)
- 11 سلك توصيل
- كمبيوتر مع Vivado
الخطوة 3: تصميم الصندوق الأسود لمخطط المستوى الأعلى
كما ترى ، يبدأ مخطط كتلة المستوى الأعلى لدينا بالحصول على الساعات المطلوبة من الوحدة الفرعية لدينا ، ClkDivide. هذه الساعات هي مدخلات في كتل العملية المختلفة. بشكل أساسي ، يجب أن تدرك اللعبة أنه عندما يقوم المستخدم بتشغيل المفتاح بشكل صحيح ، يجب أن تبدأ مصابيح LED بالتناوب بشكل أسرع ويجب أن ترتفع الشاشة إلى مستوى واحد. قد يبدو مخطط الكتلة مجنونًا بعض الشيء ، ولكن هذا بسبب وجود العديد من الإشارات التي تم إنشاؤها في عملية معينة ومن ثم تحدد هذه الإشارة إشارة أخرى في كتلة عملية أخرى.
في النهاية ، المدخلات الوحيدة التي تأخذها اللعبة هي ساعة الإدخال على لوحة Basys3 التي تعمل بسرعة 100 ميجا هرتز ، وسبعة مفاتيح على لوحة Basys3 ، وزر إعادة الضبط. ما يتم إخراجه هو الأنود للشاشة ذات الأجزاء السبعة ، والأجزاء السبعة للعرض ، ومصابيح LED.
الخطوة 4: CLKDivide
أنشأت الوحدة الفرعية لمقسم الساعة ساعة أبطأ اعتمادًا على القيمة التي قمنا بتعيينها لها في ملفنا الرئيسي. استخدمنا هذه الوحدة الفرعية لتحديد Clk400 و PushClk و newlck. تأخذ هذه الوحدة الفرعية ساعة ومقسّم 32 بت كمدخلات. يتم إخراج ساعة بطيئة. هناك كتلة عملية للمقسم والساعة البطيئة. في هذه العملية ، يوجد متغير مؤقت ، نسميه العد ، يتم احتسابه في كل مرة يتم فيها ضرب حافة صاعدة للساعة المدخلة. بمجرد وصولها إلى رقم المقسوم عليه ، يتم تبديل الساعة البطيئة ويعيد العد إلى الصفر.
الخطوة 5: تحويل كتلة العملية
تتحكم كتلة عملية التحول في الحركة المتناوبة وسرعة مصابيح LED. في قائمة الحساسية توجد إشارات newclk و Stop. يتسبب التوقف في تأخير قصير عندما يتجاوز المستخدم المستوى. إذا لم يكن التوقف مرتفعًا ، فإن مصابيح LED تتبدل كالمعتاد بناءً على سرعة newclk. يتم التحكم في هذا النمط البديل بواسطة متغيرين: التتبع والعد. يحدد Count أي مؤشر LED يجب أن يكون قيد التشغيل ، بينما يحدد Track ما إذا كان يجب أن يتم العد لأعلى أو لأسفل. هناك إشارة أخرى ، نهائية ، تنطبق فقط عندما يكون المستوى "111" ، مما يشير إلى أن اللاعب قد تغلب على اللعبة. يتناوب النهائي بين 0 و 1 كل حافة ساعة لتشغيل وإيقاف تشغيل مصابيح LED بشكل مستمر. هذا مجرد عنصر مرئي للعرض النهائي.
عملية التحول هذه هي المكان المثالي للبدء في هذا المشروع. إذا كان بإمكانك الحصول على مصابيح LED الخاصة بك بالتناوب بشكل صحيح ومتسق ، فمن هنا عليك فقط إضافة السلوك عند رفع المستوى!
الخطوة 6: آلة الحالة المحدودة
لقد أنشأنا آلة الحالة المحدودة لإملاء السلوك عند الضغط على مفتاح الإدخال أو زر إعادة الضبط. كل حالة هي "مستوى" وإذا تم تشغيل المفتاح في وقت غير صحيح أو تم الضغط على إعادة الضبط ، يعود المستوى مرة أخرى إلى "000". خلاف ذلك ، إذا تم تشغيل المفتاح بشكل صحيح ، فإن المستوى يتحرك لأعلى حتى يصل إلى الحالة النهائية ، "111" ويحدث عرض النهاية. تعتمد FSM على كتلي العملية sync_proc و comb_proc. يستخدم Sync_proc الساعة التي أطلقنا عليها اسم PushClk. تتحكم هذه الساعة في مدى سرعة تحول الحالة التالية إلى الحالة الحالية. يجب أن تكون هذه الساعة سريعة جدًا ؛ اخترنا سرعة كانت أسرع مرتين تقريبًا من أسرع سرعة LED لدينا.
قمنا بتنفيذ هذا الرمز باستخدام FSM للمستويات ؛ ومع ذلك ، بعد هذا المشروع ، أدركنا أن الاستخدام الأكثر كفاءة لـ FSM ربما كان يتمثل في حالة العد ، أو حالة إعادة التعيين ، أو حالة الإقامة. إذا لم يتم الضغط على أي شيء ، فهو في حالة البقاء. في حالة الضغط على إعادة الضبط أو العبث باللاعب ، يكون في حالة إعادة الضبط. إذا تم الضغط عليه بشكل صحيح ، فهو في حالة العد. هناك العديد من الطرق الأخرى لاستخدام FSM في هذه اللعبة أيضًا!
الخطوة 7: التحكم في كتلة عملية العرض مع المستوى
يتحكم المستوى في كتلة عملية العرض. المتغيرات في قائمة الحساسية هي Level و Reset و Clk400. يبدأ عرض الأجزاء السبعة بعرض "1" للمستوى الأول. يتم احتسابها حتى 7 في كل مرة يمر فيها المستخدم بمستوى لتظهر للمستخدم المستوى الذي وصل إليه. بمجرد أن يجتاز المستخدم المستوى 7 ، فإنه يعرض "COOL" للإشارة إلى أن اللاعب قد تغلب على اللعبة. تعمل شاشة "COOL" هذه من ساعة 400 هرتز التي أطلقنا عليها Clk400. إذا تم الضغط على "إعادة تعيين" ، تعود الشاشة إلى "1".
الخطوة 8: التحكم في سرعة LED مع المستوى
أخيرًا ، يتحكم المستوى في سرعة مصابيح LED. المستوى هو الإشارة الوحيدة في قائمة الحساسية. D1 هي الإشارة التي تدخل في عملية Clock Divider للحصول على newclk. في كل مرة يتم تغيير المستوى ، أو تغيير الحالة ، كتلة العملية "السرعة". تحدد هذه العملية قيمة D1. هناك 8 قيم محددة لـ D1 اخترناها بناءً على السرعة التي أردنا أن يعمل بها كل مستوى. يصبح D1 أصغر كلما زاد مستوى الوقت بحيث يعمل newclk بشكل أسرع.
الخطوة 9: تجميع الأجهزة
قمنا بتوصيل اللوح بـ Basys3 بأحد موصلات pmod. تم استخدام ستة من منافذ pmod لتوصيل موصل ذكر إلى ذكر ، واحد للأرضي وخمسة أخرى لمصابيح LED الخمسة. وضعنا أيضًا مقاومًا لكل LED. تبلغ درجة حرارة هذه المقاومات 220 درجة وتمنع المصابيح من أن تكون دائرة قصيرة ومحترقة. على الرغم من أن كل LED لديه بعض المقاومة ، فإن المقاومة ليست كافية لإعاقة الجهد من المصدر.
الخطوة 10: استمتع
هذه اللعبة سهلة جدا للعب. يبدأ المشغل بالمفتاح 1 أقصى يمين اللوحة ، V17. يجب عليهم قلب المفتاح عالياً عندما يكون مؤشر LED الأوسط قيد التشغيل. ثم يقومون بتحريك مفتاح واحد إلى اليسار ويفعلون نفس الشيء! إذا وصل اللاعب إلى النهاية ، سينتهي به الأمر على المفتاح السابع ، W14. إذا تغلبوا على اللعبة ، سيشاهدون عرض نهاية ممتع حقًا!
شيء يجب ملاحظته هو أنه عند إنشاء هذه اللعبة ، فإن السرعات متروكة لك تمامًا! إذا كانت السرعات التي اخترناها بطيئة جدًا ، فلا تتردد في تسريعها وجعلها أكثر صعوبة! لا يوجد أيضًا عدد محدد من المستويات. إذا كنت ترغب في جعله يحتوي على المزيد من المستويات ، فهناك تعديلات يجب إجراؤها على FSM وكتل العملية التي يحددها Level ، ولكن هذه تغييرات بسيطة للغاية.
اخترنا أيضًا استخدام المفاتيح الموجودة على اللوحة كمدخلات للمستخدم ، ولكن هذا ممكن أيضًا باستخدام زر على لوحة Basys3 ؛ سيؤدي الزر إلى التخلص من الحاجة إلى إعادة تعيين المفاتيح في كل مرة يبدأ فيها المستخدم من جديد. استخدمنا زرًا في البداية ، ولكن هذا تسبب في حدوث أخطاء في تحديد المستوى لأنه قد يقفز مستويات متعددة إذا تم الضغط على حافتين صاعدتين من PushClk عند الضغط على الزر.
يوجد أدناه مقطع فيديو يوضح كيفية اللعب ، ويمر عبر المستويات الأربعة الأولى ، وعرض النهاية النهائية.
الملف الرئيسي لهذا المشروع مدرج أدناه.
مصادر
دليل مرجعي Basys3
إلهام المشروع - لعبة Arduino Stop It
موصى به:
اضغط على Tap Rainbow - لعبة رد فعل سريع للاعبين: 4 خطوات (بالصور)
Tap Tap Rainbow - لعبة تفاعل سريع للاعبين: منذ أسبوعين ، كانت لدى ابنتي فكرة عبقرية لإنشاء لعبة تفاعل سريع بألوان قوس قزح (إنها خبيرة قوس قزح: D). أحببت الفكرة على الفور وبدأنا نفكر في كيفية تحويلها إلى لعبة حقيقية ، وكانت الفكرة. لديك قوس قزح في
555 لعبة رد فعل الموقت: 5 خطوات
لعبة 555 Timer Reaction: الجمهور المستهدف هذه التعليمات موجهة للأشخاص المهتمين بالدوائر (مع القليل من الخلفية) الذين يبحثون عن لعبة بسيطة يمكنك إنشاؤها باستخدام عدد قليل من المكونات الرخيصة. مستوى الصعوبة سيكون هذا صعبًا إذا
لعبة رد فعل اردوينو المضحكة: 3 خطوات
لعبة رد فعل اردوينو المضحكة: لعبة تفاعل أردوينو مضحكة لجميع أفراد الأسرة ؛) استنادًا إلى اتصال Bluetooth عبر منصة. ما عليك سوى بعض عناصر Arduino وهاتف ذكي يعمل بنظام Android وصندوق أحذية. إذا لم يكن لديك أي من هؤلاء ، فآمن به إيمانًا راسخًا: لا يوجد شيء
تطبيق زر قابل للتمديد مع ردود فعل الاهتزاز: 7 خطوات (بالصور)
تطبيق زر قابل للتمديد مع ملاحظات الاهتزاز: في هذا البرنامج التعليمي ، سنشرح لك أولاً كيفية استخدام Arduino Uno للتحكم في محرك الاهتزاز عبر زر ممتد. تتضمن معظم البرامج التعليمية على أزرار الضغط الزر الموجود على لوحة التجارب المادية ، بينما في هذا البرنامج التعليمي ، يكون الزر
التمشي على سطح القمر: ردود فعل صناعية اصطناعية: 5 خطوات
تمشي على سطح القمر: جهاز تعويضي ردود الفعل اللمسية: الوصف: Moonwalk هو جهاز اصطناعي حساس للضغط للأفراد الذين يعانون من ضعف الإحساس باللمس (أعراض تشبه أعراض الاعتلال العصبي). تم تصميم Moonwalk لمساعدة الأفراد على تلقي ردود فعل لمسية مفيدة عندما تتلامس أقدامهم مع