معرفی دوره
به دوره آموزشی طراحی در FPGA با زبان Verilog HDL خوش آمدید. هدف از این دوره آشنا کردن دانشجو با مفاهیم پایهای طراحی دیجیتال در FPGA و سپس موضوعات نسبتاً پیشرفته در فرایند پیاده سازی طرحهای پیچیده روی FPGA است.
ساختار دوره آموزشی
مجموعه درسهایی که در این دوره ارائه میشود حاصل سالها تجربه در کنار اصول آکادمیک ارائه مطلب است و ساختار درسها به شکلی است که شما را گام به گام با چالشهای عملیاتی در طراحی با FPGA آشنا میکند. مطمئناً بعد از پایان این دوره شما اعتماد نفس کافی برای ورود به بازار کار و کسب مهارتهای تکمیلی را پیدا خواهید کرد.
- کل زمان پیش بینی شده برای این دوره ۳۲ ساعت است و در قالب ۵ فصل و ۱۶ جلسه درسی آنلاین ارائه میگردد.
- مدت زمان هر جلسه درسی ۱۲۰ دقیقه است. از این زمان ۹۰ دقیقه به ارائه مطالب درس در آن جلسه و توضیحات استاد اختصاص دارد و در انتهای هر جلسه ۳۰ دقیقه برای پرسش و پاسخ و در اختیار دانشجویان قرار میگیرد.
- این دوره به دلیل جامع بودن نسبتاً طولانی است. ممکن است برای شرکت در تمامی جلسات انگیزه کافی نداشته باشید و البته حق هم با شماست. اما در نظر داشته باشید برای یکپارجه شدن مطالب و افزایش بهره وری مطمئناً حضور در تمامی جلسات ارزشمند خواهد بود.
- زبان Verilog یک زبان توصیف سخت افزار (HDL) است که برای توصیف مدارهای دیجیتال به صورت متنی استفاده میشود. دیگر زبانی که به شکل گسترده در صنعت برای توصیف مدارات سخت افزاری در FPGA استفاده میشود VHDL است. زبانهای Verilog و VHDL کم و بیش محبوبیت بازار یکسانی دارند، اما در این دوره از Verilog برای کدنویسی و آموزش استفاده شده است، زیرا یادگیری آن آسان است و شباهت دستوری به زبان C دارد، همینطور کمتر در رسانههای فارسی زبان به آموزش آن پرداخته شده است. به صورت کلی هنگامی که با مبانی توصیف سخت افزار آشنا شوید، یادگیری هر دو زبان Verilog و VHDL چندان سخت نخواهد.
- برخلاف زبانهای برنامه نویسی (مثل C) در اغلب موارد یادگیری زبانهای توصیف سخت افزار، برای افرادی که هیچ پیش زمینه ذهنی از برنامه نویسی سطح بالا نداشته باشند، ساده تر است. با وجود اینکه Verilog و C شباهتهایی به هم دارند اما مفاهیم کلی زبانهای توصیف سخت افزار با برنامه نویسی متفاوت است.
- و حرف آخر اینکه، حتماً به موقع در سر کلاس حاضر شوید و از مطالبی که ارائه میشود، نُت برداری کنید. این باعث حضور مؤثرتر شما در کلاس میشود. سعی کنید در طول یادگیری سوأل بپرسید، خودتان را به چالش بکشید و از زمانی که به یادگیری کار اختصاص میدهید، لذت ببرید.
فصل اول: مقدمهای بر طراحی دیجیتال با FPGA
۱- آشنایی با طراحی دیجیتال
۲- آشنایی با ساختمان داخلی FPGA
۳- آشنایی با مفهوم زبانهای توصیف سخت افزار (HDL) و مقایسه آن ها با یکدیگر
۴- آشنایی با شرکت های سازنده و IDE های مختلف
پس از اتمام این فصل دانشجو میتواند تفاوت طراحی با Microprocessorها و ASIC و FPGAها را درک نماید. چگونگی پیاده شدن یک مدار ساده مانند Full Adder را در FPGA درک کند. زبانهای VHDL و Verilog HDL را مقایسه کند و با مهمترین مفاهیم این حوزه آشنا گردد.
فصل دوم: آموزش مقدماتی Verilog HDL
۱- نحوه نصب و اجرا و انجام پروژه در Xilinx ISE
۲- طراحی، پیاده سازی و شبیه سازی مدارات در سطح گیت
۳- بکارگیری عبارتهای Verilog مانند عملیات محاسباتی، جهت طراحی مدارهای ترکیبی در سطح RTL
۴- بکارگیری عبارتهای Verilog مانند دستورات کنترلی جهت طراحی مدارهای ترتیبی در سطح RTL
۵- توصیف آرایههای دو بعدی جهت طراحی حافظهها
۶- برنامه ریزی تراشه FPGA و اجرای طرح روی سخت افزار
دانشجو بر طراحی مالتی پلکسر، دیکدر (کدگشا)، انکدر (کدگذار)، ALU، رجیستر، شمارنده، شیفت رجیستر، فیلتر FIR، RAM و فایل رجیستر مسلط میگردد.
فصل سوم: بررسی مفاهیم پیشرفته در FPGA
۱- چگونگی انجام مراحل Implementation شامل Translate، Map و Place & Route
۲- انجام شبیه سازی Post Route
۳- توصیف ساختمان داخلی بلوکهای ضرب کننده DSP48 و استفاده بهینه از آنها
۴- توصیف حافظههای بلوکی وحافظههای توزیع شده
دانشجو طراحیهای بهینه تر در سطح RTL انجام میدهد و همچنین درک نسبتاً خوبی از پیاده سازی در FPGA پیدا میکند.
فصل چهارم: مباحث پیشرفته در Verilog HDL
۱- چگونگی طراحی مدارات پیچیده با استفاده از ASM Chart
۲- توصیف ASM Chart بصورت رفتاری
۳- تبدیل الگوریتم های ممیز شناور به ممیز ثابت و مفهوم کوانتیزاسیون
۴- پیاده سازی مدارات اعشاری ممیز ثابت
۵- انجام شبیه سازیهای پیشرفته برای مدارات پیچیده
دانشجو بر طراحی ماژولهایی همانند FIFO، UART، فیلترهای FIR واقعی مسلط می گردد.
فصل پنجم: تبدیل پیاده سازی های نرم افزاری به سخت افزاری
۱- تبدیل الگوریتمهای نرم افزاری نوشته شده در MATLAB به ASM Chart
۲- آشنایی با مفاهیم طراحی شامل Performance، Resource، Pipeline، Unrolling و Throughput
۳- بهینه سازی سخت افزار با استفاده از تکنیکهای طراحی
دانشجو بر طراحی برخی از الگوریتمهای پردازش سیگنال و پردازش تصویر مسلط می گردد.
پیش نیازها
فقط آشنایی با مدارات منطقی و ترجیحاً معماری کامپیوتر کفایت میکند. با این وجود داشتن تجربه قبلی طراحی مدارات منطقی با استفاده از گیتها بسیار ارزشمند خواهد بود، علاوه بر این آشنایی با مفاهیم پردازش سیگنال دیجتیال و صد البته توانایی استفاده از نرم افزار Matlab مزیت محسوب خواهد شد.
آمادگی پیش از شروع دوره
پیش از شروع دوره حتماً یک نرم افزار ویرایش متن مناسب مثل ++Notepad و همینطور محیط توسعه ISE را روی کامپیوتر خودتان نصب کنید. اگر از ویندوز ۱۰ استفاده میکنید، احتمالاً با خطا روبرو میشوید و مجبور هستید با اعمال یکسری تغییرات روی فایلهای نصبی از نسخه ۳۲ بیتی ابزار به جای نسخه ۱۶ بیتی آن استفاده کنید. در چنین شرایطی ممکن است نکات زیر برای شما مفید باشد.
بعد از نصب و با فرض اینکه ISE را در درایو C نصب کردهاید، مراحل زیر را به دقت انجام دهید تا مشکل اجرای ISE برطرف شود:
- مرحله ۱، ابتدا وارد پوشه C:/Xilinx/14.7/ISE_DS/ISE/lib/nt64 شوبد و نام فایل libPortability.dll را به libPortability.dll.orig تغییر دهید.
- مرحله ۲، در پوشه مرحله ۱، یک کپی از فایل libPortabilityNOSH.dll ایجاد کنید و نام آن را به libPortability.dll تغییر دهید.
- مرحله ۳، حالا وارد پوشه C:/Xilinx/14.7/ISE_DS/common/lib/nt64 شوید و فایل libPortabilityNOSH.dll را در این پوشه هم کپی کنید.
- مرحله ۴، در پوشه مرحله ۳، نام فایل libPortability.dll را به libPortability.dll.orig تغییر دهید.
- مرحله ۵، و در آخر، نام فایل libPortabilityNOSH.dll در پوشه مرحله ۳ را به libPortability.dll تغییر دهید.
حالا احتمالاً برای اجرای ISE مشکلی نخواهید داشت.
ویژگیهای این دوره
ویژگیهای کلیدی این دوره به شرح زیر است:
- فایلهای ویدئویی و آموزشهای این دوره قابل دانلود هم هستند و بنابراین شما میتوانید بعد از پایان دوره آنها را دانلود کنید و بارها به صورت آفلاین و در هر زمان که تمایل داشته باشید مجدداً مشاهده کنید.
- همچنین به جز جلسات پرسش و پاسخ آنلاین ۳۰ دقیقهای در انتهای هر درس، شما میتوانید سوالات خودتان را در بخشی که برای همین منظور در پایین هر کدام از درسهای دوره ایجاد شده است مطرح کنید و در کمترین زمان ممکن پاسخ آن را دریافت کنید.
- نمونه کدها و پروژههای مورد استفاده در هر کدام از درسها به صورت دسته بندی شده در هر درس گنجانده شده است و شما میتوانید به راحتی آنها را دانلود کرده و به عنوان یک نقطه شروع از آنها استفاده کنید.
- در طول دوره مراجع و کتب مناسب برای یادگیری هر چه بهتر موضوعات مطرح شده به شما ارائه خواهد شد.
سوألات متدوال
من تجربه کار با FPGA را ندارم آیا این دوره برای من مفید است؟
این دوره دقیقاً برای شما طراحی شده است. شما بعد از اتمام این دوره در صورتی که تلاش کافی در یادگیری را بکار گرفته باشید، آماده انجام اولین پروژه کاری خودتان خواهید بود.
این دوره چه زمانی آغاز میشود؟
شما هر زمان که تمایل داشته باشید میتوانید در این دوره ثبت نام و در کلاسهای آنلاین شرکت کنید. این دوره از تیر ماه سال ۱۴۰۰ به صورت مداوم برگزار میشود و هر زمان که تعداد نفرات ثبت نام کننده به ۴ نفر برسد، با تشکیل یک کلاس جدید و اطلاع رسانی مناسب از طریق ایمیل و پروفایل کاربری زمان برگزاری جلسات درسی اطلاع رسانی میشود.
کلاسهای آنلاین چند نفره برگزار میشود؟
برای احترام به دانشجویان و حفظ کیفیت تدریس حداکثر نفرات هر کلاس ۵ نفر در نظر گرفته شده است.
این دوره چه مدت طول خواهد کشید؟
حداکثر تعداد جلسات قابل برگزاری در هر هفته، دو جلسه میباشد. بنابراین این دوره حدود دو ماه طول خواهد کشید.
آیا ویدئوهای دوره در اختیار ما قرار داده میشودِ، یا برای آنها باید هزینه جداگانه پرداخت کنم؟
بله، ویدئوها در انتهای دوره در اختیار شما قرار میگیرد. دسترسی به ویدئوها در حساب کاربری شما دائمی خواهد بود و نیازی به پرداخت هزینه دیگری ندارید.
آیا در انتهای دوره به من گواهینامه داده میشود؟
صادقانه بگویم اگر برای دریافت گواهینامه قصد شرکت در این دوره را دارید در تصمیم خود بازنگری کنید. در دنیای امروز تقریباً مدارک ارزش خودشان را از دست دادهاند و چیزی که مهم است، مهارت، تجربه و رزومه کاری طراحان است. اما به هر حال در انتهای دوره در صورت موفقیت در آزمون پایان دوره به شما گواهینامه اعطا خواهد شد.
آیا برای شرکت در این دوره نیاز به بورد آموزشی دارم؟
در اختیار داشتن سخت افزار یک مزیت محسوب میشود و به ارتقا کیفیت آموزش کمک میکند. اما در صورتی که بورد آموزشی در اختیار ندارید، این امکان برای شما وجود دارد که از طریق ویدئوهای آنلاین اجرای برنامه را روی بورد مدرس دروه تماشا کنید. تمرکز این دوره روی مباحث نرم افزاری و تکنیکهای پیاده سازی است، از این رو سخت افزار اختصاصی برای این دوره در نظر گرفته نشده است.
آیا میتوانم فقط در برخی از کلاسها و جلسات شرکت کنم؟
در حال حاضر این امکان وجود ندارد. با توجه به این ممکن سطح شرکت کنندگان در دوره با یکدیگر متفاوت باشد، توصیه میشود حتماً به صورت کامل در دوره شرکت کنید تا بازدهی شما در کلاس حداکثر شود.