مقالات کیوتک

کاربردهای تراشه های Altera

کاربردهای تراشه های Altera

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

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

اگر بخواهیم بدون مقدمه به توضیح FPGA بپردازیم باید گفت FPGA یا Field-Programmable Gate Array ( آرایه گیت های قابل برنامه ریزی ) یکس مدار مجتمع است که می توان آن را پس از اتمام فرآیند تولید ، مطابق نیاز طراح برنامه ریزی نمود و روابط منطقی بین پایه های ورودی و خروجی را تغییر داد از این رو به این تراشه ها قابل برنامه ریزی می گویند. روابط منطقی درون این تراشه ها را اغلب با زبان توصیف سخت افزار ( HDL یا Hardware Description Language ) مشخص می کنند ( علاوه بر HDL از طراحی شماتیک ، State Diagram و برنامه نویسی به زبان های دیگر مانند C نیز می توان استفاده کرد که توسط برنامه ای که بواسطه آن طراحی را انجام می دهید به کد HDL تبدیل می گردد ) . به دلیل استفاده مستقیم از گیت ها در انجام عملیات ها ، این تراشه ها دارای سرعت و دقت بسیار بالا هستند.

ممکن است این سوال برای شما پیش بیاید که وقتی میکروکنترلر هایی مانند AVR و ARM در دسترس ما هستند به چه دلیلی باید سراغ 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 Circuit به تراشه ای گفته می شود که برای انجام عملیات خاصی طراحی و ساخته می شود ، اغلب ASIC ها با زبان HDL طراحی می شوند و سپس کارخانه های سازنده با تبدیل طراحی به گیت های منطقی NAND یا NOR آن را می سازند ) . تراشه های ASIC معمولا با تعداد بسیار بالا و هزینه پایین تولید می شود و در عین حال که قیمت تمام شده قطعه بسیار پایین می آید اما هزینه گزافی باید به علت تعداد بالا پرداخته شود بنابراین برای کارهایی مناسب ایت که قصد دارند تراشه را به تعداد انبوه استفاده کنند یا روانه بازار کنند ، اما معمولا زمانی که قصد تولید انبوه یک تراشه را نداریم و فقط می خواهیم تعداد مشخص و محدودی از یک تراشه سفارشی تولید کنیم ، بهترین گزینه استفاده از FPGA ها یا CPLD ها می باشد.

در رابطه با FPGA ها منابع کمی در دسترس است و تاحدی درباره این مدار مجتمع های دیجیتال قدرتمند کوتاهی شده است. (FPGA (Field Programmable logic Gate Array ها که بعبارتی «آرایه دریچه ای برنامه پذیر منطقی» و به تعبیری ساده تر «آرایه گیت برنامه پذیر در محل» خوانده می شوند، تراشه هایی هستند با معماری داخلی از پیش تعیین شده توسط شرکت سازنده که قابلیت پیکربندی به منظورهای مختلف را توسط طراحان فراهم می آورند. انواع دیگری از این نوع تراشه نیز موجود است؛ معروف ترین آنها، ASIC میباشد که هنوز هم در برخی پروژه های بزرگ و پیچیده مورد استفاده قرار می گیرد. مهمترین اشکال ASIC ها فرایند طراحی و ساخت زمان بر و پرهزینه میباشد که در نتیجه ی ثابت بودن طرح نهایی در سیلیکون ایجاد میشود. بدین معنی که فقط با تولید نسخه ی جدید میتوان مدار را ویرایش کرد، که همین مطلب طول مدت رسیدن به بازار قطعه را طولانی تر می کند. در FPGA ها این اشکالات برطرف شده است، که در ادامه به توضیح بیشتر می پردازیم.

FPGA-Silkscreen

این قطعات دارای بلاک های منطقی برنامه پذیر و اتصالات بین بلاکی قابل پیکربندی هستند. برخی از آنها تنها یک بار قابلیت برنامه پذیری دارند که به (OTP(One-Time-Programmable مشهورند و برخی دیگر چندین بار قابلیت برنامه پذیری را دارا هستند.

برای برنامه نویسی و طراحی FPGA ها از دو روش زبان های توصیف سخت افزار (HDL-AHDL-VHDL) و یا طراحی مدار استفاده می شود.

این تراشه ها می توانند چندصد میلیون گیت منطقی(قابل پیکربندی) داشته باشند که همین ویژگی آنها را برای پیاده سازی توابع پیچیده و بسیار بزرگ دلپذیرتر می کند.

تعریفی دیگر که در FPGA به آن اشاره شد، «آرایه گیت برنامه پذیر در محل» بود، بعبارت دیگر میتوان گفت FPGA ها (ISP(IN-System Programmable هستند، یعنی برنامه پذیر درون سیستمی. ISP به قطعاتی گفته می شود که توان برنامه پذیری هنگام استقرار در سیستمی سطح بالاتر را داشته باشند. همین ویژگی، امکان تغییر طرح پیاده سازی شده را بصورت ساده برای ما فراهم می آورد؛ بدون آنکه نیاز به تولید نسخه ی جدید باشد! در نتیجه زمان عرضه به بازار طرح بسیار کوتاه تر می سود.

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

در ابتدای ظهور FPGA ها (اواسط دهه ۱۹۹۰) از آنها برای پیاده سازی منطق اتصالی (glue logic) و ماشین هایی با پیچیدگی متوسط و پردازش داده های نسبتاً کم استفاده میشد. در اوایل دهه ۱۹۹۰ و با پیشرفت FPGA ها، از آنها برای ارتباط و شبکه، یعنی پردازش بلاک های بزرگ داده و فرستادن آنها به اطراف استفاده میشد؛ و در اواخر دهه ۱۹۹۰، بازار شاهد ورود آنها به کاربردهای صنعتی، لوازم خانگی و خودروسازی بود.

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

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

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

نکته:

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

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

 

برنامه نویسی و طراحی با FPGA :

برنامه نویسی و طراحی مدارات با FPGA ها به طور کلی به ۲ صورت انجام می شود .
– با استفاده از زبان های توصیف سخت افزاری مانند VHDL ، AHDL ، HDL و …
– با استفاده از طراحی مدار 

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

تراشه های 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 و اجزای داخلی آن و درباره تکنولوژیهای مختلف آن مطالبی آمده است. نکاتی در مورد استفاده و انتخاب FPGA اشاره شده است. نحوه ترجمه و کامپایل پروژه و خطایابی آن، و تست پروژه بصورت شبیه سازی و تحلیل زمانی و در نهایت نحوه برنامه ریزی در داخل یک آی سی FPGA بیان شده است.

ساختار کلی FPGA

FPGA از یک سری عناصر منطقی که برای کار خاصیت محدود نشده اند و نیز دارای اتصالات قابل رنامه ریزی است. بنابراین هر دو جزء اصلی تشکیل دهنده یک مدار یعنی بلوکها منطقی و همچنین اتصالات بین آنها قابل برنامه ریزی است.

ساختار fpga:

همانطور که در این شکل مشخص است، سه جزء اصلی آن عبارتند از بلوکهای منطقی (Logic Blocks) ، عناصری که برای اتصالات بکار می روند (Integration Resources) و بلوکهای وروی و خروجی (I/O Blocks)، ساختار و محتویات بلوکهای منطقی می تواند خیلی ساده (در حد یک گیت NAND) و یا خیلی پیچیده (نظیر چند MUX یا Look-Up Table به همراه یک فلیپ فلاپ باشد. بلوکهای منطقی در حقیقت جایی هستند که قسمتهای اصلی مدار قرار می گیرند. البته ابتدا باید مداری که قرار است روی FPGA قرار بگیرد به اجزای یکسانی که همان محتویات بلوکهای منطقی هستند تقسیم شودو بعد از این عمل است که می توان با متصل کردن بلوکهای پایه به هم مدارهای واقعی را بدست آورد. عناصری که برای اتصالات بکار می روند ، معمولا” بین بلوکهایی که منطقی قرار می گیرند و از قطعات فلزی که می توانند به هم یا به بلوکهای منطقی متصل شوند تشکیل شده اند و برای متصل کردن این قطعات از سوئیچهای قابل برنامه ریزی استفاده می شود. این قطعات می توانند طولهای متفاوتی داشته باشند. بلوکهای ورودی خروجی برای اینکه پینهای FPGA را بتوان در مدهای مختلف ورودی یا خروجی یا ورودی/خروجی، همچنین برای ولتاژهای مختلف ۳٫۳ یا ۵ولت و … برنامه ریزی کرد بکار می روند. زیرا طراحی این دو با هم باید یه گونه ای باشد که پیاده سازی مدارات منطقی مختلف را روی FPGA امکان پذیر سازد. معمولا” بین پیچیدگی و انطاف پذیری هر دوی بلوکهای منطقی و منبع اتصالی یک نسبت معکوس وجود دارد. یعنی با زیاد شدن یکی دیگری کم می شود و بالعس. در ضمن معماری یک بلوک منطقی و همچنین منابع اتصالی بر کل مساحت تراشه و سرعت تراشه اثر دارد.

سوئیچها و مدار اتی که برای برنامه پذیر کردن چیپ استفاده می شوند

قیمت بالا برای تولیدات با تعداد زیاد

انتخاب و استفاده از FPGA

روشهای طراحی مدار:

۱- شماتیک (Schematic)

۲- زبانهای برنامه نویسی سخت افزاری VHDL-Verilog-AHDL-ABL) HDL)

۳- دیاگرام حالت (Start Diagram)

دیاگرام حالت (Start Diagram)

انواع نرم افزارهای مربوط به FPGA:

از سوی شرکتهای مختلفی نرم افزارهای با قابلیتهای مختص به خود طراحی کرده اند که اهم آنها به قرار زیرند:

MAXPLUS II – Quartus – Fandation – Leonardo Spectrum – Modelsim – …

قابلیتهای نرم افزار:

نرم افزارها از لحاظ قابلیت و امکانات سرویس دهی با هم تفاوتهایی دارند که معمولا” کارهای زیر را انجام می دهند:

Schematic Editor – text Editor – Waveform Editor (Simulator) – Compiler- synthesizer – Fitter – Programmer –

شرکتهای سازنده FPGA:

Altera

Xiling

Actel

سریهای ساخت شرکت Xining:

Spartan, XC5000, XC4000, XC3000, XC2000

عوامل انتخاب یک FPGA:

تعداد گیت

فرکانس کاری

تعداد پایه

قیمت

ترجمه و سنتز پروژه:

کامپایلر ….و ISEیا MAX+PLUS IIپروژه را برای یافتن خطاهای احتمالی بررسی می کند، طرح منطقی را ترکیب می کند، پروژه مذکور را به یکی از ابزارهای قابل برنامه ریزی نسبت می دهد، فایلهای خروجی را برای شبیه سازی و برنامه ریزی بوجود می آورد و سرانجام پنجره نمایش سلسله مراتبی (Hierarchy Display) را به روز در می آورد.

با توجه به پیشرفت دنیای دیجیتال و همچنین عدم پاسخ گویی مدارات مجتمع معمولی برای پیاده سازی توابع پیچیده ، به مرور تراشه های جدیدی طراحی شده اند که با توجه به نیاز طراح ، دارای تعداد زیادی گیت و بلوک منطقی هستند . از این میان PLD ، PLA ، CPLD ، SPLD و FPGA ها مشخص ترین نوع این تراشه ها هستند که تعداد گیت های به کار رفته در آنها تا چندین هزار گیت می باشد .

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

بلوک های منطقی نیز دارای انواع مختلفی هستند که عموما توسط المانی پایه ، تمامی توابع منطقی را ایجاد می کنند . به عنوان مثال بلوک های منطقی در خانواده ACT-1 از شرکت Actel ، با پایهء مالتی پلکسری عمل می کنند . به این معنا که توسط مالتی پلکسر ، توانایی ایجاد توابع منطقی مختلف را دارند .

البته تعداد ورودی های هر بلوک منطقی متفاوت است و به نوع FPGA مربوط می شود . به عنوان مثال بلوک های منطقی در خانوادهء ACT-1 ، از نوع ۸ ورودی است . البته در برخی موارد به بلوک های منطقی ، سلول های منطقی نیز گفته می شود (LC) .

بلوک دیاگرام یک FPGA به طور ساده در شکل زیر نشان داده شده است .

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

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

نکته :

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

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

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

برنامه نویسی و طراحی با FPGA :

برنامه نویسی و طراحی مدارات با FPGA ها به طور کلی به ۲ صورت انجام می شود .

– با استفاده از زبان های توصیف سخت افزاری مانند VHDL ، AHDL ، HDL و …

– با استفاده از طراحی مدار

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

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

FPGA ها معاصر دارای منابع زیادی از گیت های منطقی و بلوک RAM برای اجرای محاسبات پیچیده دیجیتال می باشد . به عنوان طرح های FPGA بسیار سریع به کار من / سیستم عامل ها و اتوبوس ها داده های دو طرفه آن را یک چالش به منظور بررسی زمان بندی صحیح از داده های معتبر در زمان راه اندازی و زمان را نگه می شود . طبقه را قادر می سازد برنامه ریزی تخصیص منابع در داخل FPGA برای پاسخگویی به این محدودیت های زمانی . [۱ ] FPGA ها را می توان برای پیاده سازی هر تابع منطقی است که یک ASIC می تواند انجام دهد . قابلیت به روز رسانی قابلیت پس از حمل و نقل ، جزئی پیکربندی مجدد بخشی از طراحی [ ۲ ] و هزینه های مهندسی غیر دوره ای در محدوده کم نسبت بهطراحی ASIC ( صرف نظر از هزینه واحد به طور کلی بالاتر ) ، مزایا را برای بسیاری از برنامه های کاربردی . [۳]

FPGA ها شامل اجزای منطق قابل برنامه ریزی به نام ” بلوک های منطقی ” ، و یک سلسله مراتب تنظیم مجدد اتصالات اجازه می دهد که بلوک به هم سیمی ” تا حدودی مانند بسیاری از ( متغیر ) گیت های منطقی است که می تواند بین سیمی (بسیاری) از تنظیمات مختلف است . بلوک های منطقی را می توان به پیکربندی انجام توابع پیچیده ترکیبی ، یا گیت های منطقی صرفا ساده مثل AND و XOR است . در بسیاری از FPGA ها ، بلوک های منطقی نیز شامل عناصر حافظه، که ممکن است ساده فلیپ فلاپ یا بیشتر از بلوک های کامل حافظه .

برخی از FPGA ها دارای ویژگی های آنالوگ در علاوه بر توابع دیجیتال . ویژگی های مشترک آنالوگ سرعت چرخشی قابل برنامه ریزی و قدرت درایو در هر پین خروجی است، اجازه می دهد مهندس به تعیین نرخ آهسته در پین سبکبار است که در غیر این صورت به حلقه غیر قابل قبول ، و به مجموعه ای قوی تر ، نرخ سریعتر در پین به شدت لود شده در کانال های با سرعت بالا که در غیر این صورت اجرای بیش از حد به آرامی . [۴ ] [۵ ] یکی دیگر از ویژگی های نسبتا شایع آنالوگ مقایسه دیفرانسیل در ورودی پین طراحی شده است که به کانال سیگنالینگ دیفرانسیل متصل است . چند ” FPGA ها سیگنال مخلوط” مبدل ( مبدل ها ) و دیجیتال به آنالوگ مبدل آنالوگ به دیجیتال محیطی ( DACS ) با بلوک های تهویه سیگنال آنالوگ اجازه می دهد آنها را به عنوان یک سیستم بر روی یک تراشه . [۶ عمل یکپارچه اند ] چنین دستگاه های محو کردن خط بینFPGA ، که حامل های دیجیتال و صفر در برنامه ریزی داخلی خود متصل پارچه و آرایه میدان قابل برنامه ریزی آنالوگ ( FPAA ) ، که حامل مقادیر آنالوگ در برنامه ریزی داخلی خود متصل پارچه

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

الف ) بزرگترین سازنده های FPGA

بزرگترین سازنده های FPGA شرکتها Xilinx (بیش از پنجاه در صد بازار) و Altera می باشند. شرکت Xilinx اولین شرکتی بوده است که مفهوم FPGA را مطرح کرده است. علاوه بر این دوشرکت (که نزدیک به ۹۰ درصد بازار را دراختیار دارند) شرکتهایی مثل ACTEL ، LATTICE ,… نیز محصولات مشابهی تولید می کنند.

ب) اصولا چه موقع باید از FPGA استفاده کرد و تفاوت آن با میکروکنترلر چیست؟

اصولا از FPGA برای مجتمع سازی به منظور ساخت نمونه استفاده می شود. در واقع هرگاه نیاز به مجتمع سازی یک مدار منطقی داشته باشیم می توانیم از FPGA استفاده کنیم. از نقطه نظر کاربردی مثلا ساخت یک CPU که نیاز به تعداد زیادی گیت دارد و حتما با ید مجتمع سازی شود می تواند یک مثال خوب برای استفاده از FPGA باشد. مقایسه میکروکنترلر با FPGA چندان کار درستی نیست در واقع می توان با FPGA یک میکروکنترلر ساخت. از آنجا که تولید انبوه این مدارات باعث کاهش قیمت آنها شده و قیمت آنها با میکروکنترلرها قابل مقایسه شده است بسیاری از طراحان دیجیتال حرفه ترجیح می دهند تا به جای کار کردن با یک میکرو خاص از Core های آماده ی میکرو و FPGA استفاده کنند تا با این روش با انجام تغییرات دل خواه در Core میکرو به راندمان بالاتری برسند.

در بسیاری از کاربردهای پردازش سیگنال (آنهایی که با فرکانسهای بالا و حجم عظیم داده سر و کار دارند) استفاده از FPGA تنها و آخرین گزینه موجود می باشد.

در بسیاری از کاربردهای مدار واسط مثل کار با PCI ، PCI express و… FPGA تنها راه کار موجود برای نمونه سازی باشد.

پ) برای کار و طراحی با FPGA نیاز به چه مهارتهایی است؟

آشنایی با مدارهای منطقی حداقل دانش مورد نیاز است. برای پیاده سازی یک مدار بر روی FPGA ابتدا باید بتوانید مدارتان را توصیف کنید. یک راه برای این منظور می تواند نمایش بلوک دیاگرامی باشد ولی این روش در مدارها ی پیچیده مثل یک CPU روش مناسبی به نظر نمی رسد زیرا نشان دادن تعداد بالای المانها و اتصالات آنها با این روش مناسب نیست. به همین منظور از زبان های توصیف سخت افزار مثل VHDL ، Verilog و … استفاده می شود. با این زبانها می توانید مدار خود را توصیف کنید.

آشنایی با مفاهیم معماری کامپیوتر همواره می تواند به یک طراح FPGA کمک کند.

ت) برای ساخت یک مدار با FPGA به چه چیزهایی نیاز داریم؟

برای ساخت و پیاده سازی یک مدار منطقی برروی FPGA شما یک برنامه کامپیوتری برای طراحی و برنامه ریزی و یک مدار پروگرامر برای انتقال مدار از کامپیوتر به FPGA و نیز debug کردن آن دارید.

برنامه هایی که در کامپیوتر به نیاز دارید عبارتند از:

IDE : که همان محیط طراحی است که در آن می توانید فایلهای Verilog ، VHDL و یا Schematic مدار تان را طراحی کنید.

Compiler : پس از ایجاد یک فایل توصیف سخت افزار نیاز است که کامپایل شود تا اشکالات نحوی بر طرف گردد. این کار بر عهده Compiler است.

Simulator : قبلا از پیاده سازی مدار بر روی FPGA بهتر است یک بار همه چیز را شبیه سازی کنیم و به کمک شبیه ساز می توان این کار انجام داد.

Synthesizer: سنتز به معنای تبدیل مدار به یک سری اطلاعات قابل برنامه ریزی بر روی FPGA است. مثلا برای پیاده سازی یک گیت AND لازم است یک سری از سوییچ ها در داخل آن برنامه ریزی شوند. تبدیل مفهوم AND به این سوییچها بر عهده ابزار سنتز است.

Programmer: با استفاده از این برنامه و مدار پروگرامر می توانید مدارتان را به FPGA منتقل کنید.

شرکتهای سازنده معمولا خود برای FPGA  تولیدی خودشان انواع و اقسام این نرم افزارها را می سازند. از این بین Xilinx با مجموعه برنامه ISE و شرکت ALTERA  با مجموعه QUARTUS II از سایر رقبا جلو تر هستند. این Toolset علاوه بر موارد فوق ابزارها و بلوکها آماده بسیاری پشتیبانی می کنند. مثلا در ISE یک ویزارد برای ساخت ماژولهای متفاوت با نام Coregen وجود دارد مشابه این ویزارد در نرم افزار QUARTUS با نام MegaFunction وجود دارد.

د) سایتهای تخصصی در زمینه FPGA و ASIC چه سایتهایی هستند؟

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

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

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

اما آنچه که قابلیت و توانایی FPGA ها را بالا برده است توانایی هایی است که پاره ای از آنها در زیر آمده است :

۱- امکان تعریف هر یک از پایه های IC به صورت ورودی یاخروجی یا هر دو

۲- امکان تعریف وضعیت عملکرد هر پایه در هنگام استفاده یا عدم استفاده.به عنوان مثال عملکردHIGH امپدانس(Z)در هنگام عدم استفاده و یا قرار گرفتن در یک وضعیت منطقی صفر یا یک در هنگام عدم استفاده.

۳- امکان تشخیص تغیبیرات سطوح یا لبه های پایین رونده یا بالا رونده منطقی اعمال شده به هر پایه.

۴- امکان برنامه ریزی چند باره از طریق پایه های برنامه ریزی jTAG(یکی از استاندارد های برنامه ریزی IEEE)و تغییر معماری آن).

۵- امکان تغییر متناوب معمار ی داخلی با استفاده از سری های Bootable که نقشه معماری آنها در یک حافظه خارجی نگهداری شده و با تغییر آدرس برنامه ریزی می توان IC را بامعماری جدید Boot کرده و از آن استفاده کرد .

۶- امکان برنامه ریزی در مدار (ISP)که این قابلیت را به وجود می آورد تا بدون اعمال تغییرات سخت افزاری و تنها از طریق پورت برنامه ریزی jTAG، معماری داخلی IC را تغییر داد .

۷- محدوده گستره ای از پایه های قابل استفاده در این IC ها که از بسته های ۴۴ پایه تا ۵۱۴ پایه و حتی بالاتر با حجم گیتی داخلی متفوت که بسته به نیاز بر اساس میزان پیچیدگی داخلی و تعداد پایه های IC را تغییر داد.

۸-کاهش حیرت انگیز حجم مدار و مجتمع سازی در ابعادی تنها به مساحت چند سانتی متر مربع.

۹- کاهش یکسان سازی عناصر طراحی و از میان بردن تمامی مشکلات ناشی از عدم تطابق استاندارد های مختلف(LS,HC,s,AS,…).

۱۰-  از میان بردن تمامی نویز های ناشی از وجود قطعات مختلف و مجزا در مدار.

۱۱- کاهش چشمگیر توان مصرفی و اتلاف توان.

۱۲- افزایش سرعت پردازش و خطاهای انتشار به دلیل استفاده از فناوری پیشرفته و دستیابی به خطاهای انتشار تا ۴ns و فرکانس کلاک فرارتر از ۱۷۸ مگاهرتز.

۱۳- کار با دو سطح ولتاژ ۵v و ۳٫۳v جهت استفاده از آنها در دستگاه های قابل حمل مانند گوشی های موبایل

۱۴- ضریب ایمنی صد در صد به دلیل عدم امکان دستیابی به محتوای داخلی و عدم توان توصیفمحتوای داخلی به دلیل انجام ساده سازی و فشرده سازی بسیار پیچیده.

و بسیاری از قابلیتهای حیرت انگیز دیگر که امکان انجام یک طراحی مجتمع ،کم حجم ،بهینه و سریع را فراهم می آورد.

محصولات

گر چه شرکتهای بسیاری بسته های FPGA را تولید می کنند اما از میان آنها در شرکت ALTERA و Xilinx از جمله عمده ترین تولید کنندگان این محصول هستند که از این میان شرکتXilinx نوع دیگری از این بسته ها را با نام CPLDرا تولید می کند که به صورت Bootable عمل می کنند،بدین معنی که داده های برنامه ریزی معماری داخلی خود را از یک حافظه ی خارجی خوانده و خود را پیکر بندی کرده و سپس آماده کار می شوند .تمامی این محصولات با توجه به تعداد پایه هاو حجم پیچیدگی قابل برنامه ریزی در انها بر اساس تعداد گیتهای داخلی در بازار موجود و قابل دسترس هستند . از جمله سری های پر قدرت و پرحجم آنها سری flex از محصولات شرکتALTERA که در نمونه ای از آن می توان یکCPU مدل ۴۸۶ را جای داد.

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

از جمله زبانهای متداول برنامه نویسی سخت افزار ABEL,AHDL,VERILOG,VHDL هستند که هر یک با استفاده از syntax خاص خود برای توصیف سخت افزار مورد استفاده قرار می کیرند که با استفاده از هر یک از آنها می توان هر طراحی دیجیتالی را به زبان آنها نوشته و تحلیل و سپس استفاده کرد.

 

آشنایی با آی سی های fpga

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

۱٫شماتیک (schematic)

۲٫HDL  (hardware description language)

۳٫دیاگرام حالت (state diagram)

۴٫دیاگرام زمانی (timing diagram)

با استفاده از یکی از روشهای بالا ما می توانیم مدار مورد نظر را طراحی کنیم ،اما قوی ترین روش در طراحی روش HDLمی باشد .در این روش با استفاده از زبانهای تشریح سخت افزاری ، طراحی مدار را انجام می دهیم .زبان HDL خود به چند دسته تقسیم می شود که VHDL و verilogاز مهم ترین آنها می باشد.

مراحل طراحی مدار دیجیتال با استفاده از FPGA

Design > Syntheses & analysis > fitter > Assemble> Timing analyser > programing

Design:طراحی مدار با روش دلخواه

Syntheses & analysis:تبدیل طرح به سخت افزار

Fitter:جا سازی داخل یک

Assemble: تهیه یک فایل که بتوان داخل آی سی ریخت

Timing analyser: آنالیز تاخیر

Programming: ریختن داخل آی سی

اما یک سوال پیش می آید که تفاوت FPGA  وmicrocontroller  در چیست؟

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

امروزه استفاده از FPGA ها بسیار گسترده است به طوری که در طراحی کامپیوتر ها و پروژه های گسترده کنترل نیاز به FPGA ها امری اجتناب ناپذیر می باشد .

دیدگاهتان را بنویسید