اگر شما در حال یادگیری FPGA و نحوه پیادهسازی مدارات دیجیتال به کمک این تکنولوژی هستید، به احتمال زیاد جستجویی هم در مورد برد آموزشی FPGA در بازار ایران انجام دادهاید و با انواع بردهای ساده و پیچیده برخورد کردهاید.
استفاده از یک برد آموزشی FPGA و انجام تمرینهای متنوع با آن، بدون شک به یادگیری شما و رسیدن به درکی عمیقتر از فرآیند پیادهسازی دیجیتال کمک خواهد کرد. اما یک برد آموزشی FPGA مناسب دارای چه خصوصیاتی است؟ چه اشتباهات رایجی در انتخاب و خرید این بردها وجود دارند؟
More...
حدود سه سال پیش که قصد داشتم برد آموزشی مناسبی را برای دوره طراحی دیجیتال با FPGA در آموزشگاه فراد اندیش تهیه کنم، به دلیل دیدگاه اشتباهی که در بین اکثر افرادی که به دنبال یادگیری FPGA هستند وجود دارد، مجبور به خرید برد گرانقیمتی شدم که هیچوقت از تمام امکانات آن استفاده نکردم.
برای دانلود فایل PDF این مقاله، روی دکمه زیر کلیک کنید:
در این مقاله، قصد دارم شما را با این اشتباه رایج آشنا کنم و خصوصیات یک برد آموزشی FPGA مناسب برای یادگیری را برای شما تشریح کنم تا مثل بسیاری از افراد از جمله خود من، هزینه اضافی برای این کار هدر ندهید.

اشتباه رایج در خرید برد آموزشی FPGA
وقتی اسم برد آموزشی FPGA به میان میآید، ممکن است به یاد بردهای گرانقیمتی بیفتید که احتمالا به دلیل همین گرانی، همیشه از خرید آن صرفنظر کردهاید. اما واقعیت چیز دیگری است…
بسیاری از علاقمندان به یادگیری عملی FPGA قبلا با میکروکنترلرها و بردهای آموزشی آنها تجربهای هرچند کم داشتهاند. احتمالا شما هم با این بردها کار کردهاید. یکی از مسایل مهم در کار با میکروکنترلرها، انجام اینترفیسهای مختلف با قطعات جانبی است.
مثلا ممکن است شما بخواهید تمرین اتصال یک LCD به میکروکنترلر را انجام دهید. بنابراین، باید روی برد آموزشی که استفاده میکنید، حتما یک LCD وجود داشته باشد. پیادهسازی انواع پروتکلهای ارتباطی مثل RS232، LAN، USB و … از جمله موارد دیگری است که قابلیت انجام تمرین عملی با آنها معمولا جزء ملزومات یک برد آموزشی برای میکروکنترلرها است.
در بسیاری از بردهای آموزشی FPGA، همین امکانات در کنار قابلیتهای دیگری قرار داده شدهاند و در مجموع باعث افزایش هزینه برد شدهاند. اما آیا نیازی به این همه قطعات جانبی روی یک برد آموزشی FPGA است؟ و اصولا چه امکاناتی باید در چنین بردی وجود داشته باشد؟
واقعیت این است که برای یادگیری FPGA نیاز به این همه قطعات جانبی روی یک برد آموزشی نیست. از دیدگاه حرفهای، آنچه بیشتر مورد نیاز است، تسلط شما به پیادهسازی اصولی روتینهای کنترلی و الگوریتمهای پردازشی است. برای پیادهسازی و تست و آزمایش این الگوریتمها، شما نیاز به بردهای آموزشی پیچیده با دهها قطعه جانبی ندارید.
خوشبختانه امکاناتی که FPGA و نرمافزار مخصوص پیادهسازی آن به شما میدهد، شما را قادر میسازد تا نه تنها انواع مدارات دیجیتال را بر روی یک FPGA در بردی ساده پیادهسازی کنید، بلکه میتوانید آن را به صورت عملی و روی برد هم تست کنید. به عبارت دیگر، علاوه بر شبیهسازی در محیط نرمافزار مخصوص پیادهسازی، شما میتوانید عملکرد مدارتان را به کمک ابزاری که نرمافزار و FPGA در اختیارتان قرار میدهند به صورت عملی تست کنید.
بنابراین، آنچه در فرآیند یادگیری FPGA دارای اولویت است، دستیابی به تسلط قابل قبول در پیادهسازی اصولی انواع مدارات دیجیتال برای انجام روتینهای کنترلی و الگوریتمهای پردازش سیگنال است. البته معمولا در هر پروژهای، تعدادی هم ارتباط خارجی و اینترفیس با قطعات خارجی وجود دارد و حتما نیاز خواهید داشت با این قطعات خارجی ارتباط برقرار کنید یا بعضی از پروتکلهای ارتباطی را پیادهسازی کنید. اما اولویت در یادگیری، مربوط به آشنایی با اصول صحیح پیادهسازی است و اگر این مرحله را به خوبی طی کنید، پیادهسازی مدارات برای اینترفیس کار سادهای خواهد بود.
بنابراین، در صورتی که قصد تهیه یک برد آموزشی برای یادگیری FPGA را دارید، به جای اینکه به تعداد قطعات جانبی موجود روی برد توجه کنید، بیشتر به کیفیت، کارایی و قیمت آن توجه داشته باشید.
چه امکاناتی باید در یک برد آموزشی FPGA وجود داشته باشد؟
همانطور که در بخش قبل اشاره کردم، موضوع مهم در فرآیند یادگیری پیادهسازی مدارات با FPGA آشنایی و تسلط بر روشهای اصولی پیادهسازی از طریق کدنویسی و انجام تستها و روالهای درستیآزمایی است. بنابراین، مهمترین موردی که در یک برد آموزشی FPGA باید وجود داشته باشد، یک تراشه مناسب FPGA است.
امکان مهم دیگر، قابلیت پروگرام شدن از طریق نرمافزار مخصوص پیادهسازی است. اگر برد آموزشی مورد نظر شما، شامل یکی از FPGAهای شرکت Xilinx است، نرمافزار مخصوص پیادهسازی آن، نرمافزار ISE است. حتما به این نکته دقت داشته باشید که برد آموزشی باید بتواند با این نرمافزار و پروگرامر آن که نرمافزار iMPACT نام دارد ارتباط برقرار کند. در حال حاضر، بردهای ارزانقیمتی وجود دارند که برای پروگرام کردن آنها باید از یک نرمافزار مخصوص استفاده کرد و نمیتوان به کمک نرمافزار ISE به آن متصل شد.
برای آشنایی با نرمافزار ISE این برنامه ویدئویی را ببینید…
یک حافظه دائمی که قابلیت ذخیرهسازی فایل پروگرام FPGA را داشته باشد، از دیگر ملزومات یک برد آموزشی FPGA است. همانطور که احتمالا میدانید، FPGAها نمیتوانند اطلاعاتی را که با آن پروگرام شدهاند را به صورت دائمی نگه دارند و با خاموش و روشن کردن برد، آنچه در FPGA پروگرام کردهاید پاک خواهد شد. بنابراین، نیاز به یک حافظه دائمی در کنار آنها وجود دارد تا اطلاعات پیکرهبندی در آن ذخیره شود.
اگر بردی که استفاده میکنید دارای یک یا چند هدر توسعه برای اتصال به قطعات جانبی باشد، انعطاف زیادی در بکارگیری آن به وجود خواهد آمد. منظور از هدر توسعه این است که پینهای ورودی/خروجی FPGA که در طراحی برد، بدون استفاده ماندهاند از طریق یک سوکت یا هدر برای شما قابل دسترسی باشند. به این ترتیب، در صورتی که بخواهید یک قطعه جانبی را که روی برد نیست به FPGA وصل کنید، میتوانید از طریق این هدر، اتصالات لازم را برقرار کنید.
آخرین قابلیت لازم بر روی هر برد آموزشی، حداقل یک LED و یک دکمه فشاری یا Push Button است. وجود یک LED به شما این امکان را میدهد که با یک کد ساده که LED را به یک چشمکزن تبدیل میکند و قرار دادن این کد در کنار کدهای اصلی، همواره از سلامت و عملکرد صحیح FPGA به طور کلی مطلع باشید.
قابلیتهای دیگری که در صورت وجود میتوانند مفید باشند، وجود یک حافظه RAM جانبی برای ذخیرهسازی دادهها و کدهای بزرگ است. همچنین، وجود بستر پیادهسازی یک یا چند پروتکل ارتباطی مثل RS232 یا USB میتواند به شما امکان پیادهسازی پروژههایی را که نیاز به ارتباط با کامپیوتر یا بردهای دیگر را دارند بدهد.
برای آشنایی با نحوه پیادهسازی پروتکل RS232 این مقاله را بخوانید…

کدام خانواده از FPGAها برای یادگیری مناسب هستند؟
تقریبا با هر کدام از انواع FPGA میتوان تمرینهای متنوع و مناسبی برای یادگیری FPGA انجام داد. البته بهتر است که از FPGAهای مدرنتر و به روز یک شرکت استفاده کنید تا بتوانید با قابلیتهای جدید آنها نیز آشنا شوید.
در مورد شرکت Xilinx، پنج خانواده از FPGAها وجود دارند که جزء محصولات به روز آن محسوب میشوند. این FPGAها عبارتند از خانوادههای Virtex-7، Kintex-7، Artix-7، Zynq و Spartan-6.
با توجه به اینکه موضوع قیمت یک برد آموزشی، یکی از عوامل مهم در انتخاب و خرید آن محسوب میشود،خانواده FPGAهای Spartan-6 میتواند بهترین گزینه برای یک برد آموزشی باشد. این گروه از FPGAهای شرکت Xilinx، علیرغم اینکه دارای معماری مدرن و پشتیبانی گسترده توسط شرکت Xilinx هستند، از قیمت بسیار کمتری نسبت به FPGAهای دیگر این شرکت برخوردارند.
شرکت Xilinx البته یک گروه معروف دیگری از FPGAهای قدیمی را با نام Spartan-3 تولید میکرد که هنوز هم در بعضی از شرکتهای داخلی استفاده شوند. این خانواده از FPGAها معماری قدیمی و قابلیتهای سختافزاری بسیار محدودتری نسبت به دیگر FPGAها دارند. بنابراین، با اینکه بردهای آموزشی مبتنی بر این FPGAها از قیمت کمتری برخوردارند، بهتر است که برای یادگیری استفاده نشوند.
چه عواملی یک برد آموزشی FPGA را گران میکنند؟
در ابتدای این مقاله، تعداد زیاد قطعات جانبی روی برد آموزشی را به عنوان یکی از مهمترین عوامل افزایش قیمت یک برد آموزشی FPGA مطرح کردم. هر کدام از این قطعات به تنهایی، مقداری بر قیمت تمام شده یک برد آموزشی اضافه میکنند. از طرف دیگر، تعدد قطعات جانبی باعث میشود که این بردها با تعداد لایههای زیاد طراحی شوند که این نیز یکی دیگر از عوامل افزایش قیمت این بردها است.
عامل دیگری که قیمت برد را به نحو قابل ملاحظهای افزایش میدهد، نوع FPGA استفاده شده در آن است. همانطور که در بخش قبلی اشاره کردم، شرکتهای تولید کننده FPGA عموما دارای خانوادههای مختلفی از FPGAها هستند که کارایی، توان مصرفی و منابع دیجیتالی موجود در آنها با یکدیگر متفاوت هستند.
قیمت بعضی از FPGAهای شرکت Xilinx بیش از ۱۰ میلیون تومان است. در نتیجه، انتخاب یک FPGA مدرن و در عین حال ارزانقیمت میتواند در نهایت باعث ساخت برد آموزشی با قیمت مناسب شود. بردهایی که مبتنی بر FPGAهای گرانقیمت هستند، معمولا برای تست و مدلسازی پروژههای حرفهای استفاده میشوند و انتخاب آنها به عنوان یک برد آموزشی، باعث هدر شدن پول شما خواهد شد.
آخرین موردی که میتواند قیمت یک برد آموزشی را تحت تاثیر قرار دهد، پروگرامر آن است. FPGAهای شرکت Xilinx را میتوان به کمک دو نوع پروگرامر USB و پارالل پروگرام کرد. پروگرامرهای USB شرکت Xilinx از سرعت بسیار بیشتری برخوردارند اما قیمت آنها بیش از ۱۰ برابر پروگرامرهای پارالل است.
برای بردهای آموزشی که از FPGAهای کوچک استفاده میکنند، استفاده از پروگرامر پارالل میتواند انتخاب مناسبی باشد، اما مشکل به کار گیری این پروگرامرها این است که امروزه کمتر کامپیوتری را میتوانید پیدا کنید که دارای پورت پارالل باشد.
راهحلی که برای مشکل پروگرامر و کم کردن هزینه برد آموزشی FPGA در بعضی از بردهای آموزشی به کار گرفته شده است، استفاده از پروگرامر USB به صورت روی-برد یا on-board است. در این روش، پروگرامر USB، روی برد تعبیه شده است و شما نیاز به تهیه یک پروگرامر USB گرانقیمت جداگانه برای پروگرام کردن ندارید. استفاده از این نوع بردها، از نظر اقتصادی بسیار به صرفهتر هستند. تنها نکتهای که در تهیه این نوع بردها باید به آن دقت کنید این است که برد بتواند با نرمافزار ISE هم ارتباط برقرار کند و برای پروگرام شدن، نیاز به نرمافزار دیگری نداشته باشد.
اگر شما هم تجربهای در خرید بردهای آموزشی FPGA دارید، خوشحال خواهم شد که آن را با من و دیگر خوانندگان به اشتراک بگذارید.
آیا مقاله چطور یک برد آموزشی FPGA مناسب برای یادگیری انتخاب کنیم برای شما مفید بود؟
لطفا نظرتان را در مورد این برنامه در پایین همین پست با دیگران به اشتراک بگذارید. همچنین با کلیک روی هر کدام از دکمههای اشتراک گذاری ابتدای این مطلب و به اشتراکگذاری آن در شبکههای اجتماعی میتوانید افراد بیشتری را در یادگیری این مطالب سهیم کنید.