توسط احمد ثقفی 

31 تیر, 1398

پیاده‌سازی میکروبلیز

آیا می‌دانستید در بسیاری از پیاده‌سازی‌ها، استفاده از یک میکروکنترلر در کنار FPGA می‌تواند باعث افزایش سرعت ساخت پروژه و کاهش هزینه آن شود؟

اما استفاده از یک میکروکنترلر بر روی برد حاوی FPGA خود می‌تواند مشکلاتی ایجاد کند!

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

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

خبر خوب این است که چنین امکانی وجود دارد.

در این برنامه، نحوه انجام این کار و ابزارهای مورد نیاز برای آن را به شما معرفی می‌کنم.

More...

در تمام FPGAهای شرکت Xilinx شما می‌توانید در صورت تمایل، یک میکروکنترلر ویژه را در کنار بقیه مدارتان را پیاده‌سازی کنید.

اسم این میکروکنترلر ویژه، میکروبلیز (MicroBlaze) است.

میکروبلیز در حقیقت میکروکنترلر مخصوص شرکت Xilinx است که مانند یک IP می‌تواند در کنار طرح اصلی شما استفاده شود.

برای آشنایی با نحوه استفاده از IPها در نرم‌افزار ISE این برنامه ویدئویی را ببینید...

اما دقیقا چرا در خیلی از موارد، استفاده از یک میکروکنترلر در کنار FPGA می‌تواند در فرآیند طراحی و پیاده‌سازی به ما کمک کند؟

و چرا در عمده موارد، استفاده از میکروبلیز می‌تواند بهترین انتخاب باشد؟

ساختار سخت‌افزاری میکروبلیز چه امکاناتی را برای ما ایجاد می‌کند؟

چه ابزاری در مجموعه ISE برای کمک به فرآیند پیاده‌سازی یک سیستم شامل میکروبلیز وجود دارد؟

اینها سوالاتی است که به همگی آنها در این برنامه ویدئویی پاسخ داده‌ام.

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

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

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

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

ویدئو یا متن؟

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

برای دانلود نسخه با کیفیت این ویدئو، روی دکمه زیر کلیک کنید:

چگونه می‌توانید از میکروکنترلر میکروبلیز در کنار طرحتان استفاده کنید تا مداری منعطف‌تر داشته باشید؟

میکروبلیز، میکروکنترلری مخصوص، برای استفاده در FPGA‌های شرکت Xilinx است.

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

معماری این میکروکنترلر از نوع RISC و ۳۲‌بیتی است.

شما می‌توانید میکروبلیز را به‌صورت soft core در تمام FPGA‌های شرکت Xilinx استفاده کنید.

مفاهیم Soft Core و Hard Core

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

در این صورت، این ماجول به‌صورت سخت‌افزار آماده در FPGA قرار دارد.

اما اگر این ماجول توسط کاربر و به‌کمک منابع سخت‌افزاری موجود در FPGA (مانند LUT‌ها، فلیپ‌فلاپ‌ها و ...) ساخته شود، به آن soft core گفته می‌شود.

نکته‌ای که وجود دارد این است که میکروکنترلر میکروبلیز، در FPGA‌های شرکت Xilinx به‌صورت soft core ایجاد می‌شود.

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

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

اما مزیت وجود میکروبلیز به‌صورت soft core چیست؟

مزیت Soft Core بودن میکروبلیز

اولین مزیت soft core میکروبلیز این است که برای استفاده از آن نیازی به صرف هزینه نیست.

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

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

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

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

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

اگر میکروبلیز به‌صورت hard core بود، نمی‌توانستید بلوک‌هایی را که نیاز نداشتید حذف کنید و منابع FPGA را برای مصارف دیگر آزاد کنید. این موضوع، مزیت دیگری برای soft core بودن میکروبلیز است.

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

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

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

این موارد باعث پیاده‌سازی بهینه میکروبلیز خواهد شد.

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

اما دلیل استفاده از یک میکروکنترلر در کنار FPGA چیست؟

چرا در کنار FPGA از یک میکروکنترلر استفاده می‌کنیم؟

برای این کار دلایل مختلفی وجود دارد.

یک دلیل این است که پیاده‌سازی بخش‌های کنترلی در FPGA مشکل است.

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

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

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

در این مثال، اصل مدار، بخش پردازشی آن است؛ اما ما همیشه نیاز به یک بخش کنترلی نیز داریم که ترتیب انجام بخش‌های مختلف و زمان‌بندی آن‌ها را کنترل کند.

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

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

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

به‌طور کلی، فرایند پیاده‌سازی در FPGA، نسبت به کارهای نرم‌افزاری مانند کار با پردازنده‌هایی چون AVR ،ARM و DSP یا زمانی که در کامپیوتر شخصی خود برنامه‌ای می‌نویسید، پیچیده‌تر است و به زمان بیشتری نیاز دارد.

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

نکته بعدی، پیاده‌سازی اینترفیس‌ها در FPGA است. شما هر نوع اینترفیسی را می‌توانید در FPGA پیاده‌سازی کنید.

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

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

اما چرا از میکروکنترلر میکروبلیز استفاده می‌کنیم؟

چرا از میکروکنترلر میکروبلیز استفاده می‌کنیم؟

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

همان‌طور که گفتم، میکروکنترلر میکروبلیز را می‌توان درون FPGA پیاده‌سازی کرد؛ اگر ما آن را در اختیار نداشتیم، مجبور بودیم از یک میکروکنترلر جانبی مانند ARM ،AVR یا ... روی بُرد و در کنار تراشه FPGA استفاده کنیم.

این کار معایبی به دنبال دارد.

معایب استفاده از میکروکنترلر جانبی در کنار FPGA

معایب استفاده از یک میکروکنترلر جانبی در کنار FPGA به‌صورت زیر است:

  • صرف هزینه برای خرید میکروکنترلر جانبی
  • اشغال مقداری از فضای بُرد
  • اشغال پایه‌هایی از FPGA برای ارتباط با میکروکنترلر جانبی

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

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

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

همچنین، IP‌های زیادی در نرم‌افزار ISE وجود دارد که می‌توان از آن‌ها در کنار میکروبلیز استفاده کرد؛ مثلاً، برای ارتباطات RS232 ،LAN و بسیاری از پروتکل‌های دیگر ماجول‌های آماده وجود دارد.

می‌توان به‌جای کدنویسی برای پیاده‌سازی این پروتکل‌ها، آن‌ها را به‌راحتی به سخت‌افزار میکروبلیز اضافه کرد.

در نرم‌افزار ISE، امکانات زیادی برای استفاده راحت و سریع از میکروبلیز وجود دارد که در ادامه مقاله درباره آن‌ها صحبت خواهم کرد.

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

پلتفرم میکروبلیز

میکروبلیز، فقط یک پردازنده یا یک هسته پردازشی نیست؛ بلکه همان‌طور که در شکل زیر می‌بینید، علاوه بر هسته پردازشی، دارای ماجول‌ها یا اصطلاحاً پریفرال‌هایی است.

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

نمایش ساده شده پلتفرم میکروبلیز

نمایش ساده شده پلتفرم میکروبلیز

برای مثال، در شکل بالا، در کنار هسته پردازشی میکروبلیز، یک حافظه RAM داریم. اما چرا به حافظه RAM نیاز داریم؟

برای استفاده از میکروبلیز باید برنامه‌ای بنویسیم. این برنامه باید در حافظه‌ای ذخیره شود. محل ذخیره‌سازی آن یک حافظه RAM است.

برای پیاده‌سازی این حافظه RAM، از یک یا چند Block RAM درون FPGA استفاده می‌کنیم؛ زیرا قرار است میکروبلیز را درون FPGA پیاده‌سازی کنیم.

البته، این امکان وجود دارد که برنامه‌ای که برای میکروبلیز نوشته‌ایم را درون یک حافظه RAM خارجی ذخیره کنیم.

مثلاً، می‌توانیم از حافظه DDR2 یا DDR3 استفاده کنیم و آن را با میکروبلیز interface کنیم.

در صورتی که برنامه نوشته شده برای میکروبلیز، به فضای زیادی نیاز داشته باشد، از حافظه RAM خارجی استفاده می‌کنیم.

ممکن است نیاز باشد که در طرحتان از چند پریفرال، مانند پریفرال RS232 یا LAN استفاده کنید.

اگر از میکروبلیز استفاده کنید، می‌توانید به‌راحتی این پریفرال‌ها و IP‌ها را در طرحتان به‌کار ببرید.

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

قاعدتاً برای کارکرد میکروکنترلر و پریفرال‌های آن به کلاک نیاز است.

همچنین، برای ریست کردن بخش‌های مختلف، به بخش ریست نیاز داریم.

مجموعه پردازنده میکروبلیز و ماجول‌های مختلف درون آن را پلتفرم میکروبلیز می‌نامند.

در شکل زیر پلتفرم کامل‌تری از یک میکروبلیز را مشاهده می‌کنید:

یک پلتفرم کامل‌تر از میکروبلیز

یک پلتفرم کامل‌تر از میکروبلیز

البته این پلتفرم نیز بسیار بسیار ساده شده است؛ اما اطلاعات بیشتری نسبت به پلتفرم قبلی دارد.

اکنون توضیحات بیشتری را درباره این پلتفرم به شما ارائه می‌دهم.

در مرکز پلتفرم، پردازنده میکروبلیز را مشاهده می‌کنید. همچنین، چند Block RAM به این میکروبلیز متصل شده‌اند؛ در یکی از این بلوک‌ها، حرف I و در دیگری، حرف D نوشته شده است.

حافظه‌ای که در آن حرف I را نوشته‌ایم، حافظه instructions یا دستورات است؛ برنامه‌ای را که برای میکروبلیز نوشته‌اید (مثلاً به زبان C) در این حافظه ذخیره شده و در میکروبلیز اجرا می‌شود.

حافظه‌ای که در آن حرف D را نوشته‌ایم، حافظه data است؛ یعنی دیتاهایی که میکروبلیز روی آن‌ها پردازش انجام می‌دهد در این حافظه ذخیره می‌شود.

برای اتصال این حافظه‌ها به میکروبلیز، از باس‌های خاصی به‌نام LMB استفاده می‌شود؛ LMB مخفف عبارت Local Memory Bus است.

اگر بخواهیم یک حافظه RAM داخلی یا BRAM را به میکروبلیز متصل کنیم، از باس LMB استفاده می‌کنیم.

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

نوع دیگری از باس، AXI4 نام دارد؛ باس AXI4، یک استاندار انتقال دیتا است که توسط شرکتی که پردازنده ARM را ارائه داده معرفی شده است.

چندین سال است که شرکت Xilinx، استاندارد AXI4 را پذیرفته و در ارتباطات دیتای داخلی از آن استفاده می‌کند.

شرکت Xilinx، تراشه‌ای به‌نام Zynq تولید می‌کند؛ در این تراشه، یک پردازنده ARM وجود دارد. برای ارتباطات داخلی دیتا درون این میکروکنترلر ARM نیز از استاندارد AXI4 استفاده می‌شود.

همان‌طور که در تصویر پلتفرم میکروبلیز مشاهده می‌کنید، می‌توان از پریفرال RS232 (که در شکل با uart نشان داده شده است) استفاده کرد.

پریفرال دیگری که وجود دارد، gpio است؛ gpio، مخفف General Purpose IO است. به‌کمک gpio، می‌توانید ارتباطات ورودی و خروجی میکروبلیز را ایجاد کنید.

مثلاً، برای روشن و خاموش کردن LED یا خواندن dipswitch می‌توانید از gpio استفاده کنید.

همه این پریفرال‌ها را می‌توان با ارتباط AXI4 به FPGA متصل کرد.

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

اما به‌طور کلی، این باس‌ها می‌توانند امکانات بسیار جالبی برای ارتباط با میکروبلیز ایجاد کنند.

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

سیستم Embedded

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

این سیستم سخت‌افزاری-نرم‌افزاری، در یک سیستم بزرگتر قرار می‌گیرد. سیستم embedded، سیستم بزرگتر را کنترل می‌کند. همچنین، برخی از کارهای پردازشی آن را انجام می‌دهد.

وقتی در حال کار با میکروکنترلر میکروبلیز هستیم، در واقع، در حال طراحی یک سیستم embedded هستیم؛ زیرا هم بخش‌های سخت‌افزاری و هم بخش‌های نرم‌افزاری داریم.

بخش‌های اصلی میکروبلیز

میکروبلیز از دو بخش اصلی تشکیل شده است:

  • پلتفرم سخت‌افزاری
  • نرم‌افزار

پلتفرم سخت‌افزاری شامل پردازنده، حافظه‌ها، IP‌ها و ... می‌شود.

برای اینکه یک میکروکنترلر برای ما کاری انجام دهد، باید برای آن برنامه‌ای بنویسیم.

این برنامه، به‌کمک یک زبان برنامه‌نویسی نوشته می‌شود. ما برای میکروبلیز، برنامه‌ای به‌زبان C/C++ می‌نویسیم.

این برنامه را در حافظه دستورات (instructions memory) و حافظه داده (data memory) ذخیره می‌کنیم.

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

اما ابزار پیاده‌سازی میکروبلیز چیست؟ و چه نرم‌افزارهایی در این کار به ما کمک می‌کنند؟

ابزار پیاده‌سازی میکروبلیز

تمام مراحل پیاده‌سازی سخت‌افزار و نرم‌افزار میکروبلیز توسط ابزار EDK، از مجموعه نرم‌افزاری ISE انجام می‌شود.

عبارت EDK، مخفف Embedded Development Kit است.

اگر نرم‌افزار ISE روی کامپیوتر شما نصب شده باشد، این ابزار را در اختیار دارید.

ابزار EDK از دو بخش اصلی تشکیل می‌شود:

  • نرم‌افزار XPS که مخفف Xilinx Platform Studio است.
  • نرم‌افزار SDK که مخفف Software Development Kit است.

نرم‌افزار XPS، برای طراحی و پیاده‌سازی پلتفرم سخت‌افزاری میکروبلیز به‌کار می‌رود.

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

پس از ساخت بخش سخت‌افزاری، باید وارد نرم‌افزار SDK شوید.

نرم‌افزار SDK، برای طراحی و پیاده‌سازی نرم‌افزار میکروبلیز استفاده می‌شود. در این نرم‌افزار می‌توانید به زبان C یا C++ برنامه‌نویسی کنید.

سپس، آن برنامه را در حافظه‌های مخصوص میکروبلیز پراگرام می‌کنید.

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

مراحل پیاده‌سازی میکروبلیز

در این بخش از مقاله، ابتدا بخش سخت‌افزاری میکروبلیز را به‌کمک نرم‌افزار XPS ایجاد می‌کنیم و سپس، به‌سراغ بخش نرم‌افزاری در نرم‌افزار SDK می‌رویم.

پیاده‌سازی بخش سخت‌افزاری میکروبلیز

همان‌طور که در شکل زیر مشاهده می‌کنید، در نرم‌افزار ISE، یک پروژه به‌نام MicroBlaze_Test ساخته‌ام؛ در این پروژه ماجولی وجود ندارد:

نرم‌افزار ISE؛ مراحل ایجاد یک پلتفرم سخت‌افزاری

نرم‌افزار ISE؛ مراحل ایجاد یک پلتفرم سخت‌افزاری

توجه داشته باشید که در عمل، شما یک پروژه بزرگ دارید که آن را به‌کمک ماجول‌هایی (به‌زبان VHDL یا Verilog) و IP‌ها طراحی کرده‌اید؛ در این حالت، بر اساس نیاز پروژه قرار است از میکروکنترلر میکروبلیز در کنار پروژه اصلی استفاده کنید.

مرحله اول، ایجاد یک پلتفرم سخت‌افزاری است؛ برای این کار، مطابق شکل بالا، در قسمت Hierarchy کلیک‌راست کنید و گزینه New Source را انتخاب کنید.

 از بین گزینه‌هایی که در شکل زیر ملاحظه می‌کنید، گزینه Embedded Processor را انتخاب کنید:

نرم‌افزار ISE؛ مراحل ایجاد یک پلتفرم سخت‌افزاری

نرم‌افزار ISE؛ مراحل ایجاد یک پلتفرم سخت‌افزاری

برای source جدید، نامی انتخاب کنید؛ من نام MB_Core، به معنای هسته میکروبلیز را برای آن انتخاب کرده‌ام. سپس، دکمه Next را انتخاب کنید.

در پنجره بعدی، دکمه Finish را فشار دهید:

نرم‌افزار ISE؛ مراحل ایجاد یک پلتفرم سخت‌افزاری

نرم‌افزار ISE؛ مراحل ایجاد یک پلتفرم سخت‌افزاری

باید چند لحظه صبر کنید تا نرم‌افزار XPS از دل نرم‌افزار ISE اجرا شود.

اگر برای اولین بار، برای یک پروژه خاص نرم‌افزار XPS را باز کنیم، یک wizard به ما نشان داده می‌شود. این wizard، در طراحی پلتفرم سخت‌افزاری به ما کمک می‌کند. نام آن BSB، مخفف Base System Builder است.

همان‌طور که مشاهده می‌کنید، به محض باز شدن نرم‌افزار XPS، پیغامی ظاهر می‌شود؛ در این پیغام، نرم‌افزار می‌پرسد که آیا تمایل دارید که از BSB استفاده کنید. گزینه Yes را انتخاب کنید:

نرم‌افزار XPS؛ سوال درباره استفاده از wizard برای ایجاد یک پلتفرم سخت‌افزاری اولیه

نرم‌افزار XPS؛ سوال درباره استفاده از wizard، برای ایجاد یک پلتفرم سخت‌افزاری اولیه

با باز شدن wizard، می‌توانیم به‌کمک انجام تنظیماتی، یک پلتفرم سخت‌افزاری اولیه ایجاد کنیم.

در صفحه اول wizard، تنظیمات خاصی نداریم و می‌توانیم مانند شکل زیر گزینه OK را انتخاب کنیم:

نرم‌افزار XPS؛ استفاده از wizard برای ایجاد یک پلتفرم سخت‌افزاری اولیه

نرم‌افزار XPS؛ استفاده از wizard برای ایجاد یک پلتفرم سخت‌افزاری اولیه

مطابق شکل زیر، در صفحه دوم wizard، گزینه‌های زیادی وجود دارد؛ مثلاً می‌توانید فرکانس سیگنال کلاک سیستم را مشخص کنید:

نرم‌افزار XPS؛ استفاده از wizard برای ایجاد یک پلتفرم سخت‌افزاری اولیه

نرم‌افزار XPS؛ استفاده از wizard برای ایجاد یک پلتفرم سخت‌افزاری اولیه

من تنظیمات پیش‌فرض این صفحه را می‌پذیرم و گزینه Next را انتخاب می‌کنم.

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

نرم‌افزار XPS؛ استفاده از wizard برای ایجاد یک پلتفرم سخت‌افزاری اولیه

نرم‌افزار XPS؛ استفاده از wizard برای ایجاد یک پلتفرم سخت‌افزاری اولیه

پس از انجام تنظیمات، گزینه Finish را انتخاب کنید.

به این ترتیب، BSB مربوط به نرم‌افزار XPS، برای شما یک پلتفرم میکروبلیز پایه می‌سازد.

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

محیط نرم‌افزار XPS؛ بخش ارتباطات بین ماجول‌های مختلف پلتفرم سخت‌افزاری

محیط نرم‌افزار XPS؛ بخش ارتباطات بین ماجول‌های مختلف پلتفرم سخت‌افزاری

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

نرم‌افزار XPS؛ شماتیک مدار پلتفرم سخت‌افزاری

نرم‌افزار XPS؛ شماتیک مدار پلتفرم سخت‌افزاری

می‌توانید روی شماتیک Zoom کنید تا جزئیات بیشتری مشخص شود؛ برای مثال، در شکل زیر، بلوک میکروبلیز، axi4 و clock را مشاهده می‌کنید:

نرم‌افزار XPS؛ شماتیک مدار پلتفرم سخت‌افزاری

نرم‌افزار XPS؛ شماتیک مدار پلتفرم سخت‌افزاری

پس از ساخت پلتفرم پایه، می‌توانید از قسمت IP Catalog (سمت چپ تصویر بالا)، پریفرال‌ها و IP‌های موردنیازتان را به سیستم اضافه کنید.

نهایتاً، پس از تکمیل بخش سخت‌افزاری، از نرم‌افزار XPS خارج می‌شویم و دوباره به نرم‌افزار ISE بازمی‌گردیم.

همان‌طور که در شکل زیر مشاهده می‌کنید، اکنون ماجول جدیدی به‌نام MB_Core داریم:

نرم‌افزار ISE؛ ماجول میکروبلیز

این ماجول، در واقع همان میکروبلیز ما است. می‌توانید همانند رویه اضافه کردن IP به طرح، از ماجول MB_Core نیز استفاده کنید.

برای این کار، باید ماجول MB_Core را در طرحتان instant کنید.

پس از ایجاد بخش سخت‌افزاری، به‌سراغ طراحی نرم‌افزار می‌رویم.

ایجاد بخش نرم‌افزاری میکروبلیز

برنامه‌نویسی برای میکروبلیز را به‌کمک نرم‌افزار SDK انجام می‌دهیم.

برای اجرای نرم‌افزار SDK، مطابق شکل زیر، ابتدا روی ماجول MB_Core کلیک کنید؛ سپس از منوی Process، گزینه Export Hardware Design To SDK without Bitstream را انتخاب کنید:

باز کردن نرم‌افزار SDK از دل نرم‌افزار ISE

باز کردن نرم‌افزار SDK از دل نرم‌افزار ISE

البته اگر این ماجول را سنتز و پیاده‌سازی کرده بودیم، در منوی Process، شاهد گزینه دیگری با عنوان Export Hardware Design To SDK with Bitstream بودیم.

با انتخاب این گزینه، اطلاعات مربوط به پروژه به‌کمک Bitstream، از نرم‌افزار ISE به نرم‌افزار SDK منتقل می‌شود.

با باز شدن نرم‌افزار SDK، اولین پیامی که دریافت می‌کنیم، مربوط به تعیین محل ذخیره‌سازی اطلاعات پروژه است:

تعیین محل ذخیره‌سازی پروژه در نرم‌افزار SDK

تعیین محل ذخیره‌سازی پروژه در نرم‌افزار SDK

پس از انتخاب فولدر دلخواه، نرم‌افزار SDK، مطابق شکل زیر، اجرا می‌شود:

محیط نرم‌افزار SDK

محیط نرم‌افزار SDK

در این نرم‌افزار می‌توانید به زبان C/C++ برای میکروبلیز برنامه‌نویسی کنید.

امکانات متنوعی در نرم‌افزار SDK وجود دارد؛ پس از نوشتن کد و دیباگ کردن آن، می‌توانید برنامه نوشته شده را به‌کمک این نرم‌افزار روی FPGA پروگرام کنید.

همچنین، می‌توانید به‌کمک نرم‌افزار SDK، بُرد را در حین اجرای کد بر روی آن رصد کنید. این قابلیت، بسیار فوق‌العاده و کاربردی است.

همان‌طور که در این مقاله بیان شد، ابزاهای XPS و SDK از مجموعه نرم‌افزاری ISE، به ما کمک می‌کنند که بتوانیم ابتدا برای میکروبلیز یک پلتفرم سخت‌افزاری ایجاد کنیم و سپس مطابق نیاز پروژه‌مان، یک نرم‌افزار یا برنامه به زبان C/C++ برای آن بنویسیم.

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

در این دوره، نحوه استفاده از نرم‌افزارهای XPS و SDK را به‌کمک چند مثال عملی ارائه خواهم داد.

در حال حاضر، این دوره فقط به‌عنوان هدیه شرکت در دوره آنلاین "پردازش سیگنال با FPGA" ارائه می‌شود.

اما درباره عنوان دوره باید این نکته را ذکر کنم که کلمه نهفته، ترجمه شده کلمه embedded است.

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

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

در حال حاضر، کاربرد سیستم‌های embedded بسیار زیاد است؛ اگر با دقت بیشتری به اطرافتان نگاه کنید، حتماً می‌توانید چند سیستم embedded را مشاهده کنید.

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

در تمامی اتومبیل‌های مدرن، ده‌ها میکروکنترلر و پردازنده وجود دارد که به‌صورت embedded درون این سیستم‌ها کار می‌کنند.

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

برای دوستانی که در حوزه FPGA کار می‌کنند، اولین قدم برای ورود به حوزه پیاده‌سازی embedded، آشنایی با میکروبلیز است.

میکروبلیز، ساده‌ترین نوع پیاده‌سازی embedded در سیستم‌های دارای FPGA است.

اکنون به پایان این مقاله رسیدیم؛ امیدوارم از خواندن آن لذت برده باشید و بتوانید از نکات یاد گرفته شده، در انجام پروژه‌‌هایتان استفاده کنید.

آیا برنامه ویدئویی آشنایی با میکروبلیز برای شما مفید بود؟

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

کانال تلگرام آموزش FPGA از صفر

برای عضویت در کانال تلگرام و دسترسی به آموزش‌های بیشتر و اطلاع سریع از زمان انتشار آموزش‌ها و تخفیف‌های ویژه، روی دکمه زیر کلیک کنید:

درباره نویسنده:

احمد ثقفی

شاید به این موضوعات نیز علاقه داشته باشید:

  • سلام خسته نباشید اگ میشه بگید که کجا باید برنامه cرو اضافه کنیم مثلا برنامه lcdرو کجا باید اضافه کنیم ممنون

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    ۷ تکنیک پیشرفته کدنویسی برای FPGA

    >