و اما FPGA

آنچه در این پست یاد می گیرید:

1.       مفهموم کلی FPGA

2.       فرق FPGA با میکرو کنترلر

3.       شرکت‌های عمده سازنده FPGA

4.       نرم افزارهای مورد استفاده برای برنامه ریزی FPGA

FPGA یک آی سیه شبیه همه‌ی آی سی‌های دیگه. شما تو کامپیوتر، گوشی تلفن همراه، تلویزیون دیجیتال، ماشین حساب و غیره حتما یک آی سی پردازنده دارید که به عنوان مغز این دستگاه عمل می‌کنه. این آی سی‌ها رو شرکت تولیدکننده برنامه‌ریزی می‌کنه و به شما می‌فروشه. FPGA مزیتش اینه که یک آی سی بی‌جانه و شما برنامه‌ریزیش می‌کنید، یعنی خیلی هم بی جان نیست قابلیت برنامه‌ریزی مجدد داره واسه همین اسمش FPGA است Field Programmable Gate Arrays یعنی آرایه‌ای از از گیت‌های منطقی که قابلیت برنامه‌ریزی میدانی (در محیط عملیاتی یا کاربردی) رو دارن. مثلا شما می‌تونید با FPGA یک تلفن همراه، یک تلویزیون دیجتال، یک ماشین حساب یا هر چیز دیگه ای که پردازش دیجیتال انجام میده بسازید. شاید بعضی از شماها اسم میکروکنترلر یا میکروپروسسور را شنیده باشین (مثلا AVR)، اینها مثل FPGA نیستن که قابلیت برنامه ریزی مجدد داشته باشن یک سری ماژول‌های آماده هستن و شما برای استفاده از قابلیت اونا یک application می‌نویسید. مثلا مثل یک کامپیوتر هستن که شما با یک زبان برنامه نویسی مثل C یک اپلیکشین می‌نویسید تا کار مورد نظرتون را باهاش انجام بدید در واقع شما کامپیوتر نمی‌سازید بلکه از امکاناتش استفاده می‌کنید اما با FPGA شما واقعا یک کامپیوتر می‌سازید.

البته این به این معنی نیست که کار با میکروکنترلر‌ها آسون تر از کار با FPGA است بلکه برعکس، در خیلی از موارد کار با میکروکنترلر سخت‌تر هم هست چون FPGA رو صد در صد خودتون برنامه نویسی می‌کنید و اگر چیزی اشتباه شد می دونید چه مرگشه و معمولا عیب یابیش از میکرو آسون تره.

میکروکنترلر برای کار در سرعت‌ها و حجم پردازش بالا مناسب نیست مثلا شما اگر در کامپیوتر یک برنامه سنگین اجرا کنید احتمالا نمی تونید برنامه دیگه‌ای رو همزمان اجرا کنید، و همون برنامه هم نمی تونه با سرعتی بیشتر از سرعت CPU اجرا بشه، محدودیت دارید. اما در FPGA این محدودیت رو ندارید، دلیلش رو در آینده می فهمید. یک مزیتی که میکرو به FPGA داره انعطاف پذیری اونه یعنی مثلا شما یک برنامه به زبان C نوشتید خیلی راحت می‌تونید پارامترهای برنامه رو تغییر بدید ولی در FPGA این کار خیلی سخته. به همین خاطر شرکت‌های بزرگ اومدن داخل FPGA یک میکروکنترلر هم گذاشتن تا قسمت‌هایی که نیاز به انعطاف داره رو اونجا بنویسن و قسمت‌هایی که یک پردازش ثابت انجام میشه رو داخل FPGA بنویسن. اینطوری هم از قدرت پردازش بالای FPGA استفاده می‌کنن و هم از انعطاف پذیری میکروکنترلر.

دو تا شرکت عمده تولید‌کننده FPGA داریم Xilinx و Altera. FPGA‌های این دو شرکت مشترکات زیادی دارن ولی از نرم‌افزارهای متفاوتی برای برنامه‌ریزی FPGA استفاده می‌کنن. Xilinx در حال حاضر از نرم افزار Vivado استفاده می‌کنه (در نسخه‌های قبلی از ISE استفاده می‌کرد) و Altera از نرم افزار Quartus استفاده می‌کنه. من با FPGA‌های Xilinx کار می‌کنم. شرکت زایلینکس خانواده‌های متفاوتی از FPGA رو ارائه داده که چند تاشون که در ذهنم هست Spartan، Virtex، Artix، Kintex و Zynq هستن که هر کدوم بسته به کاربرد، ویژگیهای متفاوتی دارن.

اولین کاری که برای کار بر روی FPGA انجام بدید اینه که نرم افزار Vivado رو نصب کنید. من الان دارم از Vivado 2015.4 تو لپ تاپم استفاده می کنم و فکر می کنم همین برای شما هم مناسب باشه. حجم نرم افزارش چند گیگ هست و برای نصبش باید حداقل 20 گیگ خالی داشته باشید.