مقدمه
شاید با دیدن عنوان این مقاله فکر کنید که اشتباهی رخدادهاست و اشتباها ما بهجای عبارت 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 بهطور دقیق آشنا خواهیم کرد.
منبع: سیسوگ