عضویت

FPGA چیست؟

FPGA چیست:
مقدمه:
تراشه های Field Programmable Gate Arrays یا همان FPGA برای توسعه سخت افزارهای دیجیتالی پیچیده و اجتناب از ساخت برد هایی با تراشه های گسسته به وجود آمده اند. با استفاده از تراشه های FPGA ، بردهایی که قبلا با تعداد زیادی از تراشه های دیجیتال ساخته می شدند، در یک تراشه FPGA با سرعت بالاتر و از همه مهمتر با امکان به روز رسانی Update کردن سخت افزار، پیاده سازی می شوند.
استفاده از FPGA این امکان را به ما می دهد تا طرح های سخت افزاری در ابعاد کوچکتر و با قیمت پایین تر ساخته شوند. عیب یابی طرح دیجیتالی که در داخل FPGA پیاده سازی شده به دلیل وجود نرم افزارهای شبیه سازی قدرتمند، بسیار ساده تر است. بسیاری از قطعاتی که در پروژه های دیجیتال مورد استفاده قرار می گیرند (مانند Dual port ram ، DSP Module ، Digital Synthesizer ، FIFO و انواع کدر ها و دیکدر ها ، Ethernet Core ، FFT Module و …) به صورت Soft Core در داخل FPGA به راحتی قابل پیاده سازی بوده و در داخل کتابخانه استاندارد نرم افزار ISE وجود دارند. استفاده ازSoft Core پردازنده هایی نظیر ARM در داخل FPGA ، این تراشه را به ابزاری قدرتمند برای پیاده سازی انواع طرح های پردازش سیگنال (که نیاز به پردازش سریال دارند) تبدیل کرده است. امروزه بسیاری از شرکت های بزرگ سازنده تراشه ASIC ، طرح های خود را بر روی FPGA تست وVerify می کنند زیرا امکان سنتز مدار تا سطح ترانزیستور در تراشه های FPGA وجود دارد.
با استفاده از زبان توصیف سخت افزار ( Verilog یا VHDL ) شما می توانید طرح و ایده سخت افزاری خود را بسته به نیاز و تبحر در سخت افزار، در یکی از سطوح توصیف رفتاری (توصیف سیستمی با ساختاری شبیه زبان C ) ، سطح Register Transfer Level یا همان RTL با استفاده از گیت ها و فیلیپ فلاپها و یا حتی در سطح ترانزیستور پیاده سازی نمایید و یا اینکه در محیط شماتیکی مدار مورد نظر خود را ترسیم و سنتز نمایید. هر تراشه FPGA دارای تعداد زیادی (بیش از ۱۰۰ ) پایه ورودی خروجی I/O عمومی می باشد که هر کدام از این I/O ها می توانند به دلخواه، بسته به طرح PCB ، برای ارتباط با دنیای خارج مورد استفاده قرار گیرند. I/O های FPGA از انواع استانداردهای ارتباطی مانند (LVCMOS ، LVTTL ، SSTL ، GTL ، HSTL ، PCI و …) پشتیبانی کرده و می توان این تراشه را بدون هیچ مدار واسطی به انواع SDRAM ها ، رم های DDR ، تراشه های DSP ، A/D ، D/A و سایر تراشه های دیجیتال متصل کرد. در عین حال می توان Soft Core های لازم برای کنترل رم های ساخت شرکتهای مختلف را توسط MIG – Memory Interface Generator به صورت اتوماتیک تولید کرده و از آنها در داخل FPGA استفاده نمود.
برای آشنایی و کسب مهارت در طراحی دیجیتال با استفاده از FPGA نیاز به یک برد توسعه سخت افزاری (Development Board) می باشد. با استفاده از این برد و با به کارگیری انواع ماژول ها و تراشه های لازم بر روی آن، می توان از امکانات FPGA استفاده نموده و طراحی های دیجیتالی از نوع ساده تا پیشرفته را بر روی این برد ها انجام داد.
اگر بخواهیم بدون مقدمه به توضیح FPGA بپردازیم باید گفت FPGA یا Field-Programmable Gate Array ( آرایه گیت های قابل برنامه ریزی ) یک مدار مجتمع است که می توان آن را پس از اتمام فرآیند تولید ، مطابق نیاز طراح برنامه ریزی نمود و روابط منطقی بین پایه های ورودی و خروجی را تغییر داد از این رو به این تراشه ها قابل برنامه ریزی می گویند. روابط منطقی درون این تراشه ها را اغلب با زبان توصیف سخت افزار ( HDL یا Hardware Description Language ) مشخص می کنند ( علاوه بر HDL از طراحی شماتیک ، State Diagram و برنامه نویسی به زبان های دیگر مانند C نیز می توان استفاده کرد که توسط برنامه ای که بواسطه آن طراحی را انجام می دهید به کد HDL تبدیل می گردد ) . به دلیل استفاده مستقیم از گیت ها در انجام عملیات ها ، این تراشه ها دارای سرعت و دقت بسیار بالا هستند.ممکن است این سوال برای شما پیش بیاید که وقتی میکروکنترلر هایی مانند AVR و ARM در دسترس ما هستند به چه دلیلی باید سراغ FPGA برویم ؟ در پاسخ باید گفت هرگز سعی نکنید در پروژه های غیر تحقیقاتی ، میکروکنترلر را با FPGA مقایسه کنید یا این دو را به جای یکدیگر استفاده کنید ، دلیل این ادعا نیز کاملا مشخص است.
مقایسه FPGA و میکروکنترلر
میکروکنترلر ها دارای CPU و جافظه های جانبی و … هستند ، میکروکنترلر ها برای کاربرد مشخصی ساخته نشده اند و هر طراح می تواند برنامه دلخواه خود را درون آنها برنامه ریزی کند ، منابع و دستور العمل های اجرایی یک میکروکنترلر مشخص همواره ثابت است در حالی که می تواند حاوی هزاران برنامه مختلف را روی خود جای دهد اما در مورد FPGA ها چنین نیست ، در یک FPGA هیچ CPU پیشفرضی وجود ندارد که شما عملیات های مورد نیازتان را با آن انجام دهید ، بلکه شما باید بلوک های مختلف مورد نیاز خود را در داخل FPGA پیاده سازی کنید و در نهایت از آنها برای رسیدن به نتیجه دلخواهتان استفاده کنید. به عنوان مثال برای اینکه بتوانید در FPGA چند عدد را جمع کنید باید بوسیله ی گیت ها یک بلوک جمع کننده طراحی کنید و از آن پس می توانید در سایر بلوک ها از آن استفاده نمایید.
FPGA ها به دلیل داشتن بلوک های منطقی خاص برای انجام هر عملیات و انجام پردازش های موازی ، با سرعت بسیار بالا عملیات های مورد نظر را انجام می دهد و از نظر سرعت و دقت نمی توان FPGA را با میکروکنترلر ها مقایسه کرد. از نظر هزینه اجرا نیز اغلب پروژه های FPGA گرانتر و هزینه بر تر از پروژه های میکروکنترلر هستند و در صورتی که بخواهید کارهایی را که با یک میکروکنترلر انجام می دادید با FPGA انجام دهید ، باید وقت و هزینه بیشتری صرف اجرا کنید از این رو معمولا FPGA و میکروکنترلر هر کدام کاربرد های خاص خود را دارند و به جای یکدیگر استفاده نمیشوند.
از FPGA اغلب برای ساخت دستگاه های مخابراتی پرسرعت ، دستگاه های صنعتی و تجاری خیلی حساس و سریع ، دستگاه های نظامی و مصارف این چنین بهره می برند. FPGA ها دارای چند هزار تا چند میلیون گیت در داخل خود هستند ، که تعداد گیت های یک FPGA بر قیمت آن تاثیر اساسی می گذارد. در هر پروژه ای شما باید بدانید از چه تراشه ای و با چه تعداد گیت استفاده کنید تا بهینه ترین حالت ممکن را بوجود آورید. شرکت های مختلفی تراشه های FPGA را تولید می کنند که شرکت Xilinx و Altera در ایران بیشتر شناخته شده اند.
آرایه گیت های برنامه پذیر بر اساس معماری داخلی ، پیچیدگی و تعداد گیت ها به دسته های متلفی مانند PAL,PLA,CPLD,FPGA و … تقسیم می شوند که هرکدام از این دسته ها برای مصارف خاصی مورد استفاده قرار می گیرد.
برخی از FPGA های پیشرفته امروزی علاوه بر گیت های منطقی دارای منابع داخلی دیگری مانند RAM , مبدل آنالوگ به دیجیتال ADC و مبدل دیجیتال به آنالوگ DAC نیز هستند که به کاربر کمک می کند تا در پروژه هایی که به این امکانات نیاز دارد ، از این منابع داخلی استفاده نماید و یک سیستم کامل را در داخل تراشه پیاده سازی نماید که به افزایش کارایی ، سرعت و دقت FPGA ها کمک می کند.
در مورد موارد کاربرد FPGA ها می توان اینطور گفت که FPGA ها را می توان برای تست طراحی های HDL به صورت عمل به کار برد و در صورت مطلوب بودن نتیجه تراشه ASIC آن را تولید نمود ( ASIC چیست؟ تراشه ASIC یا Application-Specific Integrated Circuitt به تراشه ای گفته می شود که برای انجام عملیات خاصی طراحی و ساخته می شود ، اغلب ASIC ها با زبان HDLL طراحی می شوند و سپس کارخانه های سازنده با تبدیل طراحی به گیت های منطقی NAND یا NOR آن را می سازند ) . تراشه های ASIC معمولا با تعداد بسیار بالا و هزینه پایین تولید می شود و در عین حال که قیمت تمام شده قطعه بسیار پایین می آید اما هزینه گزافی باید به علت تعداد بالا پرداخته شود بنابراین برای کارهایی مناسب ایت که قصد دارند تراشه را به تعداد انبوه استفاده کنند یا روانه بازار کنند ، اما معمولا زمانی که قصد تولید انبوه یک تراشه را نداریم و فقط می خواهیم تعداد مشخص و محدودی از یک تراشه سفارشی تولید کنیم ، بهترین گزینه استفاده از FPGA ها یا CPLD ها می باشد.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *