fpga چیست؟ {ساختار، کاربرد + ابزارهای برنامه نویسی اف پی جی ای}

fpga چیست

fpga چیست؟ اف پی جی ای تراشه ای متشکل از تعدادی بلوک منطقی است. این تراشه ها ساختاری خام دارند و طراح آن می تواند معماری و ارتباط بین گیت های منطقی را خود تعریف کند. قابل برنامه ریزی هستند؛ قابلیت انجام همزمان چند عملیات را دارند و می تواند به طور موازی برنامه ها را اجرا کنند. تراشه FPGA برخلاف میکروکنترلرها محدودیت هایی مانند عدم انعطاف پذیری، قابلیت پردازش متوالی و استفاده مجدد را ندارد. این تراشه قابلیت برنامه ریزی مجدد دارد؛ در نتیجه طراح برای ایجاد تغییرات محدودیتی ندارد. این همان ویژگی است که در چاپ pcb ارزان یا بردهای از پیش آماده مانند CPU وجود ندارد.

اف پی جی ای چیست؟

مانند یک مدار یکپارچه طراحی شده (IC) که در آن لیست کامل قطعات الکترونیکی در تراشه ای ریز قرار گرفته و به هم متصل می شوند، FPGA نیز یک IC محسوب می شود .

FPGA (Field-Programmable Gate Array) یا مدار یکپارچه دیجیتال برنامه پذیر، یک نوع تراشه الکترونیکی است که می توان با استفاده از نرم افزار عملکرد آن را برای انجام وظایف مختلف برنامه ریزی کرد. تراشه ها اف پی جی ای از تعداد زیادی بلوک (سلول) منطقی قابل برنامه ریزی تشکیل شده اند. این سلول ها از طریق خطوط ارتباطی به یکدیگر متصل می شوند. این ویژگی، امکان طراحی مدارهای دیجیتال پیچیده را با استفاده ار برنامه نویسی فراهم می کند.

در یک تعریف ساده می توان گفت FPGA یک برد خالی بدون قابلیتی ویژه است که پس از پیکربندی آن متناسب با نیازهای کاربر، کارایی پیدا می کند. از ویژگی های شاخص تراشه های اف پی جی ای می توان به انعطاف پذیری (امکان تغییر در روابط منطقی بین داده های ورودی و خروجی) و قابلیت برنامه ریزی مجدد (متناسب با نیاز کاربر) اشاره کرد.

ساختار و اجزای سازنده FPGA

اجزای تشکیل دهنده یک تراشه fpga چیست؟ ساختار این تراشه از اجزای زیر تشکیل شده است:

  • CLB
  • Input/Output Block
  • Block RAM
  • Digital Signal Processing
  • Routing Matrix
  • Clock Block
  • بلوک های مدیریت توان

CLB در اف پی جی ای

بلوک های منطقی قابل پیکربندی یا CLB از اجزاء اصلی یک تراشه FPGA است. این بخش شامل دو جزء است که هر یک از آنها از چهار LUT و هشت FLIP-FLO تشکیل شده است

Input/Output Block (I/O Block)

بلوک های ورودی و خروجی (Input/Output Block) مدارهای قابل برنامه ریزی در پشت هر پایه اف پی جی ای هستند. این بلوک ها ابزاری برای تعریف استانداردهایی مانند جریان پایه های خروجی، ولتاژ پایه های ورودی و یا هر یک از پایه های تراشه به شکل ورودی، خروجی یا دو طرفه می باشند.

Block RAM

بلوک های حافظه داخلی (Block RAM) بخشی از تراشه اف پی جی ای برای ذخیره داده ها و پارامترهای مورد نیاز در مدار هستند. این بلوک ها قابلیت پیکربندی دارند و امکان ساخت آنها در اندازه و ساختار مختلف در سطح تراشه وجود دارد. این حافظه ها به عنوان حافظه کش یا دو پورت در سطح تراشه استفاده می شوند.

Digital Signal Processing

واحدهای DPS از دیگر اجزای تراشه های مورد بحث هستند. اما نقش این جزء در ساختار fpga چیست؟ این واحدها شامل جمع کننده ها، ضرب کننده ها و شتاب دهنده های محاسباتی هستند که جهت پردازش سیگنال های دیجیتال کاربرد دارند. با استفاده از این واحدها اجرای عملیات ریاضی پیچیده با سرعتی بالا امکان پذیر می شود.

Routing Matrix

Routing Matrix یا سیم شبکه اتصالات با قابلیت برنامه ریزی، شبکه ارتباط داخلی یک تراشه اف پی جی ای را تشکیل می دهد. این شبکه متشکل از سوئیچ های قابل پیکربندی و ماتریس های سوئیچینگ قابل تنظیمی است که به اتصال بلوک های منطقی و دیگر اجزا کمک می کند.

Clock Block

Clock Block منابع ساعت داخلی و شبکه توزیع آن است که سیگنال های ساعت را تولید و در بخش های مختلف تراشه توزیع می کند. قابلیت پیکربندی این منابع امکان تنظیم فرکانس های ساعت مورد نیاز برای طراحان را فراهم می کند.

بلوک های مدیریت توان

این بخش از تراشه اف پی جی ای به بهینه سازی مصرف انرژی و کاهش گرمای تولید شده در مدار کمک می کند.

نحوه کارکرد اف پی جی ای

نحوه کارکرد اف پی جی ای

تراشه اف پی جی ای چگونه کار می کند؟ یک تراشه اف پی جی ای مجموعه یا ماتریسی منظم از بلوک ها یا گیت های منطقی قابل تنظیم است که از طریق اتصالات قابل برنامه ریزی به هم مرتبط می شوند. این اتصالات قابلیت برنامه ریزی مجدد دارند. fpga می تواند با این تغییرات سازگار شود و برنامه ای جدید را فعال کند.

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

کاربرد FPGA

اف پی جی ای ها به دلیل داشتن ویژگی هایی چون انعطاف پذیری بالا و قابلیت برنامه ریزی مجدد برای اجرای مدارهای دیجیتال با بیشترین سرعت و کارایی استفاده می شوند. بعلاوه، این تراشه ها به عنوان شتاب دهنده های محاسباتی قدرتمند کاربرد دارند. این ویژگی ها کاربرد تراشه های fpga را در دیتا سنترها و مراکز پردازش ابری صنایع مختلف گسترش داده است:

کاربرد fpga در صنایع
صنعت کاربرد
خودرو سازی کنترل سیستم های پیچیده خودرو، سیستم های ABS و ADAS، افزایش ایمنی خودرو، مدیریت و بهینه سازی مصرف انرژی
هوا و فضا سیستم های رادار، ارتباطی و ناوبری، افزایش امنیت سیستم ها، توسعه سیستم های پهپادی و جنگی الکترونیک
مخابرات بهینه سازی شبکه ها و افزایش کیفیت ارتباطات، افزایش سرعت و پایداری شبکه ها، بهبود عملکرد سیستم ها به دلیل سرعت بالای اجرای الگوریتم های پیچیده پردازش سیگنال، پردازنده های اصلی در تجهیزات شبکه ای نسل جدید
پزشکی توسعه تجهیزات پزشکی مانند دستگاه های تصویر برداری و مانیتورینگ بیمار

تفاوت fpga با میکروکنترلر ها

تفاوت میکروکنترلر و fpga چیست؟ در پاسخ به سه تفاوت مهم اشاره می کنیم:

  • اف پی جی ای بر خلاف میکروکنترلر فاقد ساختار سخت افزاری ثابت است.
  • تراشه های fpga قابلیت برنامه ریزی مجدد دارند؛ یعنی می توان عملکرد آنها را با توجه به نیاز کاربر تغییر داد. اما اجزای سازنده میکروکنترلر ها از پیش تعریف شده و آماده هستند.
  • پردازش در یک میکروکنترلر نیازمند زمان است و همین فاکتور سرعت انجام فرایند را کند می کند. اما در fpga به صورت بلادرنگ انجام می شود.

مزایا و معایب اف پی جی ای

مزایا و معایب اف پی جی ای
 

 

 

 

مزایا

انعطاف پذیری (تغییر عملکرد آن با توجه به نیاز طراح قابل تغییر است  

 

 

 

معایب

طراحی پیچیده و زمان بر (درک زبان های برنامه نویسی fpga دشوار و طراحی این بردها برای یک عملکرد ساده مشکل است.
پردازش موازی (با توجه به تعداد زیاد پایه، می توان تعداد زیادی داده به ان وارد کرد و عملیات مدنظر را مستقل انجام داد.) تک منظوره بودن (برای تغییر عملکرد تراشه باید طراحی گیت های آن اصلاح شود.)
سرعت بالا (انجام عملیات مدنظر در عرض چند نانو ثانیه انجام می شود)  

قیمت بالا (نسبت به انواع میکروکنترلر ها قیمت بالاتری دارند.)

هزینه توسعه برد (ایجاد تغییرات در بردهای fpga نیاز به طراحی برد جدید ندارد.)

ابزارهای های برنامه نویسی fpga

مهم ترین ابزارهای برنامه نویسی یک تراشه fpga عبارتند از:

ابزارهای برنامه نویسی تراشه fpga
ابزار برنامه نویسی ویژگی ها و کاربرد
VHDL

 

ابزاری قدرتمند و انعطاف پذیر جهت توصیف رفتار مدار با دقت بالا، توانایی مدیریت پروژه های بزرگ
Xilinx Vivado

 

پرکاربردترین ابزار برنامه نویسی FPGA، پشتیبانی از VHDL

و Verilog، پیاده سازی دیجیتال با بیشترین سرعت و دقت

Vivado HLS

 

تبدیل کدهای سطح بالا به توصیف های سخت افزاری قابل پیکربندی، تسهیل و تسریع طراحی
ModelSim

 

پشتیبانی از VHDL و Verilog، استفاده جهت شبیه سازی و بررسی رفتار مدار در شرایط مختلف، بهبود کیفیت و دقت طراحی FPGA
Intel Quartus Prime

 

پشتیبانی از VHDL و Verilog، ارائه محیطی جامع، قابل استفاده برای مدیریت موثر پروژه ها
Verilog

 

ساده تر و خوانا تر از VHDL، قابل استفاده در پروژه های FPGA و ASIC، طراحی های سریع و پروتایپینگ
SystemVerilog ترکیبی از ویژگی های Verilog و زبان های سطح بالا (C++)، قابل استفاده در پروژه های ASIC و FPGA
Matlab توسعه برنامه هایی یکپارچه با استفاده از قابلیت ردیابی (رمزگذار HDL)

مراحل برنامه نویسی fpga

مراحل مهم fpga چیست؟ برنامه نویسی یک تراشه اف پی جی ای شامل طراحی بخش سخت افزاری و نرم افزاری است. این طراحی شامل مراحل مختلف زیر می شود:

  • سنتز: گرفتن کد HDL و ترجمه به نت لیست
  • شبیه سازی اول: بررسی صحت کارکرد طراحی مشخص شده در نت لیست
  • تبدیل نت لیست به قالب باینری: طراحی و مسیریابی مولفه ها و اتصالات CLB برای قرار گرفتن بر روی FPGA
  • شبیه سازی دوم: بررسی کیفیت طراحی
  • ایجاد فایل بیت: تولید یک فایل بیت برای بارگذاری روی FPGA
  • اشکال زدایی: تایید و رفع اشکال تراشه با ابزارهای مختلف

نمونه های کاربردی از مدارهای FPGA

برد اف پی جی ای

چهار نمونه از بردهای اف پی جی ای عبارتند از:

  • Perf-V: شامل 1800 کیلو بایت حافظه و 33 هزار واحد منطقی
  • Alveo U280: شامل حداقل 1 میلیون واحد منطقی و 32 گیگابایت حافظه رم، ایده آل برای کارهای پردازشی سنگین، مصرف برق و قیمت بالا
  • Tiny FPGA A1: ارزان ترین برد اف پی جی ای، دارای 256 واحد منطقی و 2 کیلو بایت حافظه، مناسب برای عملیات پردازشی سبک
  • Spartan Edge Accelerator: دارای امکاناتی مانند قابلیت اتصال wifi و بلوتوث، شتاب سنج شش محوره، درگاه مینی HDMI و درگاه اتصال به دوربین

شرکت های سازنده اف پی جی ای

مهم ترین شرکت سازنده بردهای اف پی جی ای Xilinx است. از دیگر شرکت های فعال در این زمینه می توان به altera و microchip اشاره کرد.

در پایان، تراشه fpga چیست؟

fpga چیست؟ FPGA یک تراشه الکترونیکی شامل مجموعه ای از بلوک های منطقی قابل تنظیم است که توسط اتصالات قابل برنامه ریزی به هم مرتبط شده اند. این تراشه از اجزای مختلفی (RAM، DSP، CLB، IOB و ..) تشکیل شده است. از ویژگی های مثبت این قطعه می توان به انعطاف پذیری، قابلیت برنامه ریزی مجدد، اجرای همزمان چند عملیات و سرعت بالای اجرا اشاره کرد. از این رو برای اجرای مدارهای دیجیتال با بیشترین سرعت و دقت، دیتا سنترها و مراکز پردازش ابری صنایع مختلف کاربرد گسترده ای دارند. جهت طراحی این تراشه ها از زبان ها و ابزارهای مختلف برنامه نویسی مانند VHDL، Verilog، Xilinx Vivado و … استفاده می شود. درک دشوار این زبان ها، طراحی بردهای اف پی جی ای را پیچیده و زمان بر می سازد. ضمن اینکه این تراشه ها قیمت بالایی دارند.

سوالات متداول

میکروکنترلر بهتر است یا fpga؟

در برنامه هایی که به سرعت و قدرت پردازش بالا نیاز دارند (مانند داده های ویدئویی) پلتفرم fpga انتخاب بهتری است؛ اما برای کنترل مدارهای خاص مانند استفاده از کلید برای خاموش یا روشن کردن یک دستگاه میکروکنترلر ها مناسب تر هستند.

در عصر هوش مصنوعی از FPGA چه استفاده ای می شود؟

FPGA به عنوان شتاب دهنده های محاسباتی قدرتمند کاربرد دارند. با استفاده از آنها می توان در دیتا سنترها و مراکز پردازش ابری، افزایش سرعت پردازش و کاهش مصرف انرژی را بهبود بخشید.