برندگان این چالش:
مقام اول: امیر صمدی و حامد رفیعی
مقام دوم: یوسف بنار و امیرحسین اوحدی
مقام سوم: رضا اسمعیلی
مقدمه
طبق روال سال های پیشین مسابقات طراحی سیستمهای دیجیتال، مسابقات در بخش FPGA Challenge به پیاده سازی بازیکن یک بازی دو نفره بر روی FPGA و انجام مسابقه بین بازیکن های تیم های شرکت کننده در روز برگزاری مسابقات اختصاص یافته است. تیم ها در قالب یک لیگ رو در روی یکدیگر قرار می گیرند و در نهایت نفرات اول تا سوم این لیگ به عنوان برندگان این بخش از مسابقه اعلام می شوند.
معرفی بازی
در این دوره، بازی Paper Soccer انتخاب شده است. بازی مذکور علی رغم داشتن قوانین ساده، استراتژی های پیچیده مختلفی را داراست. در این بازی که به طور سنتی با کاغذ و مداد انجام میشود، صفحه بازی با شبکه های ۱۰ در ۸ از مربع ها به عنوان زمین فوتبال و دو مربع در دو طرف کوتاه زمین به عنوان دروازه دو تیم در نظر گرفته می شود.
در هنگام شروع بازی، توپ فوتبال با یک نقطه در وسط صفحه بازی نشان داده می شود. هر بازیکن به نوبت با رسم یک خط توپ را از مکان فعلی به مکان جدید منتقل می کند. هر حرکت باید به نقطه مجاور در راستای عمودی، افقی یا مورب انجام شود. هیچ حرکتی نمی تواند توپ را از زمین بازی خارج کند. همچنین حرکت از روی خطی که در حال حاضر کشیده شده است مجاز نیست. بازیکنی که بازی را شروع می کند به صورت رندم انتخاب می شود.
اگر توپ به نقطه ای برسد که یک یا چند خط به آن متصل است (شامل خطوط محیطی زمین بازی)، از آن نقطه می پرد و بازیکنی که آن حرکت را انجام داده است باید به حرکت خود ادامه دهد. زمانی حرکت بازیکن متوقف می شود که توپ به نقطه ای برسد که خطی به آن متصل نیست (مگر آنکه توپ وارد دروازه شود که در این صورت یک دور بازی خاتمه می یابد). شکل زیرحرکت های ابتدایی از یک بازی نمونه را نشان می دهد.
برنده بازی کسی است که بتواند توپ را به داخل دروازه حریف برساند. اگر بازیکنی به نقطه ای برسد که باید پرش انجام دهد و نتواند این کار را انجام دهد بازنده خواهد بود (بسته به قوانین از پیش توافق شده ممکن است این حالت به عنوان تساوی تلقی شود).
به دلیل آنکه بازیکن حریف نمی تواند توپ را از روی خط های رسم شده عبور دهد، یکی از استراتژی های مهم می تواند تشخیص نقاط یا مسیرهای استراتژیک برای حریف و سد کردن آنها باشد. همچنین استفاده از پرش می تواند در دستیابی به دروازه حریف و یا جلوگیری از حرکت بازیکن حریف بسیار مؤثر باشد. استراتژی سوم را می توان انتقال توپ به نقطه ای دانست که بازیکن حریف نتواند حرکت خود را به اتمام برساند و در نتیجه مغلوب شود.
زمین بازی
در مسابقه FPGA این بازی با اندازه زمین بازی متغیر انجام خواهد شد. اندازه دروازه ها ثابت و شامل دو مربع کنار هم و در وسط عرض زمین بازی خواهد بود. همچنین تعداد مربع ها در طول و عرض زمین بازی زوج خواهد بود تا مکان دروازه ها و نقطه شروع بازی کاملاً مشخص باشد. مطابق شکل زیر، زمین بازی در این مسابقه شامل خط وسط به اندازه عرض زمین است. مشابه بقیه خطوط در زمین بازی، امکان حرکت روی این خط وجود ندارد. دروازه بازیکن قرمز در بالای زمین و دروازه بازیکن آبی در پایین زمین بازی است.
ارتباط نرم افزار داور با بازیکن ها
تمامی ارتباط ها (از داور به بازیکن و برعکس) به صورت سریال با رابط RS232 و پروتکل UART با مشخصات زیر انجام می شود.
هر پیام ارتباطی به کاراکتر \n (0x0A) ختم می شود
در ابتدای بازی کامپیوتر میزبان کاراکترهای wx\n را به هر دو برد ارسال می کند. در این دستور کاراکتر w (0x77) نماد عرض زمین بازی و x عدد باینری زوجی از ۲ تا ۲۵۴ است که مقدار عرض زمین بازی را مشخص می کند. پس از این دستور، دستور ly\n ارسال میشود که مشابه دستور قبلی، کاراکتر l (0x6C) نماد طول زمین بازی و y عدد باینری زوجی از ۲ تا ۲۵۴ است که مقدار طول زمین بازی را مشخص می کند. سپس رنگ بازیکن با دستور cr\n یا cb\n به ترتیب به معنی رنگ قرمز و رنگ آبی به بازیکن ها اعلام می شود. توجه شود که تمامی حروف کوچک هستند.
داور به صورت رندم یک بازیکن را انتخاب کرده و دستور شروع بازی را با کاراکترهای {}\n به آن بازیکن ارسال می کند. در مدت زمان معینی که متعاقباً اعلام خواهد شد، بازیکن فرصت اعلام حرکت یا حرکت های مد نظر خود را دارد. این حرکت ها با کاراکترهای {abc…}\n مشخص می شوند که a، b، c و … کاراکترهای متناظر با حرکات هستند که در شکل زیر مشخص شده اند.
نرم افزار داور پس از دریافت حرکت از یک بازیکن و بررسی صحت آن، حرکت مذکور را بدون هر گونه تغییری به بازیکن مقابل ارسال می نماید و منتظر دریافت حرکت از بازیکن مقابل می ماند. این روند تا اتمام بازی ادامه خواهد داشت.
شروط اتمام بازی
به ثمر رساندن گل توسط یک بازیکن (گل به خودی هم گل محسوب می شود).
عدم انجام حرکت کامل (رسیدن به نقطه ای که توپ از آن رد نشده است) توسط یک بازیکن که منجر به پیروزی حریف می شود (مگر هنگام گل زدن).
انجام هر گونه حرکت اشتباه توسط یک بازیکن منجر به پیروزی حریف می شود. اتمام حرکت در نقطه ای که قبلاً توپ از آن عبور کرده است، گذر از روی خطوط موجود (شامل خطوط حرکت، خط وسط و خطوط کناری) و یا حرکت به بیرون از زمین بازی، حرکت های اشتباه محسوب می شوند.
برد FPGA مورد استفاده
مسابقه بر روی برد Altera DE2-115 اجرا خواهد شد. تمامی تیم های شرکت کننده باید الگوریتم خود را فقط بر روی این برد پیاده سازی کنند و از رابط سریال با استاندارد RS232 موجود در آن برای ارتباط با کامپیوتر میزبان استفاده نمایند.
برای اطلاعات بیشتر و کمک به شرکت کنندگان فایلی بعنوان راهنما قرار داده شده که می توانید برای پیاده سازی از راهنمای داخل فایل ها کمک بگیرید
دانلود فایل برنامه : report_fpga