معرفی
در این سری از آموزشها میخواهیم شما را(البته مخاطبان مبحث FPGA) با میکروبلیز و همینطور نحوه اصولی برنامهنویسی زبان C آشنا کنیم. دلیل آمادهسازی این مقاله و مقالات بعدی در این زمینه این است که تقریبا میتوان گفت هیچ منبع متنباز فارسی در این زمینه وجود ندارد و اگر هم در سایتهای خارجی سرچ کنید مطالب بسیار اندکی در این زمینه پیدا خواهید کرد. حال هدفی که در این آموزش داریم، توضیح کامل و جامع میکروبلیز به همراه زبان C است. توصیهای که داریم لطفا مقالات را از ابتدا تا انتها مطالعه کنید(درصدی فکرش رو نکنید که پراکنده مطالعه کنید چون بخش به بخش این سری از آموزشها از اهمیت بسیارزیادی برخوردار است و مقاله طوری نوشتهشده که برای شما یک ترتیب ذهنی ایجاد میکند البته به شرطی که گفتیم.) همانطورکه از اسم مقاله مشخصشده قصد داریم ابتدا به توضیح کلی میکروبلیز با یک مثال بپردازیم و بعد از این توضیح به آموزش زبان قدرتمند C و در نهایت توضیح میکروبلیز به همراه سوالات متفاوتی که امکان دارد برای شما تا کنون ایجادشدهباشد بپردازیم.
طرح یک مثال کاربردی جهت درک بهتر موضوع میکروبلیز در FPGA
فرضکنید پروژهای تحتعنوان “خواندن عکسهای متعدد از SD CARD را با FPGA” به شما پیشنهاد کردهاند. و میخواهند شما را بهعنوان یک مهندس محک بزنند، ماجرا اینگونهاست که شما باید برای کارفرما مدت زمان انجام پروژه را بههمراه راهحل ارائهکنید. در اینجا پاسخ افراد را بهصورتکلی میتوان به ۳دسته تقسیمکرد:
- دسته اول: پاسخی که خواهند داد این است که، این پروژه شدنی نیست و یا اگر هم شدنی است بسیار وقت زیادی را خواهد گرفت و نمیتوانند زمان مشخصی به همراه راهحل برای این کار تعیینکنند.
- دسته دوم: پاسخی که خواهند داد این است که، پروژه کاملا شدنی است اما راهحل آنها استفادهاز یک میکروکنترلر جانبی واسط(AVR، ARM و …) کنار FPGA است و مدت زمان تعیینشده را هم حدودا ۲هفته تا ۱ماه تعیین میکنند. که در اینجا کارفرما میگوید این کار باید بدون دستگاهی واسط صورت گیرد چون ازلحاظ هزینهای برای تولید انبوه مقرونبهصرفه نخواهد بود. و در این لحظه دسته دوم هم پاسخ دسته اول را به کارفرما میدهند.
- دسته سوم: پاسخی که خواهند داد این است که، پروژه کاملا با خود FPGA شدنی است و مدت زمان تعیینشده را هم حدودا ۲هفته الی ۳هفته (البته این مقدار بستگی به برنامهنویسی فرد دارد) تعیین میکنند و راهحلی را که ارائه میدهند استفادهاز میکروبلیز است که دقیقا نیاز کارفرما را هم برآورده میکند.
اگر به مثال دقتکردهباشید باید به یک نتیجه کلی برسید. “برای انجام کارهای متوسط که سرعت بالایی نیاز ندارند، نیازی نیست که حتما و حتما خودتان را ملزم به نوشتن و پیاده سازی آن روی FPGA بدون استفاده از میکروبلیز کنید.” حال سوالی که پیشخواهد آمد این است که، کارهای متوسط شامل چه چیزهایی میشوند؟ کار های متوسط یعنی پیادهسازی کارهایی که بهراحتی بتوانیم با یک میکروکنترلر انجامدهیم. دقیقا مثالبالا نمونهای از انجام کارهای متوسط است. پس با این توضیحات کارهای سطح بالا شامل چه چیزهایی میشوند؟ کارهای سطح بالا شامل کارهای پردازشی از جمله پیادهسازی الگوریتمهای بسیارپیچیده بههمراه عملکرد کاملا موازی است و یا کارهایی از این قبیل. پس با این توضیحات فکر میکنیم متوجه این موضوع شدهباشید که برای کارکردن با میکروبلیز نیاز است که زبان C را هم یاد بگیریم. بله دقیقا همینطوری است که حدسزدید. خب سوال دیگری که شاید ذهن شما را مشغولبهخود کند این است که، اگر یک پروژه تلفیقی سطح متوسط و سطح بالا به پیشنهاد داده شد راهحل چیست؟ آیا اینکار شدنی است یا خیر؟ خوشبختانه این کار کاملاشدنی است و راهحل این سوال با انجام یک پروژه عملی، در قسمتهای بعد توضیحداده خواهد شد. به این نکته هم توجهداشتهباشید، همانطوریکه در ابتدای مقاله گفتهشد ابتدا به توضیح مفصل زبان C خواهیمپرداخت و سپس وارد مبحث میکروبلیز خواهیمشد. شاید برای برخیاز دوستان این سوال پیش آید که، آیا آموزش C صرفا برای میکروبلیز است؟ خیر اینطور نیست بلکه آموزشی که در قسمتهای بعد به آن خواهیم پرداختکلی است و هدف یادگیری و مرور زبان C است که ممکناست برخیاز دستوراتی را که در قسمتهای بعد ارائه میکنیم در میکروبلیز کاربرد نداشتهباشد اما مطمئنا اگر کار با میکروکنترلرها را بخواهید یاد بگیرید حتما کاربرد خواهد داشت. بهعبارتی میتوان گفت که در این سری از مقالات به توضیح جامع و کامل دو مبحث بسیارمهم در الکترونیک یعنی آموزش زبان C و آموزش میکروبلیز خواهیمپرداخت. اگر بخواهید اینسری از آموزشها را دنبالکنید به احتمالزیاد به سوالاتی که در ادامه قرار خواهیم داد، برخورد خواهیدکرد. از چهنوع FPGA در این سری از آموزشها استفاده میکنید؟ در این سری از آموزشها از”XILINX_SPARTAN 6_XC6SLX 9” استفادهخواهدشد. آیا از برد آموزشی خاصی در این سری از آموزشها استفاده میکنید؟ بله از برد آموزشی ALINX در این سری از آموزشها استفادهخواهدشد که تصویر آنرا در ادامه میتوانید مشاهدهکنید.(البته نگران نبودن مستندات برد نباشید چون زمانیکه خواستیم اولین پروژه را انجامدهیم فایل UCF آنرا برای شما قرارخواهیمداد).
آیا نیازبه یادگیری زبان HDL است؟ اگر صرفا یادگیری و پیادهسازی میکروبلیز باشد. خیر نیاز چندانی ندارید و بهراحتی میتوانید کار خود را انجامدهید اما مسله اینجا است کسیکه بهصورتکلی سمت یادگیری FPGA میآید تسلط بر این زبانها یعنی یکیاز زبانهای VHDL یا Verilog دارد. اگر هم برای کار خودمان بخواهیم مثالی بزنیم. انجام پروژههای تلفیقی است که بدون تسلط به HDL امکانپذیر نخواهد بود. توصیهای که ما به شما داریم حتما و حتما به یکیاز زبانهای VHDL یا Verilog تسلط داشتهباشید.(برای یادگیری این مباحث هم به سری آموزشهای FPGA سایت مراجعهکنید.) برای انجام پروژههای تلفیقی از کدام زبان توصیف سختافزار استفاده میکنید؟ زبانی که ما در این سری از آموزشها استفاده میکنیم، زبان VHDL است.
در قسمت بعد به معرفی و توضیح زبان C خواهیم پرداخت. امیدوارم که این سری از آموزشها هم موردتوجه شما مخاطبین عزیز قرارگیرد.
منبع:سیسوگ