به طور کلی بلوک های داخلی FPGA قابل برنامه ریزی هستند و با یک برنامه ریزی ساده می توان آن را به هر مدار دلخواه تغییر داد از این رو به این تراشه ها قابل برنامه ریزی می گویند. در ادامه با میکرو دیزاینر الکترونیک باشید تا با FPGA ها بیشتر آشنا شوید و در آینده در پروژه های خود استفاده کنید.
- آقا این FPGA چیه کلا ؟
- تفاوت FPGA با میکروکنترلر ؟
- زبان های برنامه نویسی FPGA ؟
- برای کار با FPGA به چه نرم افزار هایی نیاز است ؟
- مراحل طراحی تا پروگرام یک کد ساده FPGA چیه ؟
- شرکت های تولید کننده FPGA
- چند نمونه از کاربرد های FPGA
خب محکم بشینید میریم دنبال قطعات فرکانس بالا 🙂
آقا این FPGA چیه کلا ؟
FPGA مخفف Field Programmable Gate Arrays یعنی آرایه های گیت قابل برنامه ریزی است. که با متصل کردن بلوک های داخلی آن به هم ، می توان هر مدار دیجیتالی دلخواه را به وجود آورد به عنوان مثال با یک FPGA میتوان یک پردازنده یا Microproccessor طراحی کرد یا از آن میتوان برای پردازش تصویر ، صوت و سیگنال های دیگر بهره برد.
به طور کلی بلوک های داخلی FPGA قابل برنامه ریزی هستند و با یک برنامه ریزی ساده می توان آن را به هر مدار دلخواه تغییر داد از این رو به این تراشه ها قابل برنامه ریزی می گویند. در ادامه با میکرو دیزاینر الکترونیک باشید تا با FPGA ها بیشتر آشنا شوید و در آینده در پروژه های خود استفاده کنید.
تفاوت FPGA با میکروکنترلر ؟
یک میکروکنترلر از CPU ، تایمر ها ، پورت ها و حافظه های مختلفف مانند RAM ، FLASH و EEPROM تشکیل شده است که با پروگرام کردن آن CPU شروع به اجرای خط به خط برنامه نوشته شده می کند. در حالی که در FPGA هیچ CPU یی وجود ندارد و با نوشتن کد به یک FPGA در واقع ما سخت افزار مدار را طراحی میکنیم.
در یک FPGA بر خلاف میکروکنترلر قابلیت اجرای پردازش های موازی وجود دارد و این امر باعث بالا رفتن سرعت عملیات در یک FPGA می شود. همچنین یک FPGA به دلیل استفاده مستقیم از گیت ها و بلوک های منطقی و عملیاتی دیگر خیلی سریع تر از میکروکنترلر هست. به همین دلیل از FPGA ها برای ساخت سیستم های پرسرعت و حساس که دارای پیچیدگی های خاص هم می باشند استفاده می شود. در ادامه با میکرو دیزاینر الکترونیک باشید تا زبان برنامه نویسی یا توصیف سخت افزار برای کار با FPGA را برسی کنیم.
زبان های برنامه نویسی FPGA ؟
برای طراحی یک مدار با یک FPGA ما نیاز به یک زبان توصیف سخت افزار داریم که کدهای نوشته شده ی ما را به مدار مد نظر ما تبدیل کند. در واقع ما در یک FPGA با نوشتن برنامه مدار مورد نظرمان را طراحی می کنیم. تعداد زبان های توصیف سخت افزار زیاد است اما دو زبان VHDL و Verilog از همه مشهورتر هستند. مثلا VHDL مخفف کلمات Very high speed integrated Hardware Description Language میباشد که توسط شرکت IBM و Texas Insturment عرضه شده است.
مراحل طراحی تا پروگرام یک کد ساده FPGA چیه ؟
برای پیاده سازی یک طرح یا سیستم روی یک FPGA ابتدا مدار را به بلوک(مدول)های کوچک تقسیم می کنند و سپس به توصیف آنها و نحوه اتصال شان به یکدیگر می پردازند و به این ترتیب بعد از اتمام این مراحل کدهای مربوط به مدار اصلی آماده می شوند.(بازهم تاکید می کنم در واقع کدها همان سخت افزار را طراحی می کنند.)که به این مرحله ، مرحله Design Entry می گویند.
بعد از اتمام این مرحله نوبت به شبیه سازی برنامه میرسد و بعد از اطمینان از عملکرد صحیح مدار ، مرحله Synthesis آغاز می شود که در این مرحله کد های نوشته شده به شماتیک مدار تبدیل می شود(در شماتیک از گیت ها و دیگر عناصر دیجیتال مانند مالتی پلکسر ، جمع کننده و غیره استفاده می شود ).سپس فایل خروجی که از ابزار سنتز گرفته می شود به ابزار Implement داده می شود. در این مرحله شماتیکی که از مرحله سنتز به وجود آمده است به ترکیبی از المان های موجود در داخل FPGA تبدیل شده و سپس در جای مناسب در داخل FPGA قرار داده می شوند ، که به این مرحله Placement می گویند.
و بعد از این المان ها عمل سیم کشی و اتصال آغاز می شود که به این مرحله ، مرحله ی Routing می گویند. و بعد از این مرحله فایلی با پسوند bit تولید می شود که ما می توانیم توسط این فایل bit خود FPGA ، و یا تبدیل آن به فایل های دیگر و ROM متصل به FPGA را پروگرام کنیم.
برای کار با FPGA به چه نرم افزار هایی نیاز است ؟
نرم افزار هایی مانند LVD ، Modelsim برای شبیه سازی و نرم افزار هایی مانند Sinplify ، FPGA Express برای سنتز می توانند مورد استفاده قرار بگیرند. البته در طراحی با FPGA نرم افزار های دیگری هم هستند که شرکت های تولید کننده FPGA برای راحتی کار با محصولات خودشان ارائه می دهند که مورد استفاده کاربران قرار می گیرند.
شرکت های تولید کننده FPGA
شرکت های Xilinx ، Altera ، Actel ، Lattice ، Quick Logic و غیره تولید کننده FPGA هستند که بین آنها محصولات شرکت های Xilinx و Altera شهرت بیشتری دارند.
چند نمونه از کاربرد های FPGA
همانطور که قبلا اشاره شد کاربرد FPGA ها معمولا در مدارات پیچیده دیجیتالی که از پیچیدگی ، سرعت ، حساسیت و دقت بالایی برخوردار می باشند ، است . بنابراین عمده کاربرد های FPGA بیشتر در شبکه ها ، مدارات مخابراتی ، پردازش صوت و تصویر ، انجام مراحل تست و راه اندازی ASIC ها و در جاهایی که تولید تراشه ASIC مقرون به صرفه نیست ، ار FPGA استفاده می شود. همچنین سرعت ، دقت ، پایداری و امنیت FPGA ها باعث شده که آنها به طور وسیعی در صنایع نظامی ، پزشکی و صنعتی برای خود پیدا کنند. در صنایع نظامی از FPGA ها در سیستم های رادار ، رمزنگاری و در پزشکی در رادیولوژی ها و پردازش تصویر استفاده می شود.
چگونه FPGA یاد بگیریم ؟
FPGA ها بر خلاف میکروکنترلرها منبع فارسی چندانی ندارند و برای یادگیری آنها می توان از User Guide های مخصوص هر FPGA که توسط شرکت های تولید کننده ارائه می شود استفاده شود. که در سطح حرفه ای این هم خودش داستانی داره ^_^ ممنون که تا اینجای آموزش میکرو دیزاینر الکترونیک را دنبال کردید. در ادامه فایل های و فیلم های جالبی را برای یادگیری شما آماده کرده ایم که در نوشته های بعدی قابل دانلود خواهند بود.
لطفا اگر نظری داشتین در قسمت نظرات مطرح کنید و همچنین در ادامه توصیه میکنیم آموزش FPGA و Verilog برای تازه کارها! را هم مطالعه کنید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
از مطالب مفیدت ممنون آقا میلاد. امیدوارم انشاءالله هرجا که هستی انشاءالله همیشه موفق.و سربلند باشی.
besiar ali
website khubi darin
enshala dar tak tak marahel zendegi movafagh bashin
از مطلبای خوب وو بدر بخورتون واقعا ممنون واقعا هم اموزشی بوود هم اکادمیک
سلام. بسیار ممنونم از کارتون
خیلی کار ارزشمند انجام می دهید
سلام ممنون از سایت و مطالب خوبتون
یه سوال داشتم ، این دستگاههای antminer Asic که برای استخراج ارزهای دیجیتال ساخته می شوند از همین روشها استفاده می کنند ؟ اگه از این روش بهره می برند امکانش هست ما خودمون از این دستگاهها بسازیم ؟
سلام ، بله میشه
یک پروژه اپن سورس ماینر بیت کوین با FPGA هم روی گیت هاب هست یک نگاهی بندازید.
عنوانش هم اینه : Open Source FPGA Bitcoin Miner
لینک پروژه
مطلبی که گذاشتید خیلی عالی و با جزئیات بود.
تشکر از شما.
سلام، خیلی خوشحالیم که براتون مفید واقع شده.
سلام
خیلی عالی بود
ممنون
ممنون بابت زحمات تون
سلام کسانی که fpga کار می کنن فقط روی کد نویسی و الگوریتم های آن تمرکز می کنن و یا درگیر مسائل دیگری مثل طراحی پی سی بی و کار با آی سی های جانبی نیز می شوند؟
سلام، بستگی به شرکتی که کار میکنید داره. بعضی شرکت ها خیلی بزرگ هستن و معمولا به نیروهای خیلی تخصصی نیاز دارن که فقط مثلا FPGA کار کته. ولی بعضی شکرت ها کوچک هستن و نیاز است شخص همه چیز را بلد باشه. ولی کلا هر متخصص حرفه ای کلیت داستان را در اکثر اینها بلد هستن.
در لینک زیر یکسری آموزش خوب در مورد طراحی مدارهای فرکانس بالا هست که بنظرم مهمه بدونید:
https://melec.ir/high-speed-circuit-board-pcb-design
و در مورد خود مدارچاپی هم لینک زیر را ببنید:
https://melec.ir/category/electronic-tutorial/pcb