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

پازجی ها سلام!

پیوند FPGA و آردوینو

برنامه نویسی یک برد FPGA در محیط Arduino IDE (آردوینو)! این همان موضوعی است که در این پست مورد بررسی قرار خواهیم داد. اگر شما هم جزو آن دسته افرادی هستید که از دنیای میکروکنترلرها پا به دنیای FPGA گذاشته اید، احتمالا از خواندن این پست بیش از دیگران هیجان زده خواهید شد.

میشه؟! داریم؟!

در حال حاضر برخی از بردهای توسعه FPGA این قابلیت را دارند که توسط IDE ی آردوینو (و یا نسخه ای اختصاصی شده از آن) برنامه نویسی شوند. Mojo ، پاپیلیو، miniSpartan6 و برخی از بردهای Digilent نمونه های از این دست هستند. بعنوان نمونه پاپیلیو از نسخه ای Customize شده (بومی سازی شده!) از آردوینو به نام DesignLab بهره مند است. تعداد دیگری از بردهای مذکور نیز خود را به FPGArduino  که یک IDE آردوینو مخصوص بردهای FPGA است مجهز نموده اند.

این سودیش کُجیس؟ (سود این کار چیست؟)

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

مشابه روندی که در دنیای میکروکنترلرها شکل گرفت، چند سالی است که “تب آردوینو” به دنیای FPGA نیز راه یافته و روز به روز در حال شیوع است که در بالا به نمونه هایی از آن اشاره کردیم. از این پس باید شاهد روند رو به رشد پروژه های آردوینویی روی پلتفرم هایی با پایه ی FPGA باشیم.

چطوری ممکنه؟

نسخه های جدید Arduino IDE قابلیت گسترش پشتیبانی برای سخت افزارهای تعریف شده توسط کاربر را دارند. این بدین معنی است که شما میتوانید برد پردازشی دلخواه خودتان را که ممکن است یک برد مبتنی بر یک میکروکنترلر دلخواه با معماری دلخواه AVR، ARM و یا حتی x86! (مثل Intel Edison) باشد! حتی میتوان پا را از این نیز فراتر گذاشت و یک برد مبتنی بر FPGA را که درون آن یک soft-core (مانند MicroBlaze) جاسازی شده باشد را در نظر گرفت! مورد اخیر دقیقا همان اتفاقی است که در DesignLab پاپیلیو و FPGArduino به وقوع پیوسته است.

یکی از ملزومات اجرای این کار پورت کردن کتابخانه های آردوینو برای پردازنده ی مورد نظر و همچنین فراهم کردن toolchain کامپایل آن است.

Arduino برای پازج-یک:

تلاشهای اولیه در مسیر ایجاد پیوند مودت بین پازج-یک و آردوینو خوشبختانه کارساز واقع شده و هم اکنون نسخه ی بتای نرم افزار آردوینو برای پازج آماده شده است. در این نسخه از کور MicroBlaze_mcs استفاده شده است که یک میکروکنترلر 32 بیتی با فرکانس 100MHz است.

پین ها:

پین های شماره ی 1 تا 16 روی کانکتور بال A، به ترتیب معادل پین های 0 تا 15 در نرم افزار میباشند. یعنی با نوشتن دستور PinMode(0, output) در محیط Arduino، پین شماره 1 روی بال A در حالت خروجی قرار داده شده و با اجرای دستور DigitalWrite(0, High) مقدار این پین 1 میشود. این پین ها قابلیت خواندن/نوشتن مقادیر دیجیتال و نوشتن مقادیر آنالوگ روی آنها وجود دارد.

ارتباط سریال:

ارتباط سریال توسط تراشه ی FT2232 روی برد فراهم شده است که از طریق فراخوانی تابع serial() در آردوینو قابل دسترسی است.

 

نصب و راه اندازی:

گام اول: آخرین نسخه ی نرم افزار آردوینو را دانلود و نصب نمایید. (از اینجا)

گام دوم: محتوای آرشیو ارائه شده در پیوست را درون پوشه ی آردوینو Extract نمایید.

گام سوم: برد پازج-یک را به کامپیوتر خود متصل نموده، نرم افزار آردوینو را باز کرده و از منوی Board، قسمت posedge، گزینه ی MicroBlaze_mcs (write to FPGA) و یا درصورتی که میخواهید برنامه ی شما در حافظه ی فلش برد ذخیره شود گزینه ی MicroBlaze_mcs(write to flash) را انتخاب نمایید. اکنون برد شما آماده ی کار با آردوینو است.

گام چهارم: از منوی Example->basics->blink را انتخاب نمایید تا پروژه ی نمونه LED چشمک زن باز شود. بصورت پیشفرض LED به پین 13 متصل شده است. از آنجایی که روی برد پازج led وجود ندارد، برای اجرای این مثال بایستی بال LED را به یکی از دو محل موجود روی کانکتور ردیف A روی برد متصل نموده و شماره پین متصل به یکی از LED ها را جایگزین عدد 13 نمود. فراموش نکنید که نام گذاری پین ها روی برد از شماره 1 شروع شده ولی در نرم افزار از شماره صفر. بنابراین اگر LED مورد نظر روی بال به پین شماره 1 کانکتور متصل است، در نرم افزار آردوینو بایستی مقدار 0 را وارد نمایید. اجازه بدهید فرض کنیم بال را در قسمت بالایی ردیف A (پین های 1 تا 8) متصل کرده ایم. اولین LED به پین شماره 1 کانکتور متصل است. در کد نمونه به جای 13، مقدار 0 را وارد نموده و تغییرات را ذخیره مینماییم. اکنون با فشردن کلید verify در نوار ابزار بالای نرم افزار و سپس کلیک بر روی گزینه ی Upload ، برنامه ی مورد نظر بر روی FPGA پروگرام میشود و LED شروع به چشمک زدن میکند!

به همین ترتیب میتوانید مثال های دیگر مثل Fade،  DigitalReadSerial و … را اجرا نمایید و نتیجه را مشاهده نمایید. لطفا نتایج تجربیات خود در این رابطه را با ما در میان بگذارید و بدین طریق در پیشبرد این پروژه سهیم شوید.

بحث و گفتگو پیرامون این موضوع در انجمن ها

فایلهای پیوست:

افزونه ی برد پازج-یک برای نرم افزار آردوینو