فهرست مطالب:
تصویری: مین روب: 5 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
برای پروژه نهایی CPE 133 ، من و چیس تصمیم گرفتیم یک بازی "Minesweeper" ایجاد کنیم که از دکمه و تغییر ورودی از یک برد Basys-3 و همچنین کد VHDL استفاده می کند. یک نام بهتر برای بازی می تواند "رولت روسی" باشد ، با این حال ما می خواستیم با نام خانوادگی بیشتری انتخاب کنیم. این بازی شامل کاربر است که دکمه وسط روی برد Basys را فشار دهد تا به طور تصادفی یکی از 16 سوئیچ را با یک بمب "فعال" کند. سپس دو بازیکن به نوبت سوئیچ ها را یکی یکی می چرخانند تا یکی از بازیکنان سوئیچ را با "بمب" بچرخاند. هنگامی که این اتفاق می افتد ، صفحه هفت قسمت به بازیکنان هشدار می دهد که آن بازیکن به تازگی بازی را باخته است.
مرحله 1: مرور کلی
این پروژه از بسیاری از ماژول های VHDL استفاده کرده است که ما در طول این سه ماه استفاده کرده ایم. یک شمارنده چهار بیتی در ارتباط با لبه ساعت به منظور شبیه سازی یک عدد تصادفی چهار بیتی برای فعال سازی یکی از سوئیچ ها استفاده شد. همچنین از نمودار حالت برای خروج کلمات مختلف به صفحه هفت بخش استفاده می شود ، از "PLAY" زمانی که بازیکنان در وسط بازی خود هستند ، تا "LOSE" هنگامی که یکی از بازیکنان سوئیچ فعال را چرخانده است ، استفاده می شود.
مرحله 2: مواد
- هیئت توسعه Basys3 از Digilent، Inc.
- Vivado Design Suite BC_DEC.vhd (این فایل در Polylearn در اختیار ما قرار گرفته و توسط برایان میلی نوشته شده است)
- پیشخوان 4 بیتی ساخته شده از فلیپ فلاپ T
- یک FSM
مرحله 3: ساخت بازی
اولین قدم برای ساخت این بازی رسم نمودار مدار با تمام اجزای مورد استفاده ما بود. ورودی های این سیستم دکمه 1 ، 16 سوئیچ و ساعت بود. خروجی ها صفحه نمایش هفت قسمتی و آند بودند. پس از رسم نمودار مدار ، فایلهای منبع جداگانه را برای هر جزء در Vivado نوشتیم و آنها را با استفاده از نقشه های پورت در زیر فایل منبع اصلی قرار دادیم.
کل اساس بازی حول این است که به طور تصادفی یکی از 16 سوئیچ را با یک بمب فعال می کند و بازیکنان نمی دانند تا زمانی که سوئیچ فعال روشن نشود کدام سوئیچ فعال است. ما تولیدکنندگان اعداد تصادفی و شبه تصادفی را به صورت آنلاین بررسی کردیم ، اما در نهایت به این نتیجه رسیدیم که استفاده از شمارنده 4 بیتی و تعیین فعال بودن سوئیچ مربوطه به اندازه کافی تصادفی برای چیزی است که ما به دنبال آن بودیم. ما توانستیم شمارنده 4 بیتی خود را که در یک پروژه قبلی ایجاد کرده بودیم مجدداً مورد استفاده قرار دهیم تا بتوانیم برای این کار کار کنیم. ما از شمارنده برای ایجاد یک عدد تصادفی بین 0-15 استفاده کردیم. سپس در جزء main1 ، معادل اعشاری عدد تصادفی را به سوئیچ مربوطه روی برد اختصاص می دهیم. همانطور که در شکل نشان داده شده است ، هم خروجی X ("بمب فعال") از جزء main1 و هم سوئیچ هایی که بازیکنان روشن می کنند به FSM1 می روند. ماشین حالت مقدار یک بیت Z را خروجی می دهد که سپس توسط BC_DEC1 خوانده می شود. ماشین حالت نهایی که استفاده کردیم دارای دو حالت متفاوت است: در حالت A ، خروجی های هفت قسمتی "PLAY" نمایش داده می شود و دستگاه در آن حالت می ماند تا زمانی که تشخیص دهد کلید فعال شده در حال چرخاندن است. هنگامی که این اتفاق می افتد ، FSM به حالت B می رود که در آن "LOSE" را در صفحه نمایش هفت بخش خروجی می دهد و تا زمانی که همه 16 سوئیچ به "0" برگردند در آن حالت باقی می ماند. هنگامی که این شرط برآورده شد ، FSM بار دیگر به حالت A می رود و منتظر بازیکنان است تا بازی دیگری را شروع کنند. نمودار مور برای کمک به درک این FSM در بالا نشان داده شده است.
مرحله 4: اصلاحات آینده
چند تغییر که ما در مورد ایجاد بازی خود در نظر داشتیم شامل افزودن بمب های بیشتر به زمین (احتمالاً افزایش از یک به سه) ، اضافه کردن شمارنده امتیاز و چندین دور است. ما در نهایت در برابر این پیشرفت ها تصمیم نگرفتیم ، زیرا متوجه شدیم که بازی طولانی تر و طولانی تر معمولاً پر تنش تر و در نهایت سرگرم کننده تر از بازی است که معمولاً پس از سه یا چهار چرخش تغییر می کند.
مرحله 5: نتیجه گیری
ما از نتیجه نهایی این پروژه بسیار خوشحال بودیم. نه تنها به این دلیل که نسخه نهایی بازی سرگرم کننده بود ، بلکه به این دلیل که ایجاد و برنامه نویسی پروژه ما را ملزم به استفاده از بیشتر ، اگر نه همه چیزهایی که در این سه ماه یاد گرفته بودیم ، کنیم. ما از Flip Flops ، شمارنده ، FSM ، ساعت ، ورودی کاربر از برد و خروجی به صفحه نمایش هفت بخش استفاده کردیم.
ما همچنین آموختیم که چگونه چند خط نحوی می تواند برنامه را کاملاً خراب کند (حتی اگر در سایر زبان های برنامه نویسی مانند پایتون یا جاوا خوب تلقی شود) و تنها پس از شبیه سازی های متعدد و تکرارهای متعدد کد بارگذاری شده و در برد ، آیا سرانجام قادر خواهید بود تمام اشکالات کد خود را برطرف کنید.
توصیه شده:
چگونه: نصب Raspberry PI 4 Headless (VNC) با Rpi-imager و تصاویر: 7 مرحله (همراه با تصاویر)
چگونه: نصب Raspberry PI 4 Headless (VNC) با Rpi-imager و تصاویر: من قصد دارم از این Rapsberry PI در چندین پروژه سرگرم کننده در وبلاگم استفاده کنم. به راحتی آن را بررسی کنید. من می خواستم دوباره به استفاده از Raspberry PI بپردازم ، اما در مکان جدیدم صفحه کلید یا موس نداشتم. مدتی بود که من یک تمشک راه اندازی کردم
روب گلدبورگ: 7 قدم
Rube Goldburg: Rube Goldburg یک چالش سرگرم کننده برای شما و دوستان است که از آن لذت ببرید. وظیفه این است که یک چیز معمولی (بیرون آوردن تعدادی اسمارت از ظرف) و پیچاندن آن با افزودن قرقره/اهرم/چرخ دنده/رمپ/لوله و غیره پیچیده شود. مدتی طول می کشد اما همه چیز
دستگاه 11 مرحله ای روب گلدبرگ: 8 مرحله
دستگاه گلدبرگ 11 مرحله ای روب: این پروژه یک دستگاه 11 مرحله ای رولد گلدبرگ است که برای ایجاد یک کار ساده به روشی پیچیده طراحی شده است. وظیفه این پروژه گرفتن یک تکه صابون است
نمایش اسلاید تصاویر تعطیلات خود را با لمس سحر و جادو!: 9 مرحله (همراه با تصاویر)
نمایش اسلاید تصاویر خود را با لمس جادو! برای مطابقت با پرچم و موضوع کشوری که من از آن دیدن می کنم (در این مورد ، سیسیل). تی
تطبیق یک گوشی تلفن همراه با تلفن همراه: 7 مرحله (همراه با تصاویر)
انطباق یک گوشی تلفن همراه با یک تلفن همراه: توسط بیل ریو ([email protected]) اقتباس شده برای دستورالعمل ها توسط موس ([email protected]) سلب مسئولیت: روش شرح داده شده در اینجا ممکن است برای شما کارساز نباشد گرفتن. اگر کار نمی کند ، یا اگر چیزی را خراب می کنید ، m نیست