شاید با دیدن عنوان این مقاله فکر کنید که اشتباهی رخ داده است و اشتباها ما به جای عبارت FPGA عبارت FPAA را نوشتیم. اما هیچ اشتباهی رخ نداده است و در این مقاله مشخصا قرار است در مورد FPAA صحبت کنیم. حدس میزنیم که اسم FPAA به احتمال زیاد برای شما آشنا نباشد و برای اولین بار است که این اسم را میشنوید.
اما قبل از اینکه بخواهیم در رابطه با FPAA صحبت کنیم، بهتر است کمی از FPGA بگوییم تا با کلیت و کاربرد آن آشنا شوید و ارتباطی بین FPAA و FPGA پیدا کنیم تا بهتر بتوانید درک کنید که FPAA دقیقا برای چه اهدافی ساخته شده است.
ما در ادامه به صورت مختصر در رابطه با FPGA نکاتی را بیان خواهیم کرد، برای توضیحات کامل میتوانید به مجموعه مقالات آموزشی FPGA مراجعه کنید.
در دنیای دیجیتال ما میتوانیم با استفاده از آی سیها و المانهای پایهای که وجود دارند مدار موردنظرمان را پیادهسازی کنیم. مثلا با چندین گیت منطقی میتوانیم یک جمعکننده بسازیم یا اینکه برای این کار مشخصا از وجود یک آی سی خاص بهره ببریم. اما مشکلی که وجود داشت این بود که تقریبا برای کارهای متقاوت باید از آی سیهای متفاوتی استفاده میکردیم. این مشکل به نحوی که در ادامه توضیح میدهیم هموار شد.
پیشرفت در دنیای دیجیتال کمی بیشتر شد و میکروکنترلرها به وجود آمدند. با وجود میکروکنترلرها انعطاف کاربر بیشتر شد و ما با یک سختافزار میتوانستیم کارهای گوناگون زیادی را انجام بدهیم. اما هنوز یک مشکل وجود داشت، در واقع کاری که ما میکردیم تمام و کمال یک طراحی دیجیتال نبود، بلکه یک طراحی دیجیتالی از قبل توسط افراد متخصص انجام شده بود و ما با استفاده از طراحی این افراد متخصص کاربرد و عملکرد موردنظرمان را به مرحلهی عمل میرساندیم.
کم کم داشت یک سری نیازها در دنیای دیجیتال احساس میشد. این نیاز شامل دو بخش بود بخش اول اینکه بتوانیم همانند میکروکنترلرها با یک تراشه کارهای گوناگون زیادی را انجام بدهیم و بخش دوم اینکه شبیه میکروکنترلرها سختافزار ثابت نباشد و سیستم به قدری منعطف باشد که بتوانیم سختافزار را تغییر بدهیم.
پس تا اینجا به خوبی روند تاریخی که طی شد تا به این نقطه برسیم را متوجه شدید. البته لازم به ذکر است که دقیقا روند تاریخی طی شده به این صورتی که بیان کردیم نبوده و صرفا به دلیل اینکه موضوع بهتر برای شما تفهیم شود، روند تاریخی را به صورت گفته شده بیان کردیم.
FPGA (field programmable gate array) چیست
به صورت خلاصه FPGA شامل یک سری منابع و المانهای دیجیتال در درون یک تراشه میباشد که ما با استفاده از کدنویسی و یک زبان توصیف سختافزار میتوانیم این منابع و المانها را به طرق مختلفی کنار هم قرار بدهیم و یک طراحی دیجیتال انجام بدهیم. ما با کدنویسی یک سختافزار جدید خلق خواهیم کرد که این موضوع بسیار متفاوت خواهد بود با کدنویسی در میکروکنترلرها. در میکروکنترلرها با کدنویسی هیچ سختافزار جدیدی خلق نخواهد شد و فقط با توجه به کد نوشته شده بخشهای سختافزاری مختلف میکروکنترلر که از قبل وجود داشت مورد استفاده قرار میگیرد.
ما با استفاده از کدنویسی میتوانیم یک سری منابع دیجیتال را کنار هم قرار بدهیم و آنها را سیم کشی کنیم. این نوع کدنویسی آنچنان انعطافی دارد که گویی ما این منابع دیجیتال یا آی سیها را بر روی یک برد قرار دادیم و پایههای این آی سیها را سیمکشی یا به هم متصل میکنیم.
آیا شما نیاز دیگری احساس میکنید؟ اگر ذهنتان را محدود به بخش دیجیتال کنید به احتمال زیاد هیچ نیاز دیگری را احساس نخواهید کرد.
اما آیا تا به حال به این موضوع فکر کردهاید که آیا منابع و المانهای آنالوگ هم میتوانند قابل برنامهریزی باشند؟
چون ما همیشه برنامه و برنامهنویسی را با الکترونیک دیجیتال تجربه کردهایم و در کل هرچیزی که قابلیت برنامهریزی داشته باشد را با بخش دیجیتال احساس کردیم، و حتی حدس نمیزنیم که مثلا کامیوترهای تماما آنالوگ نیز وجود داشته باشند، اصلا به فکرمان خطور نمیکند که آنالوگ هم قابل برنامهریزی باشد.
اما آنالوگ نیز مانند دیجیتال قابل برنامهریزی است و ما میتوانیم المانهای آنالوگ را در کنار هم قرار بدهیم و آنها را سیمکشی یا به هم متصل کنیم.
در این مقاله قصد داریم شما را با ابزاری که بدین منظور طراحی شده است آشنا کنیم.
FPAA (field programmable analog array)
به عنوان یک تعریف کلی و نگاه سطحی FPAA را همان FPGA در نظر بگیرید که به جای اینکه المانهای دیجیتال را برنامهریزی کند، المانهای آنالوگ را برنامهریزی میکند.
ما در این مقاله قصد نداریم که به مزایا یا معایب برنامهریزی به صورت آنالوگ بپردازیم و نهایتا بگوییم که برنامهریزی به صورت دیجیتال بهتر است یا آنالوگ، بلکه قصد داریم به مزایای برنامهریزی به صورت آنالوگ در مقابل توسعه سیستمهای آنالوک بدون استفاده از ابزارهای برنامهریزی بپردازیم.
مزایای برنامهریزی آنالوگ
اگر تا به حال با میکروکنترلرها کار کردهاید و به توسعه یک سیستم پرداخته باشید، به خوبی میدانید که توسعه یک سیستم با میکروکنترلر به مراتب تا چه اندازه سادهتر از زمانی خواهد بود که بخواهید همین سیستم را با استفاده ابزارهای سطح پایین دیگری توسعه بدهید.
برای بحث آنالوگ هم قضیه به همین منوال است و قطعا توسعه سیستمهای آنالوگ با ابزارهای سطح بالا بسیار سادهتر از توسعه این سیستمها با ابزارهای سطح پایین است.
جدای از بحث سادگی، این موضوع میتواند مزایای دیگری نیز به همراه خود داشته باشد. مثلا شما قصد دارید در حین اجرا یک دفعه بخشی از سختافزار را تغییر بدهید خب مسلما اگر قابلیت برنامهریزی وجود داشته باشد این کار خیلی راحتتر انجام خواهد گرفت یا بدون اینکه متخصص آنالوگ باشید و فقط با دانستن عملکرد یا توابع ریاضی مداری که در نظر دارید به راحتی میتوانید آن را پیادهسازی کنید.
در این مقاله قصد نداشتیم که ساختار درونی FPAA را موشکافی کنیم و فقط به معرفی و یک سری توضیحات کلی بسنده کردیم، اما در قسمت دوم از این مجموعه آموزشی شما را با ساختار درونی و نحوهی عملکرد FPAA به طور دقیق آشنا خواهیم کرد.
در نهایت هم تشکر می کنیم از آقای مهندس حریری که ابزار و داکیومنت های FPAA را در اختیار ما قرار دادند و رهنمودهای ایشان باعث تالیف این مقاله ها گردید.
سلام من قبلا با این fpaaبصورت اسمی اشنا شده بودم و برام خیلی جالب بود ولی موفق نشدم چیپ هایی برای اون پیدا کنم و در سطح یوتیوب هم تا چندسال پیش فقط یک کلیپ در این رابطه بود.. آیا این مقاله ادامه داره و بصورت عملی هم کار خواهد شد ؟
سلام. بله این مقاله ادامهدار و یک مجموعه آموزشی در حد سه چهار قسمت خواهد بود. در ادامه برد شرکت anadigm را به طور کامل به شما معرفی خواهیم کرد تا اگر بردی به دستتان رسید بتوانید آن را راه اندازی کنید. و نهایتا یک مثال فیلتر یا PID را هم روی این برد پروگرام خواهیم کرد.
بی صبرانه منتظرم
آقا خداوکیلی این رسمش نیست!! FPGA تموم شد ؟؟ ما منتظر مطالب عملی بودیم …
امیر عزیز در قالب چند قسمت پروژههای عملی نیز آموزش داده خواهند شد از مباحث ابتدایی مانند روشن کردن LED و ساخت کانتر تایمر شروع و با پیادهسازی بعضی از پروتکلهای معروف و کاربردی این مجموعه آموزش خاتمه خواهد یافت.
ممنون از اینکه وقت میزارین … متشکرم (: