در این سری از آموزشها میخواهیم شما را (البته مخاطبان مبحث FPGA) با میکروبلیز و همینطور نحوه اصولی برنامهنویسی زبان C آشنا کنیم. دلیل آماده سازی این مقاله و مقالات بعدی در این زمینه این است که تقریبا میتوان گفت هیچ منبع متن باز فارسی در این زمینه وجود ندارد و اگر هم در سایتهای خارجی سرچ کنید مطالب بسیار اندکی در این زمینه پیدا خواهید کرد. حال هدفی که در این آموزش داریم، توضیح کامل و جامع میکروبلیز به همراه زبان C است. توصیه ای که داریم لطفا مقالات را از ابتدا تا انتها مطالعه کنید(درصدی فکرش رو نکنید که پراکنده مطالعه کنید چون بخش به بخش این سری از آموزشها از اهمیت بسیار زیادی برخوردار است و مقاله طوری نوشته شده که برای شما یک ترتیب ذهنی ایجاد میکند البته به شرطی که گفتیم.) همانطور که از اسم مقاله مشخص شده قصد داریم ابتدا به توضیح کلی میکروبلیز با یک مثال بپردازیم و بعد از این توضیح به آموزش زبان قدرتمند 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 خواهیم پرداخت. امیدوارم که این سری از آموزشها هم مورد توجه شما مخاطبین سیسوگی قرار گیرد.
در قسمت هجدهم و قسمت نوزدهم از مجموعه آموزشی FPGA با شیفت رجیستر آشنا شدیم و شیفت رجیستر را با روشهای متفاوتی پیادهسازی کردیم. در این قسمت قصد داریم که ابتدا با عملگرها آشنا شویم و سپس به عملگرها و توابع در زبان VHDL بپردازیم. ...
بسماللهالرحمنالرحیم اگر تاکنون این سری از آموزشها را دنبال کرده باشید به مباحثی از زبان برنامهنویسی C از جمله متغیرها، کلاسهای حافظه، عملگرها، رشتهها، آرایهها و کاراکترها پرداختیم که توصیه میکنم حتما مقالاتی که نوشته ...
بسماللهالرحمنالرحیم اگر سری آموزشهای میکروبلیز را تا کنون دنبال کرده باشید به مطالبی چون تعریف اصولی متغیر و عملگرها در زبان برنامهنویسی C پرداختیم که برای دیدن این سری از آموزشها میتوانید اینجا کلیک کنید. در ای...
در قسمت چهاردهم از مجموعه آموزشی FPGA در مورد اینکه عملکرد ریست چیست و دقیقا چه کاری انجام میدهد مفصلا صحبت کردیم. سپس به صورت خیلی جزئیتر در مورد عملکرد ریست در FPGA صحبت کردیم و عملکرد آن را توضیح دادیم و گفتیم که در FPGA ریست...
بسماللهالرحمنالرحیم اگر قسمت سوم آموزش میکروبلیز " آموزش میکروبلیز قسمت سوم: آموزش زبان برنامهنویسی C " را مطالعه کرده باشید به بحث جذاب متغیرها با شناسایی کلاسهای حافظه و همینطور به نحوه اصولی تعریف متغیر به همراه کلاس...
در قسمت سیزدهم از مجموعه آموزشی FPGA بحث مربوط به توصیف عناصر حافظه را ادامه داده بودیم و مفصلا در مورد اینکه درون FPGA، حافظهها چگونه به وجود میآیند صحبت کردیم. همچنین اگر خاطرتان باشد گفتیم با توجه به اینکه در محیط ترکیبی یا م...
بسماللهالرحمنالرحیم اگر قسمت دوم آموزش میکروبلیز قسمت دوم: آموزش زبان برنامهنویسی C را مطالعه کرده باشید به مسائلی همچون اصول اولیه و قواعد کلی برنامهنویسی زبان C اشاره کردیم که توصیه میکنیم قبل از خواندن این قسمت حتما قسمت...
در قسمت دوازدهم از مجموعه آموزشی FPGA مفصلا در رابطه با عناصر حافظه در سیستمهای دیجیتال صحبت کردیم و به تشریح جزئیات آنها پرداختیم، در ادامه بیان کرده بودیم که این عناصر به دو دسته کلی با نامهای لچ و فلیپفلاپ تقسیم میشوند. نه...
بسمالله الرحمنالرحیم اگر قسمت قبل آموزش میکروبلیز: مقدمه را خوانده باشید در واقع یک مقدمه ای از میکروبلیز و اهمیت آن در FPGA اشاره شده بود که توصیه میکنم اگر قسمت قبل را مطالعه نکردهاید حتما اینکار را انجام دهید چون یک دید ک...
در قسمت نهم از مجموعه آموزشی FPGA ساختار شرطی if را تشریح کردیم و با استفاده از توصیف مالتیپلکسر، با بعضی از قابلیتهای این ساختار آشنا شدیم. در این قسمت قصد داریم با ساختار شرطی if بیشتر آشنا شویم و قابلیتهای دیگر این ساختار ر...
ساختار شرطی if; در قسمت هشتم از مجموعه آموزشی FPGA با مدارات ترتیبی در محیط Sequential آشنا شدیم. عناصر پایه سازنده مدارات ترتیبی را شناختیم و به طور مفصل بررسی کردیم که در محیط ترتیبی، ارجاعات چگونه انجام میگیرند. در این قسمت ...
مدارات ترتیبی; در قسمت هفتم از مجموعه آموزشی FPGA ساختار ارجاع انتخابی را تشریح، و با استفاده از آن یک مالتیپلکسر 4 به 1 را توصیف کردیم. در همان قسمت بحث مربوط به مدارات ترکیبی را به پایان رساندیم و همچنین هرآنچه در مورد کلیات و...
ببینید شما میتونید با استفاده از منابع دیجیتال خامی که درون FPGA وجود داره یک CPU را توصیف کنید. اما خب چون این کار زمانبر هستش و یک سری مسائل دیگه، خود شرکت زایلینکس اومده یه CPU و یک سری پریفرال جانبی را در اختیار ما گذاشته تا در صورت لزوم بتونیم استفاده کنیم. اسم این CPU و پریفرالهای جانبی هست میکروبلیز که البته قبل از آن چیزی به اسم پیکوبلیز داشتیم.
پس میکروبلیز هم یه پردازنده هست مثل ARM، AVR و یا هر چیز دیگری و کد C که ما برای آن مینویسیم همان کد C است و تفاوت دیگری ندارد.
فقط این پردازنده در بدو امر در FPGA وجود ندارد و باید با استفاده از روند خاصی این پردازنده را اضافه کنید تا بتونید با آن کار کنید.
سلام و ممنون که این موضوع انتخاب کردید. همین طور که در متن هم اشاره کردید منابع بسیار محدودی برای آموزش در این حوزه وجود دارد. من مشتاقانه منتظر آموزشهای میکروبلیز شما هستم. موفق و پایدار باشید.
سلام دوست عزیزم خواهش میکنم امیدوارم که تمامی قسمت هایی که منتشر میشود مورد رضایت شما و مخاطبین این مبحث قرار بگیرد فقط توصیه ای که دارم حتما و حتما به یکی از زبان های Verilog یا VHDL تسلط داشته باشید ترجیحا اگر با اموزشها میخواهید کار کنید زبان توصیف سختافزار VHDL را یاد بگیرید(به اموزشهایی FPGA سایت مراجعه کنید که توسط PHONIX نوشته شده است).
سلام وقت بخیر خدا قوت این cهمانcخودمونه یا با رویکردfpgaهست؟یعنی بدرد arm و avrهم میخوره،دوم که من نمیدونم میکرو بلیز یعنی چه،ممنون
سلام نازنینم.
اره این C که میگن همون C است.
ببینید شما میتونید با استفاده از منابع دیجیتال خامی که درون FPGA وجود داره یک CPU را توصیف کنید. اما خب چون این کار زمانبر هستش و یک سری مسائل دیگه، خود شرکت زایلینکس اومده یه CPU و یک سری پریفرال جانبی را در اختیار ما گذاشته تا در صورت لزوم بتونیم استفاده کنیم. اسم این CPU و پریفرالهای جانبی هست میکروبلیز که البته قبل از آن چیزی به اسم پیکوبلیز داشتیم.
پس میکروبلیز هم یه پردازنده هست مثل ARM، AVR و یا هر چیز دیگری و کد C که ما برای آن مینویسیم همان کد C است و تفاوت دیگری ندارد.
فقط این پردازنده در بدو امر در FPGA وجود ندارد و باید با استفاده از روند خاصی این پردازنده را اضافه کنید تا بتونید با آن کار کنید.
سلام ممنون از شما،سلامت باشین
درود بر شما. پیروز و پاینده باشید.
سلام و ممنون که این موضوع انتخاب کردید.
همین طور که در متن هم اشاره کردید منابع بسیار محدودی برای آموزش در این حوزه وجود دارد.
من مشتاقانه منتظر آموزشهای میکروبلیز شما هستم.
موفق و پایدار باشید.
سلام دوست عزیزم
خواهش میکنم
امیدوارم که تمامی قسمت هایی که منتشر میشود مورد رضایت شما و مخاطبین این مبحث قرار بگیرد
فقط توصیه ای که دارم حتما و حتما به یکی از زبان های Verilog یا VHDL تسلط داشته باشید
ترجیحا اگر با اموزشها میخواهید کار کنید زبان توصیف سختافزار VHDL را یاد بگیرید(به اموزشهایی FPGA سایت مراجعه کنید که توسط PHONIX نوشته شده است).
موفق باشید.