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

لعبة بونج: 6 خطوات
لعبة بونج: 6 خطوات

فيديو: لعبة بونج: 6 خطوات

فيديو: لعبة بونج: 6 خطوات
فيديو: 🤣 تحدي لا تضحك 💃 نسخة ازاي ترقص شعبي في 6 خطوات بس (مسخرة) 2024, يوليو
Anonim
لعبة بونغ
لعبة بونغ

المواد:

مجلس Basys3 FPGA

كابل VGA

فيفادو

الغرض من هذه التعليمات هو تطوير لعبة بونج يتم عرضها على الشاشة. سيستخدم المشروع VHDL للبرمجة ويستخدم Basys3 FPGA لتنفيذ الكود ونقل الصورة باستخدام واجهة VGA. هذا البرنامج التعليمي مخصص للأشخاص الذين لديهم القليل من المعرفة المسبقة بـ VHDL. سيتم تقسيم البرنامج التعليمي إلى 6 أقسام مختلفة: نظرة عامة ، العملية ، معالج النتيجة ، إنشاء الصور ، لعبة بونج ، و VGA.

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

ملخص
ملخص

الصورة أعلاه هي التصميم التخطيطي العام للمشروع

الهدف من اللعبة:

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

بنية النظام:

الرسم البياني أدناه هو مخطط كتلة المستوى الأعلى العام الأساسي للنظام. يحتوي النظام على أربعة مدخلات: الزر R ، والزر L ، والبدء ، وإعادة التعيين ، والساعة. يحتوي على مخرجات مزامنة أفقية ورأسية ، RBG (التي تشير إلى لون البكسل في موقع معين) ، والنتيجة (التي تعمل بمثابة ناقل إلى شاشة العرض المكونة من 7 أجزاء). ، وسيتم استخدام الأزرار الانضغاطية اليسرى واليمنى لتحريك المضرب في اتجاهات كل منهما. سيتم استخدام شاشة 7-Segment لتسجيل النتيجة ، وهي عدد الثواني التي لعبها المستخدم دون أن يخسر اللعبة. سيتم عرض الرقم كرقم عشري.

هندسة الدوائر: سنبني أجهزتنا باستخدام FSM واحد يحتوي على FSM أصغر ، وستتحكم FSM الفرعية في صعوبة اللعبة بينما تتحكم FSM الرئيسية في التدفق الكلي للعبة. ستستخدم أجهزتنا أيضًا ثلاثة فواصل للساعة على الأقل ، أحدها للنتيجة (الوقت) ، وواحد لمعدل تحديث الشاشة والآخر متصل بإخراج DeMux حتى نتمكن من التحكم في سرعة اللعبة سوف تستمر بكميات متزايدة من الصعوبة. ستتحرك اللعبة بشكل أسرع كلما طالت مدة اللعب. سيكون لدينا مدخلات التحكم في DeMux تكون الحالة الحالية لـ sub-FSM حتى نتمكن من التحكم في السرعة التي ستستغرقها اللعبة من خلال المدة التي تلعبها فيها. سنستخدم عددًا قليلاً من العدادات ، واحدة لتحديث العرض والأخرى لحساب النتيجة بينما تستمر في اللعب. يحتوي هذا المشروع على وحدتين رئيسيتين ومجموعة من الوحدات الفرعية التي ستعالج بيانات الإدخال. الوحدتان الفرعيتان الرئيسيتان هما VGA Driver ، بالإضافة إلى وحدة منطق الزر. سيتألف برنامج تشغيل VGA من ذاكرة قابلة للبرمجة ومقسم ساعة ومنطق يتعامل مع الإخراج من أجل اللون. ستتألف وحدة منطق الزر أيضًا من مقسم ساعة ، وذاكرة قابلة للبرمجة ، بالإضافة إلى محول ثنائي إلى عشري لشاشة 7-Segment مع مقسم الساعة الخاص بها.

الخطوة 2: معالجة الصورة

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

الخطوة 3: معالج النقاط

معالج النتيجة
معالج النتيجة

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

مقسم الساعة:

يحتوي مقسم الساعة على مدخلات Clk (ساعة) و CEN (تمكين في) و Div (مقسم) وإخراج Clk_out. إذا كانت إشارة التمكين قيد التشغيل ، فستحسب الساعة على الحافة الصاعدة.

عداد النتيجة

يحتوي عداد Thescore على مدخلات Clk (Clock) و RST (إعادة تعيين) ومخرجات Clk_Out و Q والتي تعمل بشكل أساسي كمخرجات النتيجة.

سائق الجزء

يحتوي برنامج تشغيل المقطع على مدخلات D1 و D10 و D100 و D1000 و Clock. الأرقام بعد "D" تشير إلى المكان العشري على شاشة 7 أجزاء. النواتج هي الأنودات والأرقام. الساعة تحسب وتخصص الأرقام وموضعها. على سبيل المثال ، سيتم عرض "9" في خانة الآحاد مع "0" في خانة الآلاف والمئات والعشرات. عندما يتحول إلى "10" ، سيكون للرقم الآن "1" في خانة العشرات و "0" في خانة الآلاف والمئات والآحاد.

معالج المقطع

يحتوي معالج المقطع على رقم كمدخلات وكاثودات كمخرج له. إنها في الأساس الأرقام الثنائية لعرض الكاثود لإخراج الأرقام العشرية على الشاشة.

معالج النتيجة

يتكون معالج النتيجة من الكيانات الأربعة السابقة ويجمعها جميعًا معًا وترسم خرائط للإشارات. كما أنه يمكّن ويعطل العداد بناءً على الحالة الحالية.

الخطوة 4: إنشاء الصورة

يتكون إنشاء الصورة من أربعة مكونات: الرسوم المتحركة ، وعداد الفشل ، وتحديث الصورة ، وعداد البدء. تشير هذه الملفات إلى كيفية إنشاء الصور على شاشة العرض.

حيوية

يحتوي ملف الرسوم المتحركة على مدخلات Clk (إشارة الساعة) و CEN (تمكين العد) و RST (إعادة تعيين الإشارة) و B_X (موضع الكرة X) و B_Y (موضع الكرة Y) و P_L (موضع المجداف الأيسر) و P_R (موضع مجداف الأيمن). المخرجات هي WA (العنوان الذي نكتب اللون إليه) ، و WD (اللون الذي يتم كتابته على العنوان المحدد). يحتوي الملف على Play_Counter وهو عداد يستخدم كمدخل تحكم لـ MUX ، وهو جهاز تشفير يمكنه إخراج الألوان الصحيحة في الأماكن الصحيحة ، وأخيرًا معدد إرسال يعرض اللون الصحيح بناءً على موضع المجداف و كرة.

تحديث الصورة

يتم استخدام ملف Refresh Image لتحديث الصورة حيث يتغير موضع الكرة والمجداف. يشتمل الملف على مكونات من ملفات الرسوم المتحركة ، وعداد البدء ، وعداد الفشل. يقوم بتعيين الإشارات من كل مكون ويستخدم منطق الحالة لتحديد الإشارات وعناوين الإخراج.

بدء العداد

يستخدم Start Counter المدخلات Clk و RS و CEN والمخرجات WA و WD. يستخدم عداد وتحويل لتحديد إدخال التحكم لـ MUX. ثم يستخدم Multiplexer الإدخال لتحديد عناوين الألوان الصحيحة ويرسل هذه البيانات إلى مشغل VGA. يستخدم هذا لعرض "Pong" عندما يبدأ المستخدم اللعبة.

عداد الفشل

يستخدم عداد الفشل لعرض "انتهت اللعبة" عندما يخسر المستخدم اللعبة. لديها إشارة Clk و RST و CEN. يستخدم عدادًا وصيغة تحويل لتحديد إدخال التحكم لـ MUX. ثم يستخدم Multiplexer الإدخال لتحديد عناوين الألوان الصحيحة ويرسل هذه البيانات إلى مشغل VGA.

الخطوة 5: لعبة بونغ

لعبة بونغ
لعبة بونغ

يتضمن هذا القسم من المشروع ملفات Pong Master و Finite State Machine (FSM) و Timer و Start Debounce.

الموقت

يحتوي المؤقت على مدخلات Clk (Clock) و PS (الحالة الحالية) و Timer و Clk_out كمخرجات. يُستخدم المؤقت لتغيير سرعة اللعبة كل خمس ثوانٍ تقريبًا.

تدفق FSM

يحتوي Flow FSM على مدخلات Clk و Fail و Timer و Bttn_S (زر البدء) و Buttn_RST (زر إعادة الضبط) وإخراج Pres_S (إخراج الحالة الحالية). تستخدم FSM المؤقت لتحديث الحالة الحالية إلى الحالة التالية وتواصل تحديث الحالة التالية حتى تصل اللعبة إلى المستوى 5 حيث تبقى حتى تنتهي اللعبة.

ابدأ Debounce

بدء Debounce هو ارتداد الكرة في البداية. لديها مدخلات S_in و Clk ، وإخراج S_out.

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

الخطوة 6: برنامج تشغيل VGA

برنامج تشغيل VGA (مجموعة الرسومات المرئية) عبارة عن جزء من البرامج المستخدمة لقبول الأوامر أو البيانات التي يتم إرسالها إلى شاشة العرض. أعطانا أستاذنا السائق. استخدم برنامج التشغيل وسلك VGA لتوصيل لوحة Basys3 بالشاشة.

يجب أن تكون الآن جاهزًا لإنشاء لعبة Pong الخاصة بك باستخدام VHDL!

موصى به: