آموزش, آموزش FPGA, الکترونیک دیجیتال, توصیه شده, مقاله های سیسوگ

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

FPGA_Part3

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

نرم‌افزار ISE جایگزین نرم افزار Vivado

نرم‌‌افزار 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 آشنا خواهیم شد. پس با سیسوگ همراه باشید.

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

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

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

  1. Avatar for محمد محمد گفت:

    سلام.
    من می خواستم با آیسی GAL16V8 کار کنم. و از بحث FPGA همین یک آیسی رو می خوام.
    می خوام بدونم ساده ترین آموزش و نرم افزار برنامه نویسی این آیسی چی است. می تونید راهنمایی کنید. البته برای تست این آیسی تو پروتئوس است.
    با تشکر

  2. Avatar for نوید پارسا نوید پارسا گفت:

    سلام ،
    خدا قوت مرسی از همه آموزش هایی که میزارید
    احیانا شما نسخه های قدیمی تر این نرم افزار رو دارید؟
    بنده در یک کلاسی در حال تدریس هستم و نسخه های قدیمی مثل 7 و 8 بسیار سبک تر و ساده تر هستن برای کار کردن
    من واقعا دنبالش هستم اگر دارید ممنون میشم با من شیر کنید
    خیلی ممنونم

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام و درود بر شما از سایت خودش قابل دانلود هست فکر میکنم
      لینک زیر رو ببینید
      دانلود ise 8

  3. Avatar for اکبر عبدی اکبر عبدی گفت:

    سلام
    میخواستم بدونم اگر بجای برد اموزشی از یک ایسی fpga استفاده کنیم چطور میتونم بفهمیم توی کدوم نر افزار میشه بهش برنامه داد؟
    تراشه ای که من ازش استفاده کردم اینه:
    atmel at17n512

    1. Avatar for کامین جلیلی کامین جلیلی گفت:

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

  4. Avatar for مهدی مهدی گفت:

    سلام وقت بخیر ،ممنون از زحمات شما و اینکه با حوصله و روان توضیح میدین،سوالم این بود که ارتباط ISEبا FPGAچیه،ایا این یک محیط برای برنامه نویسیه یا …؟ممنون

    1. Avatar for Phoenix Phoenix گفت:

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

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

      نرم‌افزار ChipScope برای خطایابی و دیباگ و همچنین شبیه‌سازی واقعی بر روی برد استفاده می‌شود.

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

      و بسیاری از موارد دیگر.

  5. Avatar for مهدی مهدی گفت:

    سلام ممنون بسیار عالی بود

    1. Avatar for Phoenix Phoenix گفت:

      سلام نازنینم.

      خوشحالیم که این مقاله برای شما مفید واقع شده است.

  6. Avatar for محمدصادق محمدصادق گفت:

    سلام و تشکر . View RTL Schematic رو پیدا نمیکنم. نیست داخل باکس سمت چپ!

    1. Avatar for Phoenix Phoenix گفت:

      درود. مشکل شما یکی از دو مورد زیر می‌باشد:
      1. در قسمت Hierarchy، تاپ ماجول را Select نکرده‌اید، که ابتدا باید تاپ ماجول را Select کنید تا در قسمت Processes گزینه‌ی View RTL Schematic نمایش داده شود.

      2 . اگر مورد 1 را به درستی انجام دادید و هنوز مشکل وجود داشت، در قسمت Processes روی علامت + کنار گزینه‌ی Synthesize – XST کلیک کنید تا View RTL Schematic نمایش داده شود.

  7. Avatar for ys313 ys313 گفت:

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

    1. Avatar for Phoenix Phoenix گفت:

      مرسی یونس 313 عزیز، بابت نظر مثبتتون.

  8. Avatar for حسین حسین گفت:

    سلام .
    متشکر بابت مطلب خوبتون .
    راستش وقتی این مطلب رو خوندم به اونجا که گفتید :”حاصل برنامه نویسی یک سخت افزار است” یک چیزی درذهنم جرقه زد .
    آیا fpga اینقدر گیت داره که بشه باهاش یک alu یا cpu ساخت ؟راستش این کمی من رو به هیجان آورد ، …..یک cpu شخصی !!!!( امان از این فتنه ها که در سر ماست)

    1. Avatar for Phoenix Phoenix گفت:

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

      لینک قسمت اول:

      https://sisoog.com/2019/04/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-fpga-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-fpga-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F/

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

      لینک قسمت ششم:

      https://sisoog.com/2019/05/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-fpga-%D9%82%D8%B3%D9%85%D8%AA-%D8%B4%D8%B4%D9%85-%D8%B4%D8%A8%DB%8C%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1-%D8%A7%D8%B1%D8%AC%D8%A7/

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

      1. Avatar for حسین حسین گفت:

        سلام .
        متشکر .

  9. Avatar for هادی هادی گفت:

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

    1. Avatar for Phoenix Phoenix گفت:

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

  10. Avatar for َAmir َAmir گفت:

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

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

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

    1. Avatar for Phoenix Phoenix گفت:

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

  11. Avatar for سعید سعید گفت:

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

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

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

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

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