توسط احمد ثقفی 

3 مرداد, 1395

انتخاب برد آموزشی FPGA

اگر شما در حال یادگیری FPGA و نحوه پیاده‌سازی مدارات دیجیتال به کمک این تکنولوژی هستید، به احتمال زیاد جستجویی هم در مورد برد آموزشی FPGA در بازار ایران انجام داده‎‌اید و با انواع بردهای ساده و پیچیده برخورد کرده‌اید.

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

More...

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

برای دانلود فایل PDF این مقاله، روی دکمه زیر کلیک کنید:

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

برد آموزشی 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های Xilinx

کدام خانواده از 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 فراد ۱

برد آموزش FPGA فراد ۱

آیا  مقاله چطور یک برد آموزشی FPGA مناسب برای یادگیری انتخاب کنیم برای شما مفید بود؟

لطفا نظرتان را در مورد این برنامه در پایین همین پست با دیگران به اشتراک بگذارید. همچنین با کلیک روی هر کدام از دکمه‌های اشتراک گذاری ابتدای این مطلب و به اشتراک‌گذاری آن در شبکه‌های اجتماعی می‌توانید افراد بیشتری را در یادگیری این مطالب سهیم کنید.

کانال تلگرام آموزش FPGA از صفر

برای عضویت در کانال تلگرام و دسترسی به آموزش‌های بیشتر و اطلاع سریع از زمان انتشار آموزش‌ها و تخفیف‌های ویژه، روی دکمه زیر کلیک کنید:

شاید به این موضوعات نیز علاقه داشته باشید:

  • سلام
    اگر درست متوجه شده باشم شما نظرتان این است که ما بیشتر از شبیه سازی و چیپ اسکوپ برای ارزیابی کدهای خودمون استفاده کنیم و نه سخت افزار مربوطه هرکدام درسته؟

    • سلام،

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

  • سلام و درود استاد
    مثل همیشه بسیار عالی و مفید و مختصر بود سپاسگذارم.
    جسارتا جناب ثقفی امکانش نیست دوره آموزشی رو به صورت غیر حضوری (اینترنتی) و با هزینه کمتری برگذار کنید؟ چون با اینکه دوره فشرده گذاشتید ولی باز هم برای بعضی شهرستانی ها امکان حضور نیست.

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

    • سلام، ممنون از شما.

      به زودی دوره طراحی دیجیتال با FPGA به صورت آنلاین قابل دسترسی خواهد بود.

      آموزشگاه فراد اندیش، برد “فراد ۱” را مدتی است که طراحی کرده است و در چهار دوره اخیر طراحی دیجیتال با FPGA آن را به شرکت کنندگان ارائه داده است.

      در حال این برد برای عرضه عمومی آماده شده است و می‌توانید از طریق لینک زیر آن را سفارش دهید:

      https://faradandish.com/product/farad1/

      موفق باشید.

  • سلام.من زبان verilog رو یاد گرفتم و به خل مسائل توصیف سخت افزاری علاقه دارم.می خواستم ببینم زمینه ی کاریش فقط fpga هست یا نه؟
    سپاس

  • درود
    با تشکر از شما، مثل همیشه عالی بود
    امیدوارم که دوره های انلاین هر چه زودتر برگذار گردد.

  • سلام
    من نمیدونم زبان verilog یا vhdl کدام مناسب تر است. ایا هر دو روی برد شما قابل پیاده سازی هستند؟
    لطفا راهنمایی کنید /

    • سلام،

      در ارتباط با سوالتون لطفا به دو نکته توجه کنید:

      ۱- هر نوع مداری را می‌توان با هر کدام از زبان‌های VHDL و Verilog طراحی کرد و از این نظر تفاوتی با یکدیگر ندارند.
      ۲- نه فقط این برد، بلکه تمام بردهای شامل FPGA می‌توانند مداراتی را که به کمک هر کدام از زبان‌های VHDL یا Verilog نوشته شده است پیاده‌سازی کنند.

      موفق باشید.

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

  • سلام دوستان ببخشید من یه سوال کلی در مورد پروژه داشتم مرسی که میخونید و جواب میدید : پروژه من ساخت پیانو دیجیتال هست ولی نمیخوام خیلی حرفه ای باشه ولی دقیقا کار پیانو رو انجام بده و بتونه ۸۸ کلید رو پردازش کنه و فایل های موسیقی(کلید های پیانو) به صورت همزمان به امپلی فایر بده و پردازش کنه من توی قسمت تقویت مشکلی ندارم و فقط سوالم روی دریافت اطلاعات از کلید ها(کلید های پیانو) و پردازش آن و پاسخ به اون عمل هستش سوالم اینجاست که این پروژه رو باکودوم fpga انجام بدم که بتونه این حجم رو پردازش کنه و من نیاز به یک فضای خارجی حداکثر ۵۰ مگابایتی برای فایل های mp3 نوت ها دارم لطفا یه fpga پیشنهاد کنید مرسی

  • استاد با توجه به ناموجود بودن برد فراد ۱ ، برای پیاده سازی آموزش هاتون از بین برد های بازار پیشنهادی دارین که تهیه کنیم؟

    • متاسفانه از بردهای موجود در بازار اطلاعی نداریم. البته عمده مطالب تمام آموزش‌ها بدون برد و به کمک شبیه‌سازی نیز فایل تمرین کردن هستند.

      موفق باشید.

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    ۷ تکنیک پیشرفته کدنویسی برای FPGA

    >