Learn FPGA Season 0

کاربرگرامی
آخرین بروز رسانی: 21 شهریور 1403
بدون دیدگاه
3 دقیقه زمان مطالعه
fpga

آشنایی با FPGA

 

یک FPGA، مخفف (field programmable gate array) آرایه دروازه قابل برنامه ریزی میدانی، یک نوع مدار مجتمع است.

قسمت قابل برنامه ریزی فیلد در نام این قطعات نشان می دهد که FPGA ها را می توان در زمانی که در فیلد هستند مجدداً برنامه ریزی کرد (یعنی بدون نیاز به بازگرداندن آنها به سازنده).

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

FPGA-Graphics-1

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

 

در واقع، آنها بسیار پیچیده تر از این هستند. علی‌رغم این استثناها، این نام در طول سال‌ها باقی مانده است.

 

کاربردهای یک FPGA فقط توسط تخیل طراح محدود می شود.

 

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

 

فقط در صورتی می توانید کاری را انجام دهید که آن ویژگی در آن تعبیه شده باشد.

 

در مقابل، آرایه‌ای از گیت‌های FPGA (یا معادل مدرن‌تر) مانند یک لوح خالی است که می‌توانید تقریباً هر کاری را که می‌خواهید، با محدودیت‌های کمتر، برنامه‌ریزی کنید،

 

دوباره برنامه‌ریزی کنید، و دوباره برنامه‌ریزی کنید.

با این حال، این آزادی بدون معاوضه به دست نمی‌آید، و توسعه FPGA به مجموعه‌ای از مهارت‌ها نیاز دارد.

 

در اینجا چند نمونه از طراحی هایی که با FPGA امکان پذیر است آورده شده است:

 

یادگیری نحوه کار با FPGA به سبکی متفاوت از برنامه نویسی کامپیوتری سنتی نیاز دارد.

 

به عنوان مثال، مهندسی نرم افزار سنتی، مانند برنامه نویسی در C، معمولا به اینصورت است: ابتدا این اتفاق می افتد، سپس این اتفاق می افتد و در نهایت این اتفاق می افتد.

 

این به این دلیل است که C برای اجرا روی یک پردازنده یا CPU کامپایل شده است و آن CPU یک ماشین سریال است.

 

یک دستورالعمل را در یک زمان پردازش می کند.

 

از سوی دیگر، FPGA ها به صورت موازی کار می کنند: همه چیز در همان زمان اتفاق می افتد. درک تفاوت بین برنامه نویسی سریال و موازی برای کار با FPGA ضروری است.

 

زمانی که بتوانید با استفاده از روش های موازی به حل مسئله فکر کنید، مهارت های حل مسئله کلی شما افزایش می یابد.

 

این مهارت ها به دیگر برنامه های کاربردی غیر FPGA نیز ترجمه می شوند.

 

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

 

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

کار کردن با FPGA ها بسیار سرگرم کننده است.

هنگامی که یک طرح FPGA با استفاده از Verilog یا VHDL ایجاد می‌کنید (در ادامه در این فصل در مورد این زبان‌ها بیشتر توضیح خواهیم داد)، در پایین‌ترین سطح ممکن کد می‌نویسید.

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

این به شما امکان را می دهد تقریباً هر مشکل دیجیتالی را حل کنید: شما کنترل کامل دارید. این یک سطح برنامه نویسی بسیار پایین تر از کار با میکروکنترلری است که مثلاً پردازنده دارد.

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

هنگامی که کار با FPGA را شروع کنید، به پیچیدگی‌های ساده‌ترین مدارهای مجتمع نیز احترام می‌گذارید.

 

تاریخچه مختصری از FPGA ها

 

اولین FPGA XC2064 بود که توسط Xilinx در سال 1985 ایجاد شد.

بسیار ابتدایی بود، با 800 گیت، کسری در مقایسه با میلیون ها عملیات گیت که می توان بر روی FPGA های امروزی انجام داد.

همچنین نسبتاً گران بود و 55 دلار قیمت داشت که با توجه به تورم امروز حدود 145 دلار خواهد بود.

با این حال، XC2064 کل صنعت را راه اندازی کرد و Xilinx (در کنار Altera) بیش از 30 سال یکی از شرکت های غالب در بازار FPGA باقی مانده است.

FPGA های اولیه مانند XC2064 فقط قادر به انجام کارهای بسیار ساده بودند: عملیات بولی مانند گرفتن OR منطقی دو پایه ورودی و قرار دادن نتیجه روی یک پایه خروجی (در ادامه اطلاعات بیشتری در مورد عملیات بولی و گیت های منطقی خواهید آموخت).

در دهه 1980، این نوع مشکل نیازمند یک مدار اختصاصی ساخته شده از گیت های OR بود. اگر شما همچنین نیاز به اجرای Boolean AND روی دو پایه مختلف داشتید، ممکن است مجبور شوید مدار دیگری را اضافه کنید و برد مدار خود را با این قطعات اختصاصی پر کنید.

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

از این آغاز فروتن، قابلیت های FPGA به طور چشمگیری افزایش یافته است.

در طول سال‌ها، دستگاه‌ها با مالکیت فکری سخت‌تر (IP)، یا اجزای تخصصی در FPGA طراحی شده‌اند که به انجام یک کار خاص اختصاص داده شده‌اند

(بر خلاف اجزای نرم که می‌توانند برای انجام بسیاری از کارها استفاده شوند).

برای مثال، بلوک‌های IP سخت در FPGA‌های مدرن به آن‌ها اجازه می‌دهند مستقیماً با دستگاه‌های USB، حافظه DDR و سایر اجزای خارج از تراشه ارتباط برقرار کنند.

برخی از این قابلیت‌ها (مانند رابط USB-C) بدون داشتن یک IP سخت اختصاصی برای انجام کار امکان‌پذیر نخواهد بود.

شرکت ها حتی پردازنده های اختصاصی (به نام پردازنده های سخت) را در داخل FPGA قرار داده اند تا بتوانید کد C معمولی را در خود FPGA اجرا کنید.

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

در سال 2020، شرکت سازنده تراشه AMD Xilinx را به قیمت 35 میلیارد دلار خریداری کرد.

قابل قبول است که این خرید پاسخی به خرید رقیب اصلی خود اینتل از Altera در سال 2015 به مبلغ 16.7 میلیارد دلار باشد.

جالب است که دو شرکت که عمدتاً بر روی پردازنده‌های مرکزی متمرکز شده‌اند تصمیم به خرید شرکت‌های FPGA گرفتند و گمانه‌زنی‌های زیادی در مورد دلیل آن وجود دارد.

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

به غیر از Xilinx و Altera (که از اینجا به بعد به ترتیب با نام شرکت مادرشان AMD و Intel تماس می‌گیرم)، شرکت‌های دیگر جایگاه‌های خود را در بازار FPGA ایجاد کرده‌اند.

به عنوان مثال، Lattice Semiconductor برای خودش خوب عمل کرده و FPGA های کوچکتر و ارزان تر را تولید کرده است.

Lattice خوشحال است که به تنهایی در این قسمت پایین بازار بازی می کند، در حالی که به AMD و Intel اجازه می دهد آن را در رده های بالاتر کنار بگذارند.

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

یکی دیگر از بازیکنان متوسط ​​در فضای FPGA، Actel، توسط Microsemi در سال 2010 به مبلغ 430 میلیون دلار خریداری شد.

Microsemi خود توسط Microchip Technology در سال 2018 خریداری شد.

 

برنامه های محبوب FPGA

 

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

به عنوان مثال، آنها یک جزء مهم در صنعت ارتباطات از راه دور هستند، جایی که اغلب در دکل های تلفن همراه یافت می شوند.

آنها ترافیک اینترنت را هدایت می کنند تا اینترنت را به تلفن هوشمند شما بیاورند و به شما امکان می دهند ویدیوهای YouTube را در اتوبوس خود به محل کارتان پخش کنید.

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

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

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

این صنعتی است که در آن میلی‌ثانیه‌ها اهمیت دارند و FPGA می‌تواند مزیتی برای آن ایجاد کند.

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

FPGA ها می توانند بازتاب های راداری دریافتی را با استفاده از فیلترهای ریاضی پردازش کنند تا اجسام کوچک را صدها مایل دورتر ببینند.

آنها همچنین برای پردازش و دستکاری تصاویر دوربین‌های مادون قرمز (IR) استفاده می‌شوند که می‌توانند گرما را به جای نور مرئی ببینند و به مأموران نظامی اجازه می‌دهند افراد را حتی در تاریکی کامل ببینند.

این عملیات اغلب به شدت محاسباتی هستند، و به چندین عملیات ضرب و جمع برای انجام موازی نیاز دارند – چیزی که FPGA ها در آن برتری دارند.

حوزه دیگری که FPGA ها جایگاه خود را پیدا کرده اند، در صنعت فضایی است:

می توان آنها را با افزونگی برنامه ریزی کرد تا در برابر اثرات بمباران تشعشع محافظت کند، که می تواند باعث از کار افتادن مدارهای دیجیتال شود.

در زمین، اتمسفر از وسایل الکترونیکی (و مردم) در برابر تشعشعات خورشیدی زیاد محافظت می‌کند، اما فضای بیرونی چنین پوششی دوست‌داشتنی ندارد، بنابراین وسایل الکترونیکی موجود در ماهواره‌ها در معرض محیطی بسیار خشن‌تر قرار می‌گیرند.

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

 

 

 

مقایسه اجزای دیجیتالی

 

علیرغم اینکه FPGA ها از روزهای اولیه خود تا چه حد پیشرفت کرده اند و طیف گسترده ای از کاربردهایی که برای آنها استفاده می شود.

هنوز یک فناوری نسبتاً خاص در مقایسه با سایر اجزای منطق دیجیتال مانند میکروکنترلرها و ASIC ها هستند. در این بخش، این سه فناوری را با هم مقایسه می کنیم.

خواهید دید که چرا FPGA ها راه حل خوبی برای برخی مشکلات هستند اما برای برخی دیگر نه، و چگونه رقابت سختی با دستگاه های دیگر، به ویژه میکروکنترلرها دارند.

 

 

fpga-mcu

 

 

FPGAs vs. Microcontrollers

 

میکروکنترلرها همه جا هستند. اگر یک مهندس نرم‌افزار نیستید، ممکن است متوجه نباشید که چگونه بسیاری از اسباب‌بازی‌ها، ابزارها، ابزارها و دستگاه‌ها با میکروکنترلرهای کوچک و ارزان کنترل می‌شوند:

همه چیز از کنترل از راه دور تلویزیون گرفته تا قهوه‌ساز تا اسباب‌بازی‌های سخنگو.

اگر اهل الکترونیک هستید، ممکن است با آردوینو آشنا باشید که توسط یک میکروکنترلر کوچک از Atmel (اکنون Microchip Technology، همان شرکتی که قبلاً Actel را در اختیار دارد) قدرت می‌گیرد. میلیون ها آردوینو به علاقه مندان در سراسر جهان فروخته شده است. آنها ارزان، سرگرم کننده و کار کردن با آنها نسبتاً آسان هستند.

 

پس چرا میکروکنترلرها همه جا هستند، اما FPGA نیستند؟ چرا یک FPGA وجود ندارد که قهوه ساز شما را کنترل کند یا عروسک Elmo شما را زنده کند؟

دلیل اصلی هزینه است. صنعت لوازم الکترونیکی مصرفی، که از بیشترین تعداد میکروکنترلرها استفاده می کند، به طور باورنکردنی نسبت به هزینه حساس است.

مصرف‌کنندگانی مانند من و شما کم‌هزینه‌ترین محصولاتی را می‌خواهیم که بتوانیم بخریم، و شرکت‌هایی که آن محصولات را تولید می‌کنند، هر ریال ممکن را برای تحقق این امر کاهش می‌دهند.

 

میکروکنترلرها انواع به ظاهر بی پایانی دارند که هر کدام برای هدفی خاص طراحی شده اند. این به شرکت ها کمک می کند تا هزینه ها را کاهش دهند.

برای مثال، اگر محصول شما به یک مبدل آنالوگ به دیجیتال (ADC)، دو رابط USB و حداقل 30 پین ورودی/خروجی (GPIO) نیاز دارد، یک میکروکنترلر دقیقاً با این مشخصات وجود دارد.

اگر متوجه شوید که فقط به یک رابط USB نیاز دارید، چه؟ احتمالا یک میکروکنترلر متفاوت با این مشخصات نیز وجود دارد.

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

 

 

fpgavcmu_wide

از سوی دیگر، FPGA ها بسیار عمومی تر هستند. با یک FPGA، ممکن است پنج رابط ADC و بدون رابط USB، یا سه رابط USB و بدون ADC ایجاد کنید. شما تقریباً یک لوح خالی در اختیار دارید. با این حال، FPGA ها برای پشتیبانی از همه این امکانات مختلف باید سیم های داخلی زیادی (به نام مسیریابی) داشته باشند، و تمام این مسیریابی هزینه و پیچیدگی را اضافه می کند. در بسیاری از موارد، در نهایت برای ویژگی‌ها و انعطاف‌پذیری اضافی که به آن‌ها نیاز ندارید، هزینه بیشتری می‌پردازید.

 

یکی دیگر از عوامل موثر در هزینه، کمیت است. اگر 10 میلیون میکروکنترلر بخرید که در زمینه لوازم الکترونیکی مصرفی غیرواقعی نیست، هزینه کمتری برای هر تراشه نسبت به خرید 100000 دستگاه خواهید پرداخت. در همین حال، FPGA ها معمولاً در مقادیر نسبتاً کم تولید و فروخته می شوند، بنابراین قیمت آنها برای هر واحد بیشتر است.

این یک وضعیت کمی مرغ و تخم مرغ است، که در آن FPGA ها اگر تعداد بیشتری از آنها وجود داشته باشد، می توانند ارزان تر باشند، اما برای اینکه تعداد آنها بیشتر باشد، باید هزینه کمتری داشته باشند. اگر هزینه ها مانند میکروکنترلرها بود، آیا FPGA های بیشتری استفاده می شد؟ من فکر می‌کنم احتمال دارد که وجود داشته باشد، اما استفاده از FPGAها نیز پیچیده‌تر است، بنابراین علیه آنها نیز کار می‌کند.

 

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

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

اگرچه برخی از بلوک‌های IP برای شروع شما وجود دارد، اما اکثر دستگاه‌ها منطقی قابل برنامه‌ریزی هستند – همان لوح خالی که در مورد آن صحبت کردیم – که باید خودتان آن را طراحی کنید. نوشتن تمام کدها برای انجام کارهایی که نیاز دارید نیز در زبانی مانند Verilog یا VHDL نسبت به زبان C که معمولاً برای برنامه‌نویسی میکروکنترلرها استفاده می‌شود، بیشتر طول می‌کشد.

با C، در سطح بالاتری کد می نویسید، بنابراین می توانید با یک خط کارهای بیشتری انجام دهید.

با Verilog و VHDL شما در سطح بسیار پایین تری می نویسید:

گیت ها و سیم های جداگانه به معنای واقعی کلمه با کد شما ایجاد می شوند.

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

این امر پیچیدگی می‌افزاید، که زمان را افزایش می‌دهد و هزینه‌ها را نیز افزایش می‌دهد.

مهندسان ساده ترین راه حل را می خواهند، و اغلب یک میکروکنترلر ساده تر از یک FPGA است.

 

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

 

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

وقتی می گویم سرعت، منظورم دو چیز است: پهنای باند و محاسبات.

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

 

به عنوان مثال، هنگام رانندگی با نمایشگرهای 4K ممکن است مفید باشد. FPGA ها اغلب در سخت افزارهای ویرایش ویدیو استفاده می شوند که به پهنای باند بسیار زیادی برای همگام شدن با جریان داده ها نیاز دارند. پهنای باند بالای آن‌ها به آن‌ها اجازه می‌دهد تا حجم عظیمی از داده‌ها را از رابط‌های خارجی مختلف (USB-C، اترنت، ADC، حافظه‌ها و موارد دیگر) با سرعت بسیار سریع منتقل کنند.

 

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

fpga faster than micro

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

اگر طراحی شما نیازهای عجیب و غریب خاصی دارد – مثلاً اگر به 16 رابط ADC نیاز دارد – ممکن است هیچ میکروکنترلری در دنیا وجود نداشته باشد که نیازهای شما را برآورده کند.

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

 

هنگامی که شما یک مشکل مهندسی دارید، باید بهترین ابزار ممکن را برای حل آن انتخاب کنید.

اغلب یک میکروکنترلر بسیار خوب کار می کند، اما گاهی اوقات به دلیل مشکلات سرعت یا انعطاف پذیری کار نمی کند.

در این شرایط، یک FPGA کاندیدای خوبی است.

بدون دیدگاه
اشتراک گذاری
اشتراک‌گذاری
با استفاده از روش‌های زیر می‌توانید این صفحه را با دوستان خود به اشتراک بگذارید.