آموزش FPGA و Verilog برای تازه کارها – سیستم‌‌های نهفته

سیستم‌‌های نهفته

برای بسیاری از ما، آموختن FPGA یک قدم طبیعی و ناگزیر بود که پس از طی کردن عوالم میکروکنترلرها و سیستم‌های نهفته (یا همان Embedded systems)، باید آن را نیز می‌آموختیم. به این ترتیب که ابتدا مقدمات و اصول سیستم‌های نهفته را یاد می‌گیریم و سپس شروع  به انجام دادن پروژه‌های کوچکی می‌کنیم که در آنها از میکروکنترلرها و میکروپروسسورها استفاده می‌شود و بعد همینطور که پیشرفت می‌کنیم و جلوتر می‌رویم، بالاخره در یک نقطه‌ای متوجه می‌شویم که پروژه‌ها و مسائلی نیز وجود دارند که میکروکنترلر/ پروسسورها پاسخگوی نیاز آنها نیستند. با کمی تحقیق و تفحص به FPGAها می‌رسیم. اما می‌بینیم که دنیای FPGAها چقدر با دنیای میکروپروسسورها که تا پیش از این می‌شناختیم متفاوت است و ناگهان متوجه می‌شوید که هرچقدر هم که در آنجا تجربه و تخصص داشته‌اید، خوب است، اما برای موفقیت در این دنیای جدید کمکی به شما نمی‌کند و تا زمانیکه شروع به یادگیری مطالب جدید نکنید و البته منحنی یادگیریتان هم شیب مثبت و فزاینده‌ای نداشته باشد، راه به جایی نخواهید برد، چرا که هم ابزارها متفاوت هستند، هم زبان متفاوت است و هم حتی شیوه‌ها و نمونه‌های برنامه‌نویسی!

اما یک کورسوی امیدی وجود دارد، طبق تعریفی که وجود دارد (البته اگر قدری دست و دل باز باشیم و روی جزئیات چندان دقتی به خرج ندهیم)، FPGAها به عنوان گروهی از المان‌های مدار منطقی تلقی می‌شوند که می‌توان با کمک آنها و تغییر و تنظیم پیکربندی‌هایشان، مدارهای منطقی ساخت. بسیار خب، اگر اینطور است؛ چرا از این سلول‌ها و المان‌های منطقی استفاده نکنیم و میکروپروسسور که آن نیز یک مدار منطقی است نسازیم؟ آنوقت می‌توانیم با استفاده از همان ابزارها و زبان‌های برنامه‌نویسی آشنا و قدیمی خودمان با این دنیای جدید نیز ارتباط برقرارکنیم و پاسخ این است که بله چنین چیزی هم ممکن است، چرا که نه؟! اما باید به یک سوال هم جواب دهیم، از کجا معلوم و چرا میکروپروسسورها و میکروکنترلرهایی که با این روش و با استفاده از FPGAها می‌سازیم، در مقایسه با میکروکنترلرهای آماده‌ی مصرفی که در بازار وجود دارند و تولید می‌شوند، بهتر عمل کند؟ دلایل متعددی را می‌توانیم برشماریم که چرا میکروکنترلرها و میکروپروسسورهای تولید شده از FPGA، در مقایسه با میکروهای آماده عملکرد بهتر یا بدتری دارند.

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

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

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

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

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

همانطور که در عکس می‌بینید پریفرال‌های متعددی از منابع مختلف در FPGA وجود دارند که می‌توان از آنها برای کاربردهای مختلف استفاده کرد. این پریفرال‌ها می‌توانند از نوع پریفرال‌های ارتباطی باشند، مثل I2C ،SPI ،USART یا هسته‌های پردازش سیگنال باشند مثل FFT، فیلتر، یا هر چیز دیگری که شما بتوانید تصور کنید و با FPGA قابل پیاده سازی باشد.

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

مطلب پیشنهادی:  آموزش FPGA: بورد Mojo و مقدمات FPGA‌ها – قسمت دوم بخش دوم

تولید زیرساخت سیستم‌های نهفته توسط Xilinx

شاید بتوان گفت که شرکت زایلینکس (Xilinx) سردمدار تولید و ساخت FPGA و سایر المان‌های منطقی برنامه‌پذیر در دنیاست. در همین شرکت ابزارهایی تولید می‌شوند که می‌توان به کمک آنها بر مبنای FPGAهای تولید شده سیستم‌های نهفته ساخت.

در صورتی که شما چنین تصمیمی داشته باشید (پیاده‌سازی یک سیستم نهفته به وسیله‌ی FPGA)، شرکت زایلینکس دو گونه انتخاب پیش روی شما می‌گذارد:

  1. یا پروسسور بر بستر خود FPGA پیاده‌سازی شود که به این نوع پروسسورها اصطلاحا Soft Processors گفته می‌شود. مانند میکروبلیز و پیکوبلیز (Microblaze و Picoblaze)
  2. یا اینکه به صورت همان پروسسورهای معمولی باشد (Hard processor) که بر روی دای (Die) پیاده‌سازی می‌شوند. ولی این پروسسور جداگانه ارتباط تنگاتنگی با FPGA داشته باشد.

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

Hard processorها معمولا قدرتمندتر هستند اما معمولا –لااقل تا زمان نوشتن این مقاله‌ی آموزشی– قیمت FPGAهایی که از این نوع پردازنده داشته باشند، از FPGAهایی که soft processor دارند بالاتر است.

در طول این آموزش ما بر گروه اول یعنی soft processorها تمرکز داریم. به طور مشخص از میکروبلیز استفاده می‌کنیم. علت این انتخابمان هم این است که میکروبلیز را می‌توان بر روی سخت‌افزارهای قیمت مناسبی چون Mimas V2 پیاده‌سازی کرد.

البته لازم به ذکر است که میکروبلیز با دستگاه‌های Spartan 3 سازگار نیست و به همین دلیل اطلاعات این جلسه از آموزش ما برای کسانی که از بورد Elbert V2 FPGA Development Board استفاده می‌کنند کاملا قابل تطبیق نیست.

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

  1. یک پروژه‌ی ساخت سیستم نهفته بر اساس میکروبلیز ایجاد کنید.
  2. هر پریفرال جانبی که نیاز دارید را اضافه کنید.
  3. پیکربندی (Configure) پروسسور و سایر زیرسیستم‌ها را تنظیم کنید.
  4. فایل باینری قابل برنامه‌ریزی در FPGAها را با استفاده از پروسسور و سایر امکانات سیستم ایجاد کنید.
  5. یک پروژه‌ی نرم‌افزاری ایجاد کنید که بتوانید آن را بر روی سخت‌افزاری که ساخته‌اید اجرا کنید.
  6. برنامه‌ی آن را به زبان C بنویسید.
  7. همه‌ی این مواردی که ساخته‌اید را بر روی FPGA دانلود و سپس اجرا کنید.

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

ما در طول این آموزش و پروژه از ابزارهای زیر استفاده خواهیم کرد:

  • Xilinx ISE Webpack 14.7
  • Xilinx Platform Studio
  • Xilinx SDK

ISE اصلی‌ترین ابزار طراحی و دیزاین FPGA است که توسط شرکت زایلینکس ارائه شده است. این نرم‌افزار شامل یک IDE و یک سری ابزارهای جانبی دیگر است که به کمک آنها می‌تواند زبان توصیف سخت‌افزار (HDL) را بپذیرد و بتواند به شکل سخت‌افزار تفسیر کند. اگر از این قسمت از این مجموعه آموزش چند جلسه‌ای به جمع ما اضافه شده‌اید، پیشنهاد می‌کنیم که به جلسات قبلی سری بزنید تا مثال‌هایی از اینکه چگونه می‌توان با این نرم‌افزار کار کرد و پروژه ساخت را در آنجا ببینید.

اما با تمام این خوبی‌ها و اوصافی که از ISE گفتیم، در این بخش قرار نیست به طور مستقیم با خود آن کاری داشته باشیم، بلکه تنها چون برای استفاده از دو مورد بعدی (Platform Studio و SDK) باید حتما ISE را از قبل روی سیستم نصب داشته باشیم، آن را هم جزء لیست قرار دادیم تا احیانا اگر از قبل نصب ندارید ابتدا آن را نصب کنید.

این دو ابزار را معمولا به صورت EDK یاد می‌کنند. خلاصه‌ی عبارت Embedded Development Kit. از Platform Studio استفاده می‌کنیم تا طراحی قسمت‌های سخت‌افزاری سیستم نهفته را به کمک آن انجام دهیم (مثلا پروسسور، پریفرال‌ها، باس‌ها و …)

SDK هم محیط توسعه‌ی نرم‌افزاری است که بر اساس Eclipse IDE کار می‌کند و به همین علت از نظر ظاهری محیط آن ممکن است برای بسیاری از افراد آشنا به نظر برسد. با استفاده از SDK شما می‌توانید پروژه‌های نرم‌افزاری ایجاد کنید و کدهایی به زبان C بنویسید و آنها را بر روی سیستم‌های نهفته‌ای که با کمک Platform Studio نوشته‌اید، اجرا کنید.

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

تا وارد قسمت بعدی نشده‌ایم این را هم بگوییم که سه ابزار فوق یعنی ISE ،Platform Studio و SDK را می‌توانید به صورت یک پکیج از اینجا دانلود کنید. البته لایسنس‌های آنها جداگانه است. یعنی باید برای ISE Webpack یک لایسنس جداگانه نصب کنید (که لایسنس آن نامحدود است اما از نظر device محدودیت دارد که لااقل برای این آموزش کافیست و مشکلی نخواهید داشت) یک لایسنس جداگانه برای EDK (که می‌توانید آن را ازاینجا بخرید. سابقا شرکت زایلینکس این لایسنس را به صورت 30 روزه ارائه می‌داد اما در حال حاضر در مورد آن اطلاعی نداریم. برای اینکه دقیق‌تر بدانید به وب سایت خود شرکت مراجعه کنید) و یکی هم برای Platform Studiom.

مطلب پیشنهادی:  آموزش FPGA و Verilog – سنتز مدار

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

بسیار خب، وقت آن رسیده است که با هم یک پروژه بسازیم.

برای آنکه بیهوده دچار طول و تفصیل نشویم و راحت بتوانید این آموزش را دنبال کنید، قصد داریم یک سیستم‌ نهفته‌ی ساده را با هم روی FPGA پیاده‌سازی کنیم. قرار است سیستم ما جمله‌ی معروف «Hello World» را از طریق یک پورت سریال چاپ کند و همانطور که گفتیم از بورد Mimas V2 FPGA Development Board استفاده خواهیم کرد. این بورد دارای یک FPGA از نوع Spartan 6 LX9 است و هم‌چنین یک مبدل USB به Serial که به ما کمک می‌کند جمله‌ای که می‌خواهیم را بر روی PC چاپ کنیم.

مرحله 1: پیکربندی و نصب پروسسور میکروبلیز و پریفرال‌‌ها

تا اینجای کار ما فقط یک سری مقدمات را گفته‌ایم و پلت‌فرم سخت‌افزاریمان را انتخاب کرده‌ایم، حالا می‌خواهیم در Platform Studio یک پروژه ایجاد کنیم و پیکربندی‌های میکروبلیز را در آن تنظیم کنیم. اما پیش از ایجاد پروژه ابتدا باید یک سری فایل‌ها را در دایرکتوری نصب EDK کپی کنیم. با این کار روند ایجاد پروژه به سادگی چند کلیک می‌شود. فایل Base System Builder Wizard for Mimas V2 را دانلود کنید و پس از اکسترکت کردن محتویات آن را در فولدر board در دایرکتوری نصب EDK کپی کنید. اگر ISE/EDK 14.7 را در درایو C نصب کرده باشید، مسیری که باید طی کنید به این صورت است.

C:\Xilinx\14.7\ISE_DS\EDK\board\NumatoLab\ipxact\MimasV2\data

حالا از منوی استارت Platform Studio را باز کنید.

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

بعد از اینکه Platform Studio GUI لود شد، بر روی File > New BSB Project کلیک کنید. در پنجره‌ی project Wizard که باز می‌شود، برای پروژه‌ای که می‌خواهید بسازید یک نام و یک مسیر برای ذخیره شدن وارد کنید. در تصویر زیر همانطور که می‌بینید C:\embedded\HelloWorld\edk مسیر ذخیره و HelloWorld را به عنوان نام پروژه انتخاب کرده‌ایم.

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

OK را بزنید و ادامه دهید. در پنجره‌ی بعدی Nuamto Lab Mimas V2 را به عنوان نوع بورد انتخاب کنید. بقیه‌ی تنظیمات را به همان صورت پیش‌فرض که هست تغییر ندهید، مانند تصویر زیر.

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

Next را بزنید و در پنجره‌ی بعدی اطمینان حاصل کنید که تنها پریفرالی که انتخاب شده است UART باشد. (تصویر زیر را ببینید) بقیه‌ی تنظیمات را تغییر ندهید.

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

در این مرحله finish را بزنید تا پروژه ایجاد شود. اگر همه چیز به خوبی پیش رفته باشد باید پنجره‌ای مشابه تصویر زیر برایتان باز شود.

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

تمامIPهایی که در پروژه ایجاد شده‌اند، قابلیت این را دارند که به گونه‌ای تنظیم شوند که نیازهای پروژه‌ی شما را برآورده سازند. اما برای این پروژه نیازی به تغییرات زیاد و پیچیده‌ای نداریم. تنها چیزی که باید تنظیم کنید UART Baud Rate است. بر روی UART IP راست کلیک کنید و گزینه‌ی Configure IP را انتخاب کنید. در پنجره‌ای که باز می‌شود Baud Rate را روی 19200 قرار دهید و ok را بزنید. در تصویر زیر این مراحل نشان داده شده‌اند.

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

مورد دیگری که باید برای این پروژه انجام دهیم تغییر تنظیمات startup clock است. به صورت پیش‌فرض XPS، ساعت FPGA را بر روی JTAG clock تنظیم می‌کند. این پیش‌فرض برای زمانیکه از آداپتورهای JTAG استفاده می‌کنیم نتایج خیلی خوبی تولید می‌کند. مثلا زمانیکه از کابل USB ابزار Xilinx Platform برای برنامه‌نویسی FPGA استفاده می‌کنیم، اما برای لود کردن تنظیمات FPGA از روی SPI flash، لازم است که startup clock را به جای JTAGCLK برروی Cclk تنظیم کنیم.

برای این کار به تب Project که دقیقا در کنار تب IP Catalog در XPS قرار دارد بروید و در آنجا از Bitgen Options، فایل etc/bitgen.ut را باز کنید. خط g StartUpClk:JTAGCLK- را پیدا کنید و آن را با عبارت g StartUpClk:CCLK- جایگزین کنید. فایل را ذخیره کنید و با کلیک بر روی دکمه‌ی Generate bit file در صفحه‌ی سمت چپ، پروژه را از نو بازسازی کنید. احتمالا چنددقیقه‌ای طول می‌کشد تا XPS پروژه را بازسازی کند. زمانیکه کار آن با موفقیت تمام شد، باید این پیغام را ببینید.

“Bitstream generation is complete. Done!”

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

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

حالا می‌توانیم فایل خروجی را export کنیم و یک پروژه‌ی SDK بسازیم. SDK ابزاریست که با استفاده از آن می‌توانیم اپلیکیشن‌هایی بسازیم که بر روی میکروپروسسور میکروبلیز کار می‌کنند.

در جعبه ‌ابزار سمت چپ محیط XPS بر روی دکمه‌ی Export Design کلیک کنید و در پنجره‌ای که باز می‌شود Export Only را بزنید. با این کار XPS تمام فایل‌هایی که برای تولید یک پروژه‌ی SDK نیاز هستند را export خواهد کرد.

حالا از منوی استارت Xilinx Software Development Kit را بزنید تا SDK باز شود. یک فولدر مناسب را به عنوان محل ذخیره و جمع‌آوری فایل‌ها انتخاب کنید و Ok را بزنید. برای آنکه یک پروژه‌ی جدید باز کنید به مسیر File > New Project > Application Project بروید، در صفحه‌ای که باز می‌شود از شما خواسته می‌شود که برای پروژه یک نام انتخاب کنید، ما اسمش را HelloWorld می‌گذاریم. در همین پنجره، زیر بخش Target Hardware، بر روی hardware Platform کلیک کنید و Create New را بزنید. در صفحه‌ی بعدی که باز می‌شود یعنی New Hardware Project، نام پروژه را وارد کنید و در بخش Browse، پروژه XPS و فولدر SDK را بیابید و از آنجا HelloWorld.xml را انتخاب کنید. (مسیر کامل به این شکل است: SDK\SDK_Export\hw\HelloWorld.xml) و در نهایت Finish را بزنید. تصویر زیر یکی از این مراحل را به عنوان نمونه نشان داده است.

مطلب پیشنهادی:  آموزش Verilog - ماژول‌ها

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

زمانیکه پروژه‌ی جدید در اینجا ساخته شد، مجددا به SDK Application project می‌روید. به طور خودکار در بخش application wizard پروژه‌ی تازه ساخته شده اضافه شده است. یعنی اگر همه چیز به خوبی پیش رفته باشد باید چیزی شبیه تصویر زیر را ببینید.

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

Next را بزنید، پروژه‌ی Hellow World را انتخاب کنید و سپس finish را بزنید. SDK به صورت اتوماتیک خودش پروژه را خواهد ساخت. در صورتی که مشکلی وجود نداشته باشد باید پیغام Build Finished را ببینید.

بسیار خب، در این لحظه باید کدمان را قدری اصلاح کنیم، اپلیکیشنی که در SDK ساخته‌ایم براساس کد، Hello World را یکبار چاپ کرده و سپس از برنامه خارج می‌شود. حالا ما می‌خواهیم کد را طوری تغییر دهیم که این کار را بی‌نهایت بار تکرار کند و خود به خود از برنامه خارج نشود. در HelloWorld.c، دستور مربوط به print را پیدا کنید و آن را با کد زیر جایگزین کنید.

while(1)
{
       print("Hello World\n\r");
}

یعنی دستور print را در یک حلقه‌ی while بی‌نهایت می‌اندازیم و تمام. پروژه را ذخیره کنید و Build را بزنید.

مرحله 2: تولید فایل باینری (bin) به منظور دانلود بر روی Mimas V2

در مرحله‌ی قبلی کار اصلی را که ساخت پروژه بود انجام دادیم. کاری که در این مرحله باید انجام دهیم این است که یک فایل باینری بسازیم که بتوان آن را با استفاده از ابزار کانفیگوریشن Mimas V2 بر روی SPI فلش مموری ریخت. این کار را به کمک نوشتن چند خط دستور در ابزارهای ISE انجام می‌دهیم. ابتدا باید فایل‌های زیر را که توسط XPS یا SDK تولید شده‌اند پیدا کنیم.

  1. فایل باینری (اگر تمام نام‌گذاری‌ها را مطابق همین آموزش پیش رفته باشید این فایل حالا باید چنین نامی داشته باشد « bit». این فایل در مسیر folder SDK\SDK_Export\hw درون فولدر پروژه‌ی XPS قرار دارد)
  2. فایل اجرایی (طبق نام‌گذاری‌های مراحل قبل این فایل هم باید به این نام وجود داشته باشد «elf». آن را در مسیر SaturnV3test\Debug درون فولدر SDK workspace باید پیدا کنید)
  3. فایل bmm (به همان ترتیب دوتای قبلی اگر نام‌گذاری‌ها را شبیه آموزش پیش رفته باشید این فایل را با این نام پیدا می‌کنید «be HelloWorld_bd.bmm». آن را در مسیر SDK\SDK_Export\hw درون فولدر XPS project بیابید)

این سه فایل را در یک فولدر مشترک کپی کنید، یک command line prompt باز کنید و آن را نیز درون این فولدر قرار دهید. سپس دو مرحله‌ی زیر را انجام دهید تا فایل bin. تولید شود.

مرحله i

cmd > c:\Xilinx\xx.x\ISE_DS\settings64.bat

cmd > data2mem -bm HelloWorld_bd.bmm -bd HelloWorld.elf -bt HelloWorld.bit

عبارت xx.x که در اولین دستور است را با ورژن درست ISE خودتان جایگزین کنید تا مسیر به درستی تشکیل شود.

و در دستور دوم هم اگر نام انتخابی پروژه شما متفاوت با چیزهایی بوده که ما در این آموزش گذاشتیم، آن را نیز تغییر دهید. اگر دستورات به درستی و با موفقیت کار کنند شما فایل bit. را خواهید دید که درون همان فولدر تولید شده است. (برای ما HelloWorld_rp.bit  با این نام است)

مرحله ii

حال برای تولید فایل bin. در همان فولدر و در همان command window، دستور زیر را می‌نویسیم.

cmd > promgen -w -p bin -u 0x0 HelloWorld_rp.bit -spi -o download_me

اگر دستور به درستی اجرا شود شما تعدادی فایل جدید خواهید دید که در فولدر اضافه شده‌اند و یکی از آنها download_me.bin است. از این فایل استفاده می‌کنیم تا با آن ماژول FPGAمان یعنی Saturn Spartan 6 FPGA module را برنامه‌ریزی کنیم.

Mimas v2 flash configuration tool را اجرا کنید، download_me.bin را انتخاب کنید و مانند تصویر زیر بر روی گزینه‌ی program بزنید. (دقت کنید که سوییچ SW7 آماده‌ی پذیرش دانلود باشد)

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

سوییچ SW7 بر روی Mimas V2  را به مود serial monitor ببرید و با استفاده از serial terminal software آن را به پورت متصل کنید. (19200 baud) و بالاخره لحظه‌ی دیدن خروجی است. می‌بینیم که جمله‌ی Hello World به صورت متناوب بر روی صفحه چاپ می‌شود.

آموزش FPGA و Verilog برای تازه کارها – قسمت پنجم

  • منبع: ترجمه از سایت numato.com
  • منبع: عکس شاخص از سایت alamy.com

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

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

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *