هدف از دوره آموزشی FPGA چیست؟
معنی FPGA یک آرایه گیت قابل برنامه ریزی (Field-Programmable Gate Array) یک تراشه سیلیکونی مدار مجتمع است که دارای آرایه ای از گیت های منطقی است و این آرایه را می توان در این زمینه برنامه ریزی کرد، یعنی کاربر می تواند پیکربندی های موجود را با تنظیمات جدید تعریف شده خود بازنویسی کند و مدار دیجیتال خود را در این زمینه بسازد. FPGA ها را می توان به عنوان صفحه خالی در نظر گرفت. FPGA ها به خودی خود کاری انجام نمی دهند، در حالی که ساختن یک فایل پیکربندی که معمولاً یک bit file برای FPGA نامیده می شود، به عهده طراحان است.
حالی که در میکروکنترلرها، این مورد وجود ندارد زیرا میکروکنترلرها نمی توانند در این زمینه برنامه ریزی یا بازسازی شوند. کاربر نه مجاز به بازنویسی تنظیمات موجود است و نه می تواند هیچ مدار دیجیتالی در زمینه ایجاد کند. برنامه ریزی میکروکنترلرها آسان است و اجتماع نیز گسترده است. میکروکنترلرها مینی کامپیوترهای سفارشی هستند که به شکل IC در می آیند، در حالی که FPGA ها فقط شامل بلوک های منطقی هستند که می توانند دوباره از طریق برق سیم کشی شوند.
همچنین از نظر میکروکنترلرها، انرژی کمتری نسبت به FPGA مصرف می کنند. FPGA بسیار پرهزینه شناخته شده است و هنگام ساخت هر دستگاهی به هزینه بیشتری نسبت به میکروکنترلر نیاز دارد. در حالی که میکروکنترلرها برای برنامه های خاص به راحتی ساخته شده اند، تنظیم FPGA بسیار بیشتر زمان می برد.
یک FPGA دارای ساختار منظمی از سلولهای منطقی یا ماژولها و پیوندها است که تحت کنترل کامل توسعه دهندگان و طراحان است. FPGA عمدتا با سه بلوک اصلی مانند بلوک منطقی قابل تنظیم (CLB)، بلوک های ورودی خروجی یا پد و سیم های اتصال / سوئیچ ماتریس ساخته شده است. در مورد هر بلوک به طور خلاصه در زیر بحث خواهد شد.
همانطور که در بالا ذکر شد، میکروکنترلرها محدودیت هایی دارند و نمی توان از آنها برای انجام اعمالی به طور موازی استفاده کرد زیرا میکروکنترلر و ریزپردازنده ها با اجرای پی در پی برنامه ها کار می کنند که در بعضی از برنامه ها کمی کند می شود، در این مورد FPGA یک مزیت دارد و می تواند به طور موثر مورد استفاده قرار گیرد.
همچنین میکروکنترلرها می توانند کارهای محدودی را انجام دهند زیرا آنها توام با دستورالعمل ها و مدارهایشان هستند. یک برنامه نویس باید هنگام ایجاد کد، محدودیت ها را رعایت کند. بنابراین در این موارد FPGA ها نیز دارای مزیت هستند.
با این حال، در مورد میکروکنترلرها، پردازنده از یک کد به کد دیگر تغییر می کند تا به سطحی از موازات برسد. نوشتن کدها در میکروکنترلرها نسبت به FPGA راحت تر است. قابلیت پردازش موازی FPGA ها؛ شما را قادر می سازد تا با استفاده از ماشین های حالت محدود (FSM) وقفه ها را به صورتی کارآمد کنترل کنید.
در مورد میکروکنترلرها، باید مدت زمان صرف شده توسط ISR را برای رفع وقفه در نظر بگیرید. فقط با برنامه ریزی مجدد FPGA می توانید آن را به راحتی سیم کشی کنید. با روشن شدن برق، پیکربندی موجود در FPGA روی سلولهای منطقی قابل تنظیم بارگذاری می شود.
برای برنامه ریزی مجدد FPGA نیازی به تغییر در سخت افزار نیست. FPGA ها برای پردازش سریع داده های موازی مناسب هستند و درجه بالایی از قابلیت تنظیم را دارند. با این حال، آنها همچنین اشکالاتی در عملکرد نمونه اولیه و پیچیدگی پیکربندی دارند. بنابراین، FPGA ها را می توان با این مزایا نسبت به میکروکنترلرها انتخاب کرد. بیایید برنامه نویسی FPGA را شروع کنیم و بیشتر بر برنامه نویسی FPGA تأکید کنیم.
برنامه نویسی FPGA توسط HDL ها (زبانهای توصیف سخت افزار) انجام می شود. در اینجا چندین HDL موجود است اما VHDL و Verilog به طور گسترده ای از HDL استفاده می کنند. حتی اگر شباهت زیادی بین کد HDL و زبان برنامه نویسی نرم افزار سطح بالا وجود دارد اما این دو تفاوت اساسی دارند.
کدهای نرم افزار دنباله ای از عملیات هستند و پردازش را به ترتیب انجام می دهند در حالی که کد HDL قیاسی است که از متن برای معرفی اجزا و ایجاد اتصالات با پردازش موازی استفاده می کند.
جریان سخت افزار و نرم افزار معمولی در بالا نشان داده شده است. جریان طراحی سخت افزار برای برنامه ریزی FPGA استفاده می شود در حالی که جریان طراحی نرم افزار برای برنامه ریزی میکروکنترلرها و ریز پردازنده های معمولی استفاده می شود. مراحل مهم مربوط به برنامه نویسی FPGA به شرح زیر است.
- سنتز (ترکیب) : اولین گام، ترکیبی است که کد HDL را می گیرد و به نت لیست ترجمه می کند که شرح متنی نمودار مدار یا شماتیک است.
- شبیه سازی : پس از ترکیب، مرحله بعدی شامل شبیه سازی است که برای بررسی اینکه آیا طراحی مشخص شده در نت لیست به درستی کار می کند، استفاده می شود.
- تبدیل نت لیست به قالب باینری : پس از تأیید طرح، مورد بعدی تبدیل نت لیست به قالب باینری است. مولفه ها و اتصالات به CLB نگاشته می شوند و طراحی ترسیم و مسیریابی شده می شود تا بر روی FPGA هدف قرار گیرد (یعنی مکان و مسیر).
- اجرای شبیه سازی دوم : برای دیدن کیفیت طراحی، شبیه سازی دوم انجام می شود.
- ایجاد فایل بیت : سرانجام یک فایل بیت برای بارگذاری طرح بر روی FPGA تولید می شود (فایل .bit یک فایل پیکربندی است که برای برنامه ریزی تمام منابع موجود در FPGA استفاده می شود).
- تأیید و رفع اشکال : سرانجام، درحالیکه طراحی درحال اجرا در FPGA است، با استفاده از ابزارهای مختلف ثبت و اشکال زدایی شده است. بر خلاف جریان طراحی سخت افزار، در مرحله طراحی نرم افزار نیازی به مرحله شبیه سازی قبل از اجرا نیست. همچنین، زمان کامپایل برای نرم افزار، بسیار کمتر از زمان پیاده سازی برای طراحی سخت افزار است، بنابراین کامپایل مجدد کد و انجام اشکال زدایی به عنوان یک فرایند تکراری است.
زبان ها و ابزار های برنامه نویسی FPGA
همانطور که در بالا ذکر شد، چندین زبان برنامه نویسی و ابزار برای برنامه نویسی و اشکال زدایی FPGA در دسترس است، اما بیشترین استفاده آنها از VHDL و Verilog است. VHDL و Verilog کاملاً تثبیت شده اند و از HDL های گسترده ای پشتیبانی می کنند.
از نظر برنامه FPGA، لازم است عملکرد برنامه نویسی نرم افزار را فراموش کرده و در مورد گیت ها و مدارهای منطقی برای پیاده سازی عملکردی که شخص می خواهد روی FPGA ها اجرا کند، فکر کند.
ابزارهای توسعه دهنده FPGA زیادی وجود دارند مانند :
- VHDL/Verilog : هر دو زبان، ساختارهایی را برای توصیف ماهیت ذاتی موازی توسعه FPGA / ASIC فراهم می کنند. به دلیل استفاده اولیه آنها برای توصیف رفتار مدارهای پیشین از تولید ابزار سنتز (ترکیب)، این زبان ها از نیمکت های تست برای آزمایش طرح در حال اجرا نیز پشتیبانی می کنند.
- LabVIEW FPGA : لب ویو یک زبان گرافیکی است که یک روش کاملاً متفاوت برنامه نویسی FPGA را ارائه می دهد. LabVIEW FPGA مجموعه FPGA است که از یک گزینه مبتنی بر ابر استفاده می کند، که به طور قابل توجهی سرعت تدوین را افزایش می دهد.
- MATLAB : متلب زبانی است که می تواند نقشی حیاتی داشته باشد و باید مورد مطالعه قرار گیرد. MATLAB به طور کلی برای تولید فیلترهایی برای پردازش سیگنال، توسعه الگوریتم های پردازش تصویر و تقریباً هر الگوریتم دیگری استفاده می شود. اما جدا از این، می توان با استفاده از رمزگذار HDL از مدل MATLAB به FPGA رسید. قابلیت ردیابی این امکان را دارد که برنامه هایی با یکپارچگی بالا را می توان با استفاده از این روش توسعه داد. رمزگذار HDL امکان انجام سخت افزار (FPGA) را در آزمایش حلقه و شبیه سازی مشترک برای دیدن تفاوت بین الگوریتم اصلی و الگوریتم سخت افزار پیاده سازی شده، که به کاوش فضای طراحی کمک می کند، انجام می دهد.
بطور کل یکی از قدرتمندترین تراشههایی که امروزه در کاربردهای مختلف الکترونیکی، مخابراتی و کنترل مورد استفاده شرکت های بزرگ دنیا و ایران است، تراشههای FPGA است که با فراهم آوردن بسترهایی برای پردازش سیگنال، قابلیتهای مورد استفاده در پردازندهها و… در بسیاری از کاربردها مورد استفاده قرار گرفتهاند.
این دوره آموزشی در ادامه مباحث دوره آموزش FPGA مقدماتی ارائه میشود. در دوره مقدماتی به مفاهیم اساسی مربوط به معماری FPGAها، مقایسه آنها با دیگر پردازندهها، ساختارهای برنامهنویسی موجود برای FPGAها، فرآیند شبیهسازی و پیادهسازی آنها پرداخته میشود و در دوره پیشرفته فرآیند مورد استفاده جهت اجرای محاسبات پردازشی، بهینهسازی کدها در پروژه های با نرخ بالا یا محدودیتهای سطح مصرفی یا توان مصرفی، روند کوانتیزاسیون و انکدینگ مورد استفاده در الگوریتمهای پردازشی و مباحث مربوط با هستههای پردازشی تشریح خواهند شد