پرش به


تصویر

Gameduino - بیایید FPGA را به بازی بگیریم!

GameDuino

  • لطفا وارد حساب کاربری خود شوید تا بتوانید پاسخ دهید
14 پاسخ برای این موضوع

#1 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 23 February 2016 - 05:15 PM

پازجی ها سلام!

در این پست میخواهم با شما در مورد یک کنسول بازی مبتنی بر FPGA صحبت کنم که میتوانید آنرا بر روی پازج-یک پیاده سازی کنید و قدرت FPGA را به رخ دوستانتان بکشید!

Gameduino پروژه ی جذابی است که تلاش کرده تا ساز و برگ یک کنسول بازی را به بردهای آردوینو اضافه کند. تاکنون دو نسخه مختلف از این سخت افزار به نام های Gameduino و Gameduino2 تولید شده که اولی بر مبنای یک FPGA ی SPARTAN3 (شکل پایین) و دومی بر مبنای یک تراشه ی موتور گرافیکی (Embedded Video Engine) از شرکت FTDI به نام FT810 بوده است.

هر چند GameDuino2 به مراتب قدرت پردازشی و Spec بالاتری نسبت به برادر قبلی خود یعنی Gameduino (که به منظور جلوگیری از گریمپاژ ذهنی مخاطبین از این پس آنرا Gameduino1 مینامیم) دارد، اما نسخه ی 1 گیم-دوینو برای ما مشتاقان FPGA از جذابیت بیشتری برخوردار است، چرا که هسته ی اصلی پردازش گرافیکی در این نسخه، درون یک FPGA ی low-end (یعنی تراشه ی XC3S200 که ظرفیت لاجیک آن از نصف ظرفیت XC6SLX9 که در پازج-یک بکار رفته هم کمتر است) پیاده سازی شده است و این موضوع حداقل در نگاه اول کمی عجیب به نظر میرسد!

در این تاپیک میخواهیم با همکاری یکدیگر Gameduino1 را از بعد سخت افزاری و نرم افزاری مورد بررسی و موشکافی قرار دهیم و در صورت امکان تلاش کنیم تا با بهره گیری از امکانات بیشتری که تراشه ی موجود روی پازج-یک در اختیار دارد، نسخه ی تقویت شده ای از Gameduino1 را بسازیم! حتی اگر این کار را هم انجام ندهیم، از یک پژوهش دسته جمعی در کنار یکدیگر لذت خواهیم برد. بنابراین از همه ی دوستان عزیز دعوت میکنم برداشت های آزاد، سوالات و ایده های خود در رابطه با این موجود کوچک و دوست داشتنی را در ادامه همین تاپیک با دیگران به اشتراک بگذارید. پس لطفا اجتماعی باشید و هر آنچه به ذهنتان میرسد را بیرون بریزید تا با کمک هم آنرا پرورش دهیم!

 

always@posedge باشید!

 

شیلد Gameduino1 برای آردوینو

 

blog-gameduino1.jpg

 

تصاویری از محیط بازیهای اجرا شده تحت Gameduino1

 

bgcolor-screenshot.jpgscroll-screenshot.jpgasteroids-screenshot.jpg

sprites256-screenshot.jpgball-screenshot.jpgchessboard-screenshot.jpg


  • M.Sadeghi این پست را پسندیده است

#2 M.Sadeghi

M.Sadeghi

    کاربر عادی

  • مدیریت انجمن
  • 12 ارسال

ارسالی 23 February 2016 - 09:18 PM

تشکر ویژه بابت شروع همچین موضوع جذابی :)

جناب حقیقی یه سوال !!

طبق چیزی که فرمودین و من اگه درست متوجه شده باشم توی همچین پروژه ای از  FPGA  به عنوان گرافیک این بازیها استفاده شده , آردوینو (که دوسش دارم ;) ) اینجا چیکارست ؟؟

نمیتونیم از ماجرا حذفش کنیم ؟؟



#3 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 23 February 2016 - 09:35 PM

ببینید اینجا FPGA نقش یک پردازشگر گرافیکی را داره که مثلا دستور کشیدن یک دایره با شعاع "فلان" و مرکز "بهمان" و رنگ "بیسار" را دریافت میکنه و پیکسل های لازم برای نمایش این دایره را تولید میکنه و میفرسته روی خروجی VGA. ولی الگوریتم بازی داره توی آردوینو نوشته و اجرا میشه. در واقع FPGA میاد و مثل یک واحد VPU (Video Proccessing Unit) ساده، کنار دست یک CPU (که همون میکروی روی بورد آردوینو هست) و پردازش های گرافیکی را بر عهده میگیره. بنابراین آردوینو را نمیتونید از بازی حذفش کنید، چرا که اگه حذفش کنید مثل این میمونه که یک کامپیوتر داشته باشید با یک کارت گرافیکی خفن ولی بدون CPU و بخواهید باهاش بازی کنید.

البته ما قبلا آردوینو را روی پازج پورت کردیم (روی میکروبلیز) و من تلاش کردم که هر دو قسمت (آردوینو + Gameduino) را داخل FPGA بگذارم، ولی جا نشد متاسفانه! بنابراین فکر کنم عاقلانه تر این باشه که برای اجرای این پروژه، همان مسیری را بریم که دوستمون آقای چنگانی رفتن و از یک بورد آردوینو در کنار FPGA استفاده کنیم و FPGA را مخصوص پیاده سازی Gameduino در نظر بگیریم.

از مهدی جان چنگانی خواهش میکنم سورس پروژه راه اندازی Gameduino روی پازج را اینجا قرار بدهند تا سایر دوستان هم امتحان کنند.


  • moonice و M.Sadeghi این پست را پسندیده است

#4 M.Sadeghi

M.Sadeghi

    کاربر عادی

  • مدیریت انجمن
  • 12 ارسال

ارسالی 23 February 2016 - 09:51 PM

ببینید اینجا FPGA نقش یک پردازشگر گرافیکی را داره که مثلا دستور کشیدن یک دایره با شعاع "فلان" و مرکز "بهمان" و رنگ "بیسار" را دریافت میکنه و پیکسل های لازم برای نمایش این دایره را تولید میکنه و میفرسته روی خروجی VGA. ولی الگوریتم بازی داره توی آردوینو نوشته و اجرا میشه. در واقع FPGA میاد و مثل یک واحد VPU (Video Proccessing Unit) ساده، کنار دست یک CPU (که همون میکروی روی بورد آردوینو هست) و پردازش های گرافیکی را بر عهده میگیره. بنابراین آردوینو را نمیتونید از بازی حذفش کنید، چرا که اگه حذفش کنید مثل این میمونه که یک کامپیوتر داشته باشید با یک کارت گرافیکی خفن ولی بدون CPU و بخواهید باهاش بازی کنید.

البته ما قبلا آردوینو را روی پازج پورت کردیم (روی میکروبلیز) و من تلاش کردم که هر دو قسمت (آردوینو + Gameduino) را داخل FPGA بگذارم، ولی جا نشد متاسفانه! بنابراین فکر کنم عاقلانه تر این باشه که برای اجرای این پروژه، همان مسیری را بریم که دوستمون آقای چنگانی رفتن و از یک بورد آردوینو در کنار FPGA استفاده کنیم و FPGA را مخصوص پیاده سازی Gameduino در نظر بگیریم.

از مهدی جان چنگانی خواهش میکنم سورس پروژه راه اندازی Gameduino روی پازج را اینجا قرار بدهند تا سایر دوستان هم امتحان کنند.

سپاسگزارم

دقیقا منظور من هم همین بود که میکروبلیز جایگزین آردوینو بشه که به خوبی بهش اشاره کردین  :)



#5 moonice

moonice

    newbie

  • کاربر عادی
  • ستاره
  • 2 ارسال

ارسالی 25 February 2016 - 09:26 AM

 

از مهدی جان چنگانی خواهش میکنم سورس پروژه راه اندازی Gameduino روی پازج را اینجا قرار بدهند تا سایر دوستان هم امتحان کنند.

بله ما هم منتظریم سورس پروژه gameduino پورت شده پازج رو اینجا بذارن که ما هم بتونیم باهاش ور بریم ;)



#6 mahdichi

mahdichi

    newbie

  • مدیریت انجمن
  • 3 ارسال

ارسالی 25 February 2016 - 08:13 PM

با سلام خدمت دوستان عزیز

 

سورس های مربوط به پروژه gameduino را می تونید از لینک زیر دانلود کنید.

 

http://s8.picofile.c...o_demo.rar.html

 

پروژه مربوط به بورد پازج را می تونید بدون تغییر روی برد پروگرام کنید و با استفاده از بال VGA12 خروجی تصویر بگیرید. 

 

برای برنامه سمت آردوینو هم کافی کتابخانه gameduino را نصب کنید و مثال های مربوطه بهترین جا برای شروع هست. فقط فعلا نمی دونم چرا بعضی از مثال ها کامپایل نمیشه. باید یکم بیشتر روش کار کنیم و این مشکل را حل کنیم. 

 

فعلا بیشتر توضیح نمی دم. بنظرم اول دوستان یک نگاهی به برنامه بندازند و اگر سوالی، ایده ای یا نظری دارند مطرح کنند تا بحث را شروع کنیم.


  • mahmoud, moonice, sigma_mx و 1 فرد دیگر این پست را پسندیده اند

#7 sigma_mx

sigma_mx

    newbie

  • کاربر عادی
  • ستاره
  • 1 ارسال

ارسالی 26 February 2016 - 10:52 AM

ببینید اینجا FPGA نقش یک پردازشگر گرافیکی را داره که مثلا دستور کشیدن یک دایره با شعاع "فلان" و مرکز "بهمان" و رنگ "بیسار" را دریافت میکنه و پیکسل های لازم برای نمایش این دایره را تولید میکنه و میفرسته روی خروجی VGA. ولی الگوریتم بازی داره توی آردوینو نوشته و اجرا میشه. در واقع FPGA میاد و مثل یک واحد VPU (Video Proccessing Unit) ساده، کنار دست یک CPU (که همون میکروی روی بورد آردوینو هست) و پردازش های گرافیکی را بر عهده میگیره. بنابراین آردوینو را نمیتونید از بازی حذفش کنید، چرا که اگه حذفش کنید مثل این میمونه که یک کامپیوتر داشته باشید با یک کارت گرافیکی خفن ولی بدون CPU و بخواهید باهاش بازی کنید.

البته ما قبلا آردوینو را روی پازج پورت کردیم (روی میکروبلیز) و من تلاش کردم که هر دو قسمت (آردوینو + Gameduino) را داخل FPGA بگذارم، ولی جا نشد متاسفانه! بنابراین فکر کنم عاقلانه تر این باشه که برای اجرای این پروژه، همان مسیری را بریم که دوستمون آقای چنگانی رفتن و از یک بورد آردوینو در کنار FPGA استفاده کنیم و FPGA را مخصوص پیاده سازی Gameduino در نظر بگیریم.

از مهدی جان چنگانی خواهش میکنم سورس پروژه راه اندازی Gameduino روی پازج را اینجا قرار بدهند تا سایر دوستان هم امتحان کنند.

 

مهندس جان البته برنامه سمت آردوینو رو ندیدم ولی فکر میکنم اصلا گذاشتن یه پردازنده 32 بیتی (در اینجا میکروبلیز) بجای وظیفه ای که آردوینو انجام میده ( پردازند 8  بیتی) با توجه که می فرمایید جا هم نمیشه ، زیاد باشه . احتمال زیاد میدم بشه کاری رو که آردوینو انجام میده با پیکوبلیز معادل سازی کرد . ولی چقدر کار داره رو دیگه شما باید بگید ! ;)


  • mahmoud این پست را پسندیده است

#8 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 26 February 2016 - 07:57 PM

مهندس جان البته برنامه سمت آردوینو رو ندیدم ولی فکر میکنم اصلا گذاشتن یه پردازنده 32 بیتی (در اینجا میکروبلیز) بجای وظیفه ای که آردوینو انجام میده ( پردازند 8  بیتی) با توجه که می فرمایید جا هم نمیشه ، زیاد باشه . احتمال زیاد میدم بشه کاری رو که آردوینو انجام میده با پیکوبلیز معادل سازی کرد . ولی چقدر کار داره رو دیگه شما باید بگید ! ;)

سخن کاملا معقول، پسندیده و بجایی است! البته سوییچ کردن به یک پردازنده با معماری جدید (مثل پیکو بلیز) کار دشواریه چون کل لایبری ها و toolchain باید برای اون پردازنده پورت بشه. ولی شاید بشه نسخه ی سبکتری از microblaze_mcs را استفاده کرد که مثلا تعداد peripheral هاش کمتر باشه یا فضای حافظه کمتری بهش اختصاص داده بشه و اینها. فرصتی پیش بیاد حتما این مورد را امتحان میکنم و نتیجه را اعلام میکنم. 

در این فاصله از دوستانی که به این مبحث علاقمند هستند دعوت میکنم با نیم نگاهی به مطالب این صفحه ابتدا یک مطالعه کوتاهی در مورد گرافیک کامپیوتری (مفاهیمی مثل sprite، color palette و ...) داشته باشند تا بعدش بریم سراغ کالبدشکافی gameduino.


  • moonice این پست را پسندیده است

#9 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 28 February 2016 - 10:57 AM

ظاهرا اصرار برای جا دادن Microblaze_mcs و Gameduino روی LX9 بی فایده س!
البته جذابیت Gameduino نه صرفا بعنوان یک کنسول بازی، بلکه بعنوان یک موتور گرافیکی سبک درون FPGA، آنقدری هست که ارزش این وقت گذاشتن را داشته باشد، ولی فعلا بهتر است وقت خود را صرف این موضوع نکنیم و از یک بورد آردوینو در کنار Gameduino ی پیاده سازی شده روی FPGA استفاده کنیم.


  • moonice این پست را پسندیده است

#10 moonice

moonice

    newbie

  • کاربر عادی
  • ستاره
  • 2 ارسال

ارسالی 18 March 2016 - 01:16 PM

با عرض سلام و خسته نباشید

توی مطالعه داکیومنت های این پلتفرم به موردی به  اسم 

Stacks

 برخوردم که هرچی درموردش جستجو کردم چیزی پیدا نکردم. دوستانی که در باب این مفهوم اطلاعاتی دارند خوشحال میشم در اختیار ما هم قرار بدند.

با تشکر


  • mahmoud این پست را پسندیده است

#11 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 19 March 2016 - 10:14 PM

استک نوعی حافظه است که اطلاعات دقیقا برعکس ترتیبی که در آن ریخته میشود از آن خوانده میشود. یعنی آخرین داده ای که نوشته میشود، اولین داده ای است که خوانده میشود و از این لحاظ یک حافظه ی LIFO (Last In First Out) و لذا در نقطه ی مقابل FIFO قرار دارد. یکی از کاربردهای Stack ذخیره ی شمارنده ی برنامه (Program counter) است که در مواردی که branch یا پرشی در ساختار برنامه وجود دارد (مانند مواقعی که یک تابعی فراخوانی میشود)، پردازنده پس از اجرای روتین فراخوانی شده، بتواند دوباره به محل قبلی اجرای برنامه بازگردد.

https://en.wikipedia...ract_data_type)


  • moonice این پست را پسندیده است

#12 moonice

moonice

    newbie

  • کاربر عادی
  • ستاره
  • 2 ارسال

ارسالی 29 June 2016 - 05:46 PM

سلام مهندس

خسته نباشید.

مهندس من یه سری تغییرات روی گیمدینو دادم این مدت...
درحقیقت بهینه کردم برای کاربرد های صنعتی (منحصر به کاربرد های مانیتورینگ و کنترل خط تولید و اتاق فرمان).

توی صفحه اول وقتی به میکرو وصل نیست یک تصویر میاد که لوگو گیمدینو هست و نوشته ورژن یک میخواستم تغییراتی بدم از جمله اینکه v 1.1 و مشخص کنم که این منحصر به گیم نیست و کاربرد صنعتی دارد.

ولی هرچی میگردم پیدا نمی کنم کجا ذخیره شده...

اگر ممکنه یک نگاه بندازید ببید شما میتونید یک راهنمایی کنید!

که کاملش کنم اینو و نتیجشو با بچه ها به اشتراک بذارم.

ممنون


  • mahmoud این پست را پسندیده است

#13 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 30 June 2016 - 12:38 AM

سلام
به نظر میرسه باید در قسمت RAM_PICTURE ذخیره شده باشه (خط 686 تا 869 در فایل generated.v).

در ماژول مذکور دو عدد BlockRAM بکار رفته که با یک سری مقادیر اولیه initialize شدن که به نظر میرسه همون مقادیر تصویر مذکور باشه.

متاسفانه برد دم دست ندارم که امتحان کنم (#کوزه_گر!) امتحان کنید و خبرش را بدین لطفا. 


  • moonice این پست را پسندیده است

#14 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 03 July 2016 - 10:02 PM

چه خبر محمدحسین جان؟
حل شد مشکل؟
خیلی مشتاقم بدونم نتیجه چی شد...



#15 moonice

moonice

    newbie

  • کاربر عادی
  • ستاره
  • 2 ارسال

ارسالی 13 July 2016 - 07:59 PM

مهندس الان متاسفانه در دوری از پازج به سر میبرم:)
بردو دادم به یکی از دوستان تا کمی تست کنه اگه خوشش اومد ازتون خرید کنه برا همین دستم نیس...
به محضی دستم رسید اقدام میکنم و نتیجه رو انتشار میدم

بازم ممنون






0 کاربر در حال خواندن این موضوع است

0 کاربر، 0 مهمان و 0 عضو مخفی