مراحل طراحی تا پروگرام یک کد ساده FPGA چیه ؟
با افزایش محبوبیت میکروکنترلر ها، مهندسان بیشتر از میکروکنترلرها استفاده می کنند وحتی با آموزش FPGA میتوانند به درامد های زیادی برسند. میکروکنترلر ها به دلیل ارزان بودن، پشتیبانی خوب، در دسترس بودن آسان، اجتماع بزرگ، تطبیق پذیری، برنامه نویسی و غیره بر FPGA مسلط شده اند. اما غیر از این ریزپردازنده ها دارای محدودیت هایی مانند دستورالعمل های تنظیم شده، اجرای پی در پی برنامه ها (پردازش متوالی)، عدم انعطاف پذیری و قابلیت استفاده مجدد و غیره هستند. با این وجود FPGA می تواند بر این محدودیت ها غلبه کند زیرا FPGA ها به صورت موازی برنامه ها را اجرا می کنند و قابل انعطاف و قابل استفاده مجدد هستند و می توانند برای کارهای مختلف بارها و بارها دوباره برنامه ریزی شوند.
معنی FPGA یک آرایه گیت قابل برنامه ریزی (Field-Programmable Gate Array) یک تراشه سیلیکونی مدار مجتمع است که دارای آرایه ای از گیت های منطقی است و این آرایه را می توان در این زمینه برنامه ریزی کرد، یعنی کاربر می تواند پیکربندی های موجود را با تنظیمات جدید تعریف شده خود بازنویسی کند و مدار دیجیتال خود را در این زمینه بسازد. FPGA ها را می توان به عنوان صفحه خالی در نظر گرفت. FPGA ها به خودی خود کاری انجام نمی دهند، در حالی که ساختن یک فایل پیکربندی که معمولاً یک bit file برای FPGA نامیده می شود، به عهده طراحان است. FPGA پس از بارگذاری در یک فایل بیتی مانند مدار دیجیتال عمل خواهد کرد.
حالی که در میکروکنترلرها، این مورد وجود ندارد زیرا میکروکنترلرها نمی توانند در این زمینه برنامه ریزی یا بازسازی شوند. کاربر نه مجاز به بازنویسی تنظیمات موجود است و نه می تواند هیچ مدار دیجیتالی در زمینه ایجاد کند. برنامه ریزی میکروکنترلرها آسان است و اجتماع نیز گسترده است. میکروکنترلرها مینی کامپیوترهای سفارشی هستند که به شکل IC در می آیند، در حالی که FPGA ها فقط شامل بلوک های منطقی هستند که می توانند دوباره از طریق برق سیم کشی شوند. همچنین از نظر میکروکنترلرها، انرژی کمتری نسبت به FPGA مصرف می کنند. FPGA بسیار پرهزینه شناخته شده است و هنگام ساخت هر دستگاهی به هزینه بیشتری نسبت به میکروکنترلر نیاز دارد. در حالی که میکروکنترلرها برای برنامه های خاص به راحتی ساخته شده اند، تنظیم FPGA بسیار بیشتر زمان می برد.
بلوک منطقی قابل تنظیم (CLB) : اینها سلولهای اساسی FPGA هستند. شامل یک ژنراتور عملکرد 8 بیتی، دو ژنراتور عملکرد 16 بیتی، دو رجیستر (فلیپ فلاپ یا قفل) و کنترل های مسیریابی قابل برنامه ریزی مجدد (مالتی پلکسر) هستند. CLB ها برای اجرای سایر عملکردها و ماکروهای طراحی شده اعمال می شوند. هر CLB ورودی هایی در هر طرف دارد که باعث انعطاف پذیری برای نقشه برداری و تقسیم بندی منطق می شود.
پد های I/O یا بلوک ها : پد های ورودی / خروجی برای وسایل جانبی بیرون برای دسترسی به عملکردهای FPGA استفاده می شود و همچنین با استفاده از آن، پد های ورودی / خروجی، می تواند برای برنامه های مختلف با استفاده از وسایل جانبی مختلف با FPGA ارتباط برقرار کند.
سیم های اتصال / سوئیچ ماتریس : سوئیچ ماتریکس در FPGA برای متصل کردن سیمهای اتصال بلند و کوتاه به یکدیگر، در ترکیب منعطف استفاده می شود. همچنین شامل ترانزیستورهایی برای روشن یا خاموش کردن اتصالات بین خطوط مختلف است.
این FPGA چیه کلا ؟
FPGA مخفف Field Programmable Gate Arrays یعنی آرایه های گیت قابل برنامه ریزی است. که با متصل کردن بلوک های داخلی آن به هم ، می توان هر مدار دیجیتالی دلخواه را به وجود آورد به عنوان مثال با یک FPGA میتوان یک پردازنده یا Microproccessor طراحی کرد یا از آن میتوان برای پردازش تصویر ، صوت و سیگنال های دیگر بهره برد.به طور کلی بلوک های داخلی FPGA قابل برنامه ریزی هستند و با یک برنامه ریزی ساده می توان آن را به هر مدار دلخواه تغییر داد از این رو به این تراشه ها قابل برنامه ریزی می گویند. در ادامه با میکرو دیزاینر الکترونیک باشید تا با FPGA ها بیشتر آشنا شوید و در آینده در پروژه های خود استفاده کنید جهت آموزش FPGA میتوانید به صفحه ما مراجعه کنید.
کاربرد FPGA چیست
همانطور که در بالا ذکر شد، میکروکنترلرها محدودیت هایی دارند و نمی توان از آنها برای انجام اعمالی به طور موازی استفاده کرد زیرا میکروکنترلر و ریزپردازنده ها با اجرای پی در پی برنامه ها کار می کنند که در بعضی از برنامه ها کمی کند می شود، در این مورد FPGA یک مزیت دارد و می تواند به طور موثر مورد استفاده قرار گیرد. همچنین میکروکنترلرها می توانند کارهای محدودی را انجام دهند زیرا آنها توام با دستورالعمل ها و مدارهایشان هستند. یک برنامه نویس باید هنگام ایجاد کد، محدودیت ها را رعایت کند. بنابراین در این موارد FPGA ها نیز دارای مزیت هستند.
با این حال، در مورد میکروکنترلرها، پردازنده از یک کد به کد دیگر تغییر می کند تا به سطحی از موازات برسد. نوشتن کدها در میکروکنترلرها نسبت به FPGA راحت تر است. قابلیت پردازش موازی FPGA ها؛ شما را قادر می سازد تا با استفاده از ماشین های حالت محدود (FSM) وقفه ها را به صورتی کارآمد کنترل کنید.در مورد میکروکنترلرها، باید مدت زمان صرف شده توسط ISR را برای رفع وقفه در نظر بگیرید. فقط با برنامه ریزی مجدد FPGA می توانید آن را به راحتی سیم کشی کنید. با روشن شدن برق، پیکربندی موجود در 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) را در آزمایش حلقه و شبیه سازی مشترک برای دیدن تفاوت بین الگوریتم اصلی و الگوریتم سخت افزار پیاده سازی شده، که به کاوش فضای طراحی کمک می کند، انجام می دهد.