آموزش FPGA : قسمت سوم

آموزش FPGA : قسمت سوم

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

نرم‌افزار ISE

نرم‌‌افزار ISE یا به طور کامل‌تر Xilinx ISE Design Suite یک مجموعه نرم‌‌افزاری است که خود شامل چندین نرم‌‌افزار می‌باشد؛ و از این نرم‌افزار‌‌ها برای طراحی، شبیه‌سازی، برنامه‌ریزی و بسیاری از کار‌های دیگر استفاده می‌شود که در ادامه‌ی این مجموعه آموزشی بیشتر با آن‌ها آشنا خواهیم شد. همچنین پس از نسخه 14.7، نسخه جدیدی ارائه نشد و جای خود را به نرم‌افزار Vivado داد. البته ناگفته نماند، تراشه‌هایی که در ISE در دسترس هستند، در Vivado غیرقابل دسترس هستند و همینطور بالعکس. پس ما با توجه به تراشه‌ای که قصد داریم با آن کار کنیم نرم‌افزار مورد نظر را انتخاب خواهیم کرد. در این مجموعه آموزشی، چون مبنای آموزش بر اساس تراشه‌ی Spartan-6 خواهد بود، پس نرم‌افزار ISE را انتخاب کرده‌ایم.

نصب نرم‌افزار ISE

نرم‌افزار را می‌توانید از اینجا دانلود کنید. نصب این نرم‌افزار بسیار ساده خواهد بود ولی اگر شما از ویندوز 10 استفاده می‌کنید ممکن است پس از اجرای نرم‌افزار با خطای pn.exe has stopped working_ مواجه شوید، در این صورت باید نرم‌افزار را بسته و مراحل زیر را به ترتیب انجام دهید.
  1. ابتدا وارد فولدر C:\Xilinx\14.7\ISE_DS\ISE\lib\nt64 شوید و نام فایل libPortability.dll را به libPortability.dll.orig تغییر دهید.
  2. در فولدر مرحله 1، یک کپی از فایل libPortabilityNOSH.dll ایجاد کنید و نام آن را libPortability.dll بگذارید.
  3. حال وارد فولدر C:\Xilinx\14.7\ISE_DS\common\lib\nt64 شوید و فایل libPortabilityNOSH.dll را در این فولدر هم کپی کنید.
  4. در فولدر مرحله 3، نام فایل libPortability.dll را به libPortability.dll.orig تغییر دهید.
  5.  در آخر، نام فایل libPortabilityNOSH.dll در فولدر مرحله 3 را به libPortability.dll  تغییر دهید.

شروع اولین پروژه

ابتدا وارد نرم‌افزار شوید و سپس مانند تصویر زیر از منوی File گزینه ی New Project را انتخاب کنید.

 

 

از پنجره باز شده می‌توانید نام و محل ذخیره‌سازی پروژه را انتخاب کنید و با انتخاب Next به مرحله بعد بروید.

 

در پنجره باز شده باید تنظیمات مربوط به تراشه انتخابی را انجام دهیم. تراشه ما از خانواده Spartan-6 و از نوع XC65LX9 می باشد. و همچنین پکیج تراشه‌ای که ما از آن استفاده می‌کنیم TQG144 است. در همین پنجره مشاهده می‌کنید که ما Speed را 2- انتخاب کردیم، در این رابطه باید ذکر گردد که این عدد مربوط به تکنولوژی تراشه است، که باید از دیتا شیت یا  از روی خود تراشه خوانده شود. و در نهایت پس از انتخاب Next و Finish پروژه ساخته خواهد شد.

 

 

 

تا اینجا ما فقط پروژه را ساخته‌ایم ولی هنوز مشخص نکرده‌ایم که قرار است در این پروژه چه نوع فایلی را قرار دهیم. در ابتدای کار ما قصد داریم که یک ماژول VHDL را به پروژه اضافه کنیم، به همین منظور در قسمت Hierarchy راست کلیک کرده و گزینه New Source را انتخاب می‌کنیم. اگر شما فایل از قبل آماده‌ای دارید می‌توانید با استفاده از گزینه های Add Source یا Add Copy of Source آن را به پروژه اضافه کنید، ولی دقت کنید که فرق بین این دو گزینه این است که یکی از آن‌ها یک کپی از فایل اصلی گرفته و آن را به پروژه اضافه می‌کند و گزینه دیگر خود فایل اصلی را در پروژه قرار می‌دهد، حال اگر شما در حین کار تغییراتی در این فایل ایجاد کنید، این تغییرات در فایل اصلی نیز اعمال خواهد شد. پس بهتر این است که اگر فایل اصلی را نیاز داریم، از گزینه Add Copy of Source استفاده کنیم.

 

 

در پنجره ظاهر شده فایل‌های متفاوتی وجود دارد که بعدا به توضیح هر کدام خواهیم پرداخت اما فایل مورد نظر ما در اینجا یک ماژول VHDL می‌باشد که با انتخاب گزینه‌ی VHDL Module این فایل را به پروژه اضافه می‌کنیم.

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

 

 

با انتخاب گزینه ی Next پنجره‌ای ظاهر خواهد شد که ما می‌توانیم با استفاده از این Wizard پورت‌هایی که قرار است اضافه کنیم را انتخاب کنیم، البته می‌توانیم در اینجا هیچ تنظیم خاصی را انجام ندهیم و بعد که فایل ساخته شد اسم پورت‌ها را بنویسیم. همانطور که در تصویر زیر مشاهده می کنید پورت ها می توانند ورودی، خروجی و یا ورودی-خروجی باشند. همچنین در این Wizard می توانیم تعداد بیت های پورت ها را نیز انتخاب کنیم، که ما در اولین پروژه برای سادگی تمامی پورت ها را تک بیتی انتخاب می کنیم. پس از تکمیل این مرحله ماژول VHDL ساخته و به پروژه اضافه خواهد شد.

 

 

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

 

 

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

در این کد ساده ما اول کد فقط دو خط زیر را اضافه می کنیم:

 

بعد از begin مربوط به architecture کد مورد نظرمان را می‌نویسیم، که البته ما در این پروژه به خاطر سادگی فقط یک خط کد نوشتیم. در این کد، ما در ابتدا A را با AND ،B و سپس نتیجه را با OR ،C کرده‌ایم.

حائز اهمیت است که در اینجا ذکر گردد نتیجه کد تولید شده، ایجاد یک سخت افزار خواهد بود که شامل یک گیت AND دو ورودی و یک گیت OR دو ورودی می‌باشد و نتیجه کاملا متفاوت با این می‌باشد که ما همین منطق کد را مثلا در زبان C نوشته باشیم، در زبان برنامه‌نویسی هیچ سخت افزاری تولید نمی‌شود بلکه کد‌ها پشت سرهم در CPU اجرا می‌شوند.

با استفاده از مسیر زیر می‌توانید شماتیک سخت افزار ایجاد شده را مشاهده نمائید:

View RTL Schematic → OK → Add → Create Schematic

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

 

 

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

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

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