کارگاه آموزش FPGA و زبان VHDL
کارگاه آموزش FPGA و زبان VHDL
FPGA and VHDL workshop
زمان شروع دوره: تابستان 1400
روزها و ساعت های برگزاری دوره: متعاقبا اعلام میگردد
محل برگزاری دوره: کارگاه برق دانشگاه صنعتی شریف
برای اطلاع از نحوه ثبت نام در این دوره به مراجعه فرمایید.
پیش نیاز های دوره:
مدارات منطقی دیجیتال
اصول سیستم های دیجیتال.
استاد: دکتر محمد جوادیان
دارای دکترای برق از دانشگاه صنعتی شریف
دارای بیش از 16 سال سابقه تدریس در دانشگاه های دولتی، آزاد، پایم نور، علمی کاربردی، و فنی حرفه ای
دارای مقام رباتیک خوارزمی و ایران اپن، و دارای سالها سابقه کار در زمینه طراحی الکترونیک، میکروکنترلر و برق صنعتی
دارای سالها سابقه تدریس درس کنترل کننده های PLC و کارگاه برق صنعتی و ساختمان در دانشگاه ها.
مدرک پایان دوره:
اعطای گواهینامه معتبر دو زبانه پایان دوره
مدت دوره:
48 ساعت
مخاطبین:
تمامی دانشجویان و فارغ التحصیلان رشته مهندسی برق با گرایش الکترونیک، مخابرات، قدرت، و مهندسین کامپیوتر با گرایش سخت افزار و علاقه مندان به فعالیت در حوزه های دیجیتال و طراحی سخت افزارهای دیجیتالی، علاقه مندان به فعالیت در حوزه های پیشرفته تر همچون پردازش سیگنال ( signal processing )، رباتیک، محاسبات حجیم، سیستمهای نهفته (Embedded System)، سیستمهای زمان حقیقی (Real Time) و بحثهای high performance computing و طراحی مدارات مجتمع فشرده
کاربرد ها، مهارت ها و توانایی های اکتسابی پس از گذراندن دوره:
آماده کردن شرکت کنندگان در کارگاه برای ورود به بازار کار طراحی دیجیتال مبتنی بر FPGA با بدست آموردن مهارت لازم برای انجام پروژههای پیشرفته مرتبط.
در انتهای دوره آموزشی دانشپذیر قادر به طراحی یک سیستم دیجیتال بر روی FPGA خواهد بود
این دوره برای کسانی که میخواهند تازه شروع کنند از این جنبه که اصولی و پایه آموزش داده میشود مفید است و برای کسانی که سالهاست کار میکنند از این نظر که یادگیری آنها را تکمیل میکند تجربه متفاوتی است. در این دوره سعی بر آن است که یک یادگیری اساسی انجام شود و همچنین مطالب تجربی بسیاری در کلاس مطرح میشود که ممکن است در این سرفصل نباشد. این آموزش پیرامون برنامه نویسی VHDL تقریبا کامل بوده و می توان پس از یادگیری آن، کار با CPLD و FPGA را آغاز نمود و برای کسانی که بخواهند به هر نحوی سیستم الکترونیکی دیجیتال، طراحی و پیاده سازی نمایند به خصوص در رشته های سیستم های الکترونیک دیجیتال، الکترونیک، سخت افزار، معماری کامپیوتر و مخابرات، پیشنهاد می شود.
معرفی دوره:
FPGA ها تراشه هایی قابل برنامه ریزی هستند که ابزاری قدرتمند در انجام کارهایی نظیر: طراحی و پیاده سازی سیستم های پردازش موازی، سیگنال و تصویر، سیستم های مخابراتی، کامپیوتری، محاسباتی، هوش مصنوعی و … همچنین Prototype قبل از طراحی ASIC هستند.
FPGA یک سخت افزار خام است که شما میتوانید هر سخت افزاری را بر روی آن قرار دهید (دانلود کنید)، بطوریکه از آن لحظه به بعد کار همان سخت افزار را انجام میدهد. این سخت افزار میتواند یک گیت NAND مانند IC7400 باشد تا یک میکروکنترلر (مثلا AVR). اما در عمل سخت افزارهایی که IC آنها وجود ندارد را بر روی FPGA پیاده سازی میکنند. در واقع FPGA یک بستری برای پیاده سازی مدارات ASIC(Application Specific Integrated Circuit) (مدارات خاص منظوره) است که بیشتر در صنایع نظامی، پزشکی، فیلترهای دیجیتال، سیستم های انتقال دیتاهای دیجیتال، سیستم های مخابراتی و سیستم های مختلف کنترلی در مواردی که سرعت پردازشی بالا، هزینه پایین، تعداد کم و زمان طراحی و توسعه کم مورد نیاز است استفاده میگردد. در صورتیکه هزینه مهم نباشد یا تعداد زیاد برای تولید مد نظر باشد دیگر از FPGA استفاده نمیشود و IC جدیدی برای آن منظور طراحی میگردد.
در طراحی FPGA به این علت که کل سخت افزار را طراح طراحی میکند میتواند برای رسیدن به محدودیتهای توان یا زمان به راحتی و هرجا که نیاز باشد از pipeline (خط لوله) یا parallel processing (پردازش موازی) استفاده نماید. همچنین میتواند از هر معماری سخت افزاری که مدنظرش باشد برای پیاده سازی سخت افزار استفاده نماید. این مورد مزیت بالایی نسبت به استفاده از IC های آماده با کارایی ثابت و از پیش مشخص میباشد. بعنوان مثال کارها و پردازشهایی را که میتوان با FPGA انجام داد را حتی با قویترین میکروکنترلرهای موجود نیز نمیتوان انجام داد. زیرا این میکروکنترلرهای کاراییشان ثابت و سیم بندی شده است، مثلا باس دیتا 64 بیت ثابت، اما در FPGA درصورت نیاز میتوان باس داده 1024 بیتی را نیز داشته و حتی میتوان روی همه این بیتها بصورت موازی پردازش انجام داد. در بحث موازی سازی نیز قدرت FPGA میتواند بسیار بیشتر از کارتهای گرافیک کامپیوتری باشد زیرا در FPGA تعداد واحدهای پردازشگر موازی را خود طراح تعیین میکند در حالیکه در کارتهای گرافیک این تعداد ثابت هستند.
امروزه با رشد الگوریتمهای پردازش تصویر، پردازش سیگنال، الگوریتمهای هوش مصنوعی مانند شبکه های عصبی، یادگیری عمیق و ماینینگ (استخراج) ارز دیجیتال تمایل به سمت پیاده سازی سخت افزارهای مورد نظر بر روی FPGA افزایش یافته است.
نحوه اجرا: بصورت کاملا عملی و پروژه محور
امکان تهیه برد آموزشی با مبلغ 850 هزار تومان با هزینه پستی رایگان
سرفصل کلی دوره:
معرفی انواع روشهای طراحی دیجیتال (مدارهای منطقی، میکروپروسسورها، میکروکنترلرها، پردازشگرهای سیگنال، FPGA ها، بردهای سیستم عامل دار مانند Raspberry pie و ...)
معرفی FPGA، انواع آنها و شرکتهای سازنده
آموزش زبان VHDL بطور کامل از مقدماتی تا پیشرفته
آموزش نرم افزار Xilinx ISE
کار با نرم افزار Chipscope به منظور دیباگ کردن کد
کار عملی در هر جلسه با بورد FPGA
معرفی منابع داخلی FPGA
معرفی منابع کلاک
معرفی پایپلاین (خط لوله) و انجام تمرین و پروژه
معرفی Constraint ها
تحلیل سرعت، سطح و توان در FPGA
انجام پروژه های مختلف (کار با LCD، کار با کلید، کار با کیبورد، کار با 7segments، کار با LED، کار با پروتکل سریال UART؛ کار با برخی از پروتکل های دیگر
معرفی طراحی Hardwired
معرفی انواع مقالات مبتنی بر FPGA و نحوه انجام کار تحقیقاتی در این زمینه
و مباحث تکمیلی دیگر
سرفصل کلی دوره به تفکیک جلسات:
جلسه اول:
معرفی انواع روشهای طراحی سخت افزارهای دیجیتال
معرفی ساختار داخلی FPGA و CPLD ها، شرکت های سازنده، اتفاقات درون FPGA به هنگام پروگرام کردن و منابع سخت افزاری موجود در FPGA
آشنایی با زبان VHDL
نصب نرمافزار
نوشتن و شبیه سازی و پیاده سازی یک مثال بطور کامل بصورت کارگاهی در کلاس بر روی بردهای FPGA
جلسه دوم:
مروری بر ساختار زبان VHDL
انواع تایپ داده های تک بیتی و چند بیتی
معرفی روشهای طراحی ساختاری و رفتاری
نحوه استفاده از ماژولها و کامپوننتهای طراحی شده در یک طرح جدید
پیاده سازی یک تمام جمع کننده بصورت عملی (دریافت ورودی ها از دیپ سوئیچ و نمایش حاصلجمع روی LED)
نحوه نوشتن فایل UCF برای معرفی پایه های ورودی و خروجی
بحثهای مربوط به قوانین ارجاع
طریقه نوشتن تست بنچ بصورت کامل (تولید کلاک، دستورات wait، تولید عدد تصادفی و ...)
جلسه سوم:
معرفی دستورات محیط concurrent و sequential
پیاده سازی مدارات ترکیبی در محیط Concurrent و sequential
پیاده سازی مالتی پلکسر، دیمالتی پلکسر، انکدر، دیکدر، ALU، بافر 3 حالته، باس،
پیاده سازی جمع کننده BCD بصورت رفتاری و ساختاری
نمایش بر روی 7segment با انواع دستورات محیط concurrent و sequential
خواندن کلید Dip Switch و نمایش عدد ورودی بر روی 7_segment بصورت کارگاهی و عملی در کلاس
جلسه چهارم:
طراحی و پیاده سازی ALU به طرق مختلف
معرفی IP و نحوه استفاده از IP ها در طراحی
طراحی و پیاده سازی ALU با استفاده از IP ها
جلسه پنجم:
پیاده سازی ALU طراحی شده بر روی برد و تست مدار با استفاده از نرم افزار chipscope قسمت VIO
مدارات ترتیبی
پیاده سازی فلیپ فلاپ، رجیستر، شمارنده، شیف رجیستر
پیاده سازی پروژه کامل جمع کننده سریال
طراحی شمارنده و استفاده از ILA در chipscope
جلسه ششم:
ماشینهای حالت و مدارات میلی و مور
خواندن کلید push button و حذف debounce کلید با استفاده از ماشین های حالت
طراحی تایمر و نمایش ثانیه و دقیقه بر روی 7segment مالتی پلکس شده
راه اندازی ADC توسط FPGA و ماشین های حالت
نمایش بر روی نمایشگر LCD کاراکتری
جلسه ششم:
پیاده سازی پروتکل ارتباطی UART
معرفی انواع انکدر برای شمارش دور موتور و تعیین زاویه چرخش
طراحی شمارنده و نمایش تعداد پالسهای انکدر افزایش بر روی 7segment
معرفی موتورهای stepper motor و راه اندازی آن
معرفی موتورهای DC و servo motor ها
کنترل موتور DC و servo motor با پالسهای PWM تولید شده توسط FPGA
جلسه هفتم:
بررسی نکات مربوط به کد نویسی قابل سنتز با زبان VHDL
معرفی pipeline و نحوه پیاده سازی pipeline در FPGA
منابع کلاک در FPGA
بحثهای تحلیل توان و سرعت و منابع در FPGA
استفاده از constraint ها در FPGA
معرفی سایر بخشهای نرم افزار Xilinx ISE
جلسه هشتم:
انواع حافظه در FPGA (حافظه های توزیع شده و Block RAM ها و نحوه استفاده از آنها)
برنامه ریزی حافظه Flash مربوط به برد FPGA
پیاده سازی برخی پروتکلهای ارتباطی دیگر
جلسه نهم:
خواندن کیبورد ماتریسی
طراحی ماشین حساب دیجیتالی با استفاده از کیبرد و LCD
طراحی ضرب کننده ماتریسی
طراحی بصورت Hard Wired
جلسه دهم:
معرفی مقالات و کارهای پژوهشی که میتوان با استفاده از FPGA انجام داد.
مباحث تکمیلی دیگر