FPGA, آموزش, توصیه شده, مقاله

آموزش FPGA قسمت سوم: نرم‌افزار ISE و زبان VHDL

FPGA_Part3

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

نرم‌افزار ISE

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

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 را انتخاب کنید.

 

New Project in ise

 

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

 

New Project in ise

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

 

New Project in ise

 

New Project in ise

 

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

 

New Source in ise

 

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

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

 

New Source in ise

 

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

 

New Source in ise

 

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

 

 

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

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

 

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

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

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

View RTL Schematic → OK → Add → Create Schematic

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

 

RTL Schematic

 

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



انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.  همکاری با سیسوگ

 

نوشته های مشابه

6 دیدگاه در “آموزش FPGA قسمت سوم: نرم‌افزار ISE و زبان VHDL

  1. Avatar هادی گفت:

    سلام
    بسیار عالی توضیح دادید و بحث خیلی جذابی هست
    لطفا در ادامه آموزش ها یه برد آماده بازاری یا حداقل مدار رو برای راه اندازی و برنامه ریزی معرفی کنید
    ممنونم

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

  2. Avatar َAmir گفت:

    سلام
    ممنون از زحماتتون و وقتی که برای آموزش صرف می کنید …
    با عرض احتران باید بگم که متاسفانه ظاهرا شنا در بخش قبلی FPGA ها را با میکروکنترلرها مقایسه کردین و اینو در ابتدای این مطلب هم یادآوری کردین

    من به شخصه با تجریه ای که در کا با FPGA و میکروکنترلرها دارم باید بگم که این مقایسه اصلا درست نیست . این 2 تا دو بحث کاملا جدا هستن و اصلا قابل قیاس با یکدیگر نیستند. مثل مقایسه کردن یه ماشین بوگاتی با یک هواپیمای جنگنده هست!! هواپیما رو با هواپیما مقایسه کنید …

    ممنون از سایت خوبتون

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

  3. Avatar سعید گفت:

    سلام. مطلب رو خیلی ساده و روان توضیح میدهید. اگر براتون ممکن است فرق cpld را با fpga بصورت ساده مثلا با مقایسه 2 مدل تراشه یا محل کاربرد معمول توضیح بدهید .
    ممنون.

    1. زئوس Zeus زئوس Zeus گفت:

      سلام و درود دوست عزیز ؛
      تفاوت cpld و fpga چندان نیست که بخوایم یک مقاله در خصوصش منتشر کنیم ؛ خیلی ساده اگر بخوام بگم cpld داخل خودش eeprom داره و بیت فایل رو به شکل داخلی نگهداری میکنه در صورتی که توی fpga رم وجود داره و باید بیت فایل رو روی حافظه فلش خارجی ذخیره کرد.
      بعد از اون تفاوت تعداد گیت ها است ؛ اوی fpga تعداد گیت ها بهتره بگم میکروسل ها خیلی بیشتر از cpld هست ؛ مثلا توی Cpld تعداد میکروسل ها به زحمت تا یک کیلو میکروسل برسه در حالی در fpga این تعداد خیلی بیشتره
      تفاوت بعدی توی سرعت هست که fpga سرعت بالاتری رو پشتیبانی میکنه در حالی که غالبا cpld سرعت پایین تری رو داره.

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

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