آشنایی با FPGA

FPGA ها (Field Programmable logic Gate Array ) نسل جدید مدارهای مجتمع دیجیتال قابل برنامه ریزی میباشند . سرعت اجرای توابع منطقی در FPGA ها بسیار بالا و در حد نانو ثانیه میباشد . اگر بخواهیم FPGA  را به طور ساده تشریح کنیم ، عبارت است از یک تراشه که از تعداد بالایی بلوک منطقی  LB (Logic Block) و خطوط ارتباطی و پایه های ورودی / خروجی (IOB) تشکیل شده است که به صورت آرایه ای در کنار یکدیگر قرار گرفته اند . خطوط ارتباطی که وظیفه آنها ارتباط بین بلوک های منطقی است از سوئیچ های قابل برنامه ریزی تشکیل شده اند . این سوئیچ ها بسته به نوعی که دارند ، برخی تنها یکبار قابل برنامه ریزی بوده و برخی به تعداد دفعات زیادی برنامه ریزی میگردند . بلوک های منطقی نیز دارای انواع مختلفی میباشند  که عموما توسط المانی پایه ، تمامی توابع منطقی را ایجاد مینمایند . به عنوان مثال بلوک های منطقی در خانواده ACT-1 از شرکت Actel ، با پایه مالتی پلکسری عمل مینمایند . به این معنا که توسط مالتی پلکسر ، توانایی ایجاد توابع منطقی مختلف را دارا میباشند . البته تعداد ورودی های هر بلوک منطقی متفاوت بوده و به نوع FPGA مربوط میگردد . به عنوان مثال بلوک های منطقی در خانواده ACT-1  از نوع 8 ورودی میباشد . در برخی موارد به بلوک های منطقی ، سلول های منطقی نیز گفته می شود (LC) . بلوک دیاگرام یک FPGA به طور ساده در شکل زیر نشان داده شده است :

fpga_1

البته بسیاری از سلول های منطقی بر اساس جداول LUT ساخته میشوند . LUT از تعدادی سلولهای حافظه SRAM تشکیل میگردد که در هنگام برنامه ریزی FPGA ، مقدار دهی میگردند . به طور خلاصه LUT عبارت است از تولید توابع آماده برای استفاده در سلول های منطقی . پیاده سازی توابع مختلف نیز به وسیله در کنار هم قرار گرفتن بلوک های منطقی و همچنین تنظیم ارتباط بین هر بلوک و به عهده گرفتن پردازش اطلاعات توسط هر بخش انجام میپذیرد .

fpga1_1


مبحث مربوط به
FPGA ها بسیار گسترده است . دلیل این امر گوناگونی معماری ساخت برای FPGA های هر شرکت سازنده میباشد . به عنوان نمونه در ساختار منطقی بلوکها ، ترکیب های متفاوتی وجود دارد که هر شرکت از ترکیب خاص خود استفاده مینماید . بنابراین تنها به صورت کلی به بررسی ساختار FPGA پرداخته شد . علاوه بر اجزای گفته شده ، ممکن است برخی قسمت های داخلی نیز برای FPGA تعبیه شده باشد ، نظیر ALU و ... که بستگی به طراحی شرکت سازنده دارد .


کاربرد
FPGA :
FPGA ها در پیاده سازی توابع نسبتا پیچیده دیجیتال به کار می روند که نیاز به سرعت پردازش بالایی نیز دارند . علاوه بر این کاهش سخت افزار مورد نیاز و همچنین برنامه نویسی ساده و استاندارد نیز از دیگر مزیت های استفاده از FPGA ها میباشد .

برنامه نویسی و طراحی با
FPGA :
برنامه نویسی و طراحی مدارات با
FPGA ها به طور کلی به دو صورت انجام میپذیرد :
الف- با استفاده از زبان های توصیف سخت افزاری مانند
VHDL ، AHDL ، HDL و ...
ب- با استفاده از طراحی مدار

این عمل توسط نرم افزارها و ابزارهای برنامه ریزی مختص به هر خانواده که توسط شرکت های سازنده در اختیار طراحان قرار می گیرد ، انجام میپذیرد . به عنوان نمونه
MAX + PLUS II  و QUARTUS II ابزار های برنامه ریزی FPGA های ساخت شرکت ALTERA میباشند .