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