بخشی از مقاله

چکیده

امروزه FPGA در پیادهسازی بسیاری از سیستمهای بلادرنگ مورد استفاده قرار میگیرد. یکی از زمینهها، طراحی کنسولهای بازی میباشد، با توجه به اینکه حجم پردازشها در این دستگاهها بسیار زیاد است و باید به صورت بلادرنگ انجام شود بنابراین استفاده از FPGA میتواند مناسب باشد.

یکی از کارهایی که تاکنون در این زمینه انجام شده است، طراحی آداپتور گرافیکی ویدئو - VGA - است. اما این بخش به تنهایی استفاده زیادی ندارد و در بسیاری از بازیها نیاز است صحنههای مختلف در لایههای مختلف پیادهسازی شوند و نهایتا" این لایهها با همدیگر ترکیب شوند و روی نمایشگر نمایش داده شوند.

از آنجا که ترکیب کردن لایههای مختلف به صورت نرمافزاری فرایند وقت گیری است این کار به صورت نرمافزاری قابل انجام نیست. در این مقاله روشی برای پیادهسازی یک کارت گرافیک با قابلیت ترکیب لایههای مختلف ارائه و روی تراشه سری اسپارتان 6، پیادهسازی شده است. این طرح به صورت عملی تست شده و عملکرد مطلوبی داشته است. نتایج نشان میدهد که پیادهسازی این سخت افزار روی تراشه 6SLX9 فقط هفده درصد از جداول جستجو و هفت درصد فلیپ فلاپها را مصرف کرده است.

-1مقدمه

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

کنترلکننده وظیفهی نمایش تصاویر تولید شده توسط پردازنده کارت گرافیکی بر روی مانیتور را بر عهده دارد. برای ارتباط کنترلکننده کارت گرافیکی با مانیتور نیاز به سیگنالهای هماهنگ کنندهای میباشد. مهمترین این سیگنالها عبارت اند از: Vsync-2 Hsync-1 که وظیفهی هماهنگ کردن مانیتور و کنترلکننده کارت گرافیکی را بر عهده دارند و به تر تیب بیانگر این موضوع هستند که مانیتور چه زمانی شروع به رسم خط جدید و فریم جدید میکند. همچنین کنترلکننده باید سیگنالهایی برای انتقال پیکسلها به مانیتور را فراهم کند که عبارت اند از: .blue-3 red-2 green-1 این سه سیگنال رنگهای یک پیکسل را نشان میدهند.

در این طرح به دلیل محدودیتهای سختافزاری، از پیکسلها با رنگهای دو بیتی استفاده شده است پس هر پیکسل را میتوان با 6 بیت نشان داد که میتوان این شش بیت را در یک بایت قرار داد. فرایند تبدیل تصاویر با رنگهای هشت بیتی به تصاویر با رنگهای دو بیتی با استفاده از برنامهای که به زبان متلب نوشته شده است، صورت میگیرد.

پنج سیگنال اخیر از کارت گرافیکی به مانیتور میروند. کنترلکننده وظیفهی تولید این سیگنالها را بر عهده دارد. در اینجا این سیگنالها توسط FPGA تولید و به مانیتور فرستاده میشوند. در این مقاله برای نمایش تصاویر روی مانیتور از پروتکل VGA استفاده شده است. رزلوشن اصلی پروتکل VGA، 640x480 میباشد که شامل 640 ستون و 480 خط از پیکسلها است که در هر ثانیه 60 بار تازهسازی میشود.

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

همانطور که بیان شد، حجم پردازشها در کنسولهای بازی بسیار بالا میباشد. بنابراین استفاده از سختافزاری که بتواند حجم بالایی از پردازشهای موازی را انجام دهد، احساس میشود. از این رو استفاده از FPGA که به عنوان سکویی که برای انجام کارهای موازی مناسب میباشد، توصیه میگردد. سرعت تولید فریم در بازیهای ویدیویی بسیار بالا است. بنابراین به سیستمی نیاز میباشد که بتواند فریمهای زیادی را در یک زمان نمایش دهد و این کار باید به صورتی انجام شود که از دید ناظر مخفی بماند.

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

-2 -2 مروری بر کارهای انجام شده

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

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

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

در این مقاله از دو بافر برای نمایش استفاده شده است و در نتیجه امکان ترکیبکردن دو تصویر را ارائه میکند. این طرح امکان اضافهکردن بافرهای بیشتر را نیز ارائه میدهد تا بتوان تصاویر بیشتری را باهم ترکیب کرد.

-3روش پیشنهادی

شکل 1 بلوک دیاگرام طرح پیشنهادی را نشان میدهد که حاوی ماژولهایی است که در این طرح استفاده شده است.

این طرح حاوی سه ماژول اصلی است که یک ماژول کلی به نام top_module ، این سه ماژول را دربرگرفته است. کار ماژول top_module این است که ورودیهای مورد نیاز سایر ماژولها را فراهم کند. برخی از این ورودیها از خروجیهای سایر ماژولها میآیند و برخی دیگر مستقیما از بیرون FPGA خواهند آمد. همچنین این ماژول وظیفه دارد تا ورودیهای مورد نیاز SDRam و پورت VGA را فراهم کند.

سه ماژول اصلی عبارت اند از: Mixer-3 SDRamCnt_Intf- 2 VGA-1 ماژول VGA سیگنالهای کنترلی برای مانیتور را تولید میکند. از جمله این سیگنالها میتوان به دو سیگنال مهم h_sync و v_sync اشاره کرد. در هر کلمه از SDRam که 16 بیت میباشد، دو پیکسل جای میگیرد. با خواندن هر کلمه از SDRam در واقع دو پیکسل خوانده میشود. یک بافر در این ماژول قرار دارد تا پیکسلهایی که از SDRam خوانده میشوند، را ذخیره کند و در زمان لازم از آنها استفاده کند. پس از استخراج هر کلمه از بافر، رنگهای هر پیکسل تفکیک میشوند و به سه رنگ قرمز، سبز وآبی در میآیند.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید