آشنایی مختصر با دوره FPGA مقدماتی

 

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

تحلیل بازار کار

 

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

معمولادر صنایع و شرکت هایی که به تولید محصولات برق و الکترونیک می پردازند، هزینه تمام شده محصول اولویت بیشتری نسبت به سرعت و کارایی دارد بنابراین از میکروکنترلرهای رایجی چون AVR ، ARM و PIC استفاده می شود. اما در کاربردهای نظامی همچون مخابرات، هوا فضا و ... این سرعت و کارایی سیستم است که حرف اول را می زند و هزینه اهمیت چندانی ندارد. بنابراین این صنایع عمدتا از FPGA استفاده می کنند. پس مسلما این صنایع نیازمند متخصصین با دانش کافی در حوزه FPGA جهت انجام پروژه های مختلف خواهند بود.

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

توانایی دانشجو پس از پایان دوره FPGA مقدماتی

 

دانشجو در پایان دوره میتواند:

• با ساختار داخلی FPGA  ، CPLD  و تفاوت آنها با ساختارهای میکروپروسوری و میکروکنترلری آشنا میشود

• با نرم افزار Xilinx ISE و Vivado  و شبیه سازی در نرم افزارهای Modelsim آشنا میشود

• پیاده سازی و طراحی دیجیتال به کمک زبان VHDL ، در انواع FPGA

• آشنایی با پیاده سازی انواع مدارهای دیجیتالی ترتیبی و ترکیبی

• پیاده سازی ارتباطات با سایر واحد های سخت افزاری از قبیل ADC ، DAC ، SDRAM ، LCD ، DC/Stepper Motor ، PS2  ، VGA Controller   و پیاده سازی  Digital Filter

• پیاده سازی انواع واسط های ارتباطی SPI  ، UART ، I2C  .

• با IP Core ها و طریقه بکار گیری آنها در طراحی آشنا میشود

شیوه برگزاری کلاس

 

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

در بخش نرم افزاری این دوره، پروژه ها در نرم افزار ISE ساخته شده و روی برد آموزشی شرکت نیراسیستم که به تعداد کافی در اختیار دانشجویان قرار می گیرد به صورت سخت افزاری پیاده سازی خواهند شد. هسته مرکزی این برد Spartan3 و از خانواده Xilinx بوده و دارای امکانات و واحدهای مختلف جهت راه اندازی در این دوره می باشد.

سرفصل دوره آموزشی  FPGA مقدماتی:

• معرفی FPGA و CPLD خانواده ها و شرکت های سازنده

• مقایسه بین FPGA و انواع میکروکنترلرها

• بررسی ساختار داخلی FPGA

• معرفی VHDL و مقایسه با زبان های برنامه نویسی مرسوم

• آشنایی با ساختار کدنویسی در VHDL

• آشنایی با نرم افزار ISE

• بررسی مفاهیم سنتز ، PLACE AND ROUTE

• عملگرهای رابطه ای و محاسباتی

• تعریف ثوابت و generic  ها

• بررسی عبارات مختلف پیاده سازی همزمان

• طراحی یک مالتی پلکسر انکدر اولویت

• آشنایی با IP Core Clock DCM

• نوشتن شمارنده با ریست سنکرون و آسنکرون

• طراحی ماژول PWM کنترل سرعت موتور DC

• طراحی یک مقسم فرکانس

• بررسی تاثیرات تاخیر دلتا در پروسس دیاگرام کلاک دیتا

• ایجاد یک شکل موج سینوسی و نمونه برداری از آن در MATLAB

• آشنایی با IP Core ROM

• راه اندازی DAC جهت ایجاد یک شکل موج سینوسی

• پیاده سازی ماژول Debouncer

• راه اندازی LCD کاراکتری

• راه اندازی 7Segment توسط FPGA

• آشنایی و شبیه سازی با نرم افزار modelsim

• انواع ماشین های حالت

• روش استاندارد و بهینه نوشتن ماشین های حالت

• پیاده سازی ماژول Sequence Finder

• پیاده سازی واسط ارتباطی SPI

• پیاده سازی شیفت رجیستر با ورودی موازی و خروجی موازی

• پیاده سازی Moving Average Filter

• پیاده سازی Stepper Motor Driver

• راه اندازی ADC

• برقراری ارتباط سریال  UART با FPGA

• راه اندازی USART

• پیاده سازی واسط ارتباطی  I2C

• راه اندازی Keyboard Scanner (PS2)

• آشنایی با IP Core RAM و پیاده سازی DPRAM

• آشنایی با IP Core RAM و پیاده سازی SPRAM

• پیاده سازی ماژول ارتباط با SRAM خارجی

• آشنایی با IP Core multiplier

• پیاده سازی واسط ارتباط VGA

• ارسال و دریافت دیتا با استفاده از ماژولهای HM/TR

عناوین پروژه ها و تمرین های دوره آموزشی  FPGA مقدماتی:

• طراحی یک مالتی پلکسر انکدر اولویت

• طراحی ماژول PWM کنترل سرعت موتور DC

• طراحی یک مقسم فرکانس

• راه اندازی DAC جهت ایجاد یک شکل موج سینوسی

• راه اندازی LCD کاراکتری

• راه اندازی 7Segment توسط FPGA

• راه اندازی ADC

• راه اندازی USART

• پیاده سازی واسط ارتباطی  I2C

• راه اندازی Keyboard Scanner (PS2)

• پیاده سازی ماژول ارتباط با SRAM خارجی

• پیاده سازی واسط ارتباط VGA

• ارسال و دریافت دیتا با استفاده از ماژولهای HM/TR

شرکت در این دوره برای افرادی که علاقه مند به فعالیت در حوزه های دیجیتال و طراحی سخت افزارهای دیجیتالی هستند سودمند خواهد بود و چشم انداز تازه ایی را برای علاقه مندان به فعالیت در حوزه های پیشرفته تر همچون پردازش سیگنال       ( signal processing ) ، رباتیک ، محاسبات حجیم (high performance computing)  Embedded System و ... پیش روی علاقه مندان خواهد گشود و بالطبع نوید بخش دور نمایی بهتر و موفقتر در آینده علمی و شغلی آنان خواهد بود.

در حال بروز رسانی

برای شرکت در دوره FPGA چه پیش نیازی باید داشته باشم ؟

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

هم چنین کار با مدارهای الکترونیک دیجیتال در هر حوزه ای از جمله میکروکنترلر نیز می تواند به فراگیران این مهارت کمک کند .

آیا برای یادگیری FPGA نیاز به توانمندی برنامه نویسی میکروکنترلر می باشد ؟

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

چه خانواده ای از FPGA تدریس میشه و آیا فرقی داره ؟

در ایران خانواده های Xilinx و Altera بسیار محبوب هستن و در صنایع نظامی و شرکت های مختلف الکترونیکی از هر دو برند استفاده می شود . نکته مهم در فراگیری FPGA این هست که ساختار طراحی مدارهای دیجیتال مبتنی بر FPGA حائز اهمیت است و به صورت کلی می توان گفت با یادگیری هر یک از برندهای نام برده شده می توان به برند دیگر هم رجوع کرد و نیازی به یادگیری مجدد نیست . ضمن اینکه به دلیل استقبال بیشتر مخاطبین از برند Xilinx دوره های این برند به تعداد بیشتری در نیراسیستم تشکیل می شود .

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

به صورت کلی حوزه  میکروکنترلر و FPGA دو مقوله جداگانه هستند و حتی می‌شود هر دو مهارت را به صورت موازی پیگیری کرد. هر دو حوزه بسیار خوب هستند و می‌توانند از نظر شغلی به شما کمک زیادی کنند. اما توجه شود که برای یادگیری میکروکنترلرها و هم چنین FPGA تسلط به مدارمنطقی بسیار حائز اهمیت است .

از چه نرم افزاری برای آموزش استفاده می شود ؟

در دوره های Xilinx از نرم افزار ISE و در دوره های Altera از نرم افزار Quartus استفاده می شود .

یادگیری FPGA با کدام زبان برنامه نویسی مناسب تر است ؟

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

آیا در طول دوره از سخت افزار هم جهت یادگیری استفاده می شود؟

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

آیا برای استفاده از سخت افزار و بردهای آموزشی باید هزینه جداگانه ای پرداخت کرد؟

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

آیا امکان تهیه برد آموزشی برای استفاده خارج از کلاس نیز وجود دارد؟

بله؛ در صورتی که دانشجو جهت انجام تمرینات خارج از کلاس و انجام پروژه های شخصی نیازمند برد آموزشی باشد می تواند برد مورد نیاز را از مرکز آموزش نیراسیستم خریداری نماید اما هیچ اجباری در این خصوص وجود ندارد.

آیا در انتهای دوره برای شرکت کنندگان گواهینامه صادر می شود؟

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

نحوه برگزاری آزمون پایانی دوره به چه صورت است؟

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

آیا برای این دوره جزوه یا کتاب خاصی باید خریداری شود ؟

 در تمامی دوره های آموزشی کتاب ها ، مراجع و فایل های آموزشی مختلفی توسط اساتید معرفی می گردد .