در قسمت دوم از آموزش fpga یاد گرفتیم که چه موقع باید سراغ تراشههای FPGA برویم، به مقایسه این تراشهها با میکروکنترلرها پرداختیم و در نهایت منابع داخلی FPGA را معرفی کردیم. اکنون قصد داریم که با محیط نرمافزار ISE و همچنین زبان VHDL آشنا شویم.
نرمافزار ISE جایگزین نرم افزار Vivado
نرمافزار ISE یا به طور کاملتر Xilinx ISE Design Suite یک مجموعه نرمافزاری است که خود شامل چندین نرمافزار میباشد؛ و از این نرمافزارها برای طراحی، شبیهسازی، برنامهریزی و بسیاری از کارهای دیگر استفاده میشود که در ادامهی این مجموعه آموزشی بیشتر با آنها آشنا خواهیم شد. همچنین پس از نسخه 14.7، نسخه جدیدی ارائه نشد و جای خود را به نرمافزار Vivado داد. البته ناگفته نماند، تراشههایی که در ISE در دسترس هستند، در Vivado غیرقابل دسترس هستند و همینطور بالعکس. پس ما با توجه به تراشهای که قصد داریم با آن کار کنیم نرمافزار مورد نظر را انتخاب خواهیم کرد. در این مجموعه آموزشی، چون مبنای آموزش بر اساس تراشهی Spartan-6 خواهد بود، پس نرمافزار ISE را انتخاب کردهایم.
نصب نرمافزار ISE
- ابتدا وارد فولدر C:\Xilinx\14.7\ISE_DS\ISE\lib\nt64 شوید و نام فایل libPortability.dll را به libPortability.dll.orig تغییر دهید.
- در فولدر مرحله 1، یک کپی از فایل libPortabilityNOSH.dll ایجاد کنید و نام آن را libPortability.dll بگذارید.
- حال وارد فولدر C:\Xilinx\14.7\ISE_DS\common\lib\nt64 شوید و فایل libPortabilityNOSH.dll را در این فولدر هم کپی کنید.
- در فولدر مرحله 3، نام فایل libPortability.dll را به libPortability.dll.orig تغییر دهید.
- در آخر، نام فایل 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 انجام داد می توان گفت عملا استفاده از پکیجهای قدیمی کاری بیهوده است اما هنوز هم هستند کسانی که علاقه دارند یک عالمه پکیج همان اول کد اضافه کنند که مبادا چیزی را از دست داده باشند.
در این کد ساده ما اول کد فقط دو خط زیر را اضافه می کنیم:
1 2 | library IEEE;use IEEE.STD_LOGIC_1164.ALL; |
بعد از begin مربوط به architecture کد مورد نظرمان را مینویسیم، که البته ما در این پروژه به خاطر سادگی فقط یک خط کد نوشتیم. در این کد، ما در ابتدا A را با AND ،B و سپس نتیجه را با OR ،C کردهایم.
با استفاده از مسیر زیر میتوانید شماتیک سخت افزار ایجاد شده را مشاهده نمائید:
View RTL Schematic → OK → Add → Create Schematic
پس از اینکه مسیر بالا را طی کردید فقط یک شماتیک کلی اولیه که شامل ورودی-خروجیهای مدار شما میباشد نمایش داده خواهد شد، با دابل کلیک بر روی آن میتواند به شماتیک زیر برسید.
امیدوارم که تا اینجا فرق زبان VHDL با زبانهای برنامهنویسی را به خوبی درک کرده باشید، البته در ادامه با توضیحات بیشتری که خواهیم داد مفهوم کاملا برای شما روشن خواهد شد. در قسمت چهارم با ساختار کد و مدارهای ترکیبی و ترتیبی در زبان VHDL آشنا خواهیم شد. پس با سیسوگ همراه باشید.
سلام.
من می خواستم با آیسی GAL16V8 کار کنم. و از بحث FPGA همین یک آیسی رو می خوام.
می خوام بدونم ساده ترین آموزش و نرم افزار برنامه نویسی این آیسی چی است. می تونید راهنمایی کنید. البته برای تست این آیسی تو پروتئوس است.
با تشکر
سلام ،
خدا قوت مرسی از همه آموزش هایی که میزارید
احیانا شما نسخه های قدیمی تر این نرم افزار رو دارید؟
بنده در یک کلاسی در حال تدریس هستم و نسخه های قدیمی مثل 7 و 8 بسیار سبک تر و ساده تر هستن برای کار کردن
من واقعا دنبالش هستم اگر دارید ممنون میشم با من شیر کنید
خیلی ممنونم
سلام و درود بر شما از سایت خودش قابل دانلود هست فکر میکنم
لینک زیر رو ببینید
دانلود ise 8
سلام
میخواستم بدونم اگر بجای برد اموزشی از یک ایسی fpga استفاده کنیم چطور میتونم بفهمیم توی کدوم نر افزار میشه بهش برنامه داد؟
تراشه ای که من ازش استفاده کردم اینه:
atmel at17n512
سلام. خب این تراشه که میفرمائید برا شرکت Atmel، باید ابزار مناسب با خودش را از این سایت شرکت دریافت کنید. اینجا ما با تراشهها و ابزارهای شرکت Xilinx کار میکنیم.
سلام وقت بخیر ،ممنون از زحمات شما و اینکه با حوصله و روان توضیح میدین،سوالم این بود که ارتباط ISEبا FPGAچیه،ایا این یک محیط برای برنامه نویسیه یا …؟ممنون
سلام دوست عزیز. ISE یک مجموعه نرمافزاری میباشد که تقریبا تمام نرمافزارها و ابزارهای لازم برای کار با FPGA را دارد. این نرمافزار هم محیطی است برای نوشتن کد به عنوان یه ادیتور، هم ترجمه، سنتز، مپ و روتینگ را برای شما انجام میدهد.
از طرفی دیگر ISIM که درون این نرمافزار وجود دارد برای شبیهسازی استفاده میشود.
نرمافزار ChipScope برای خطایابی و دیباگ و همچنین شبیهسازی واقعی بر روی برد استفاده میشود.
نرمافزاری برای توسعه امبدد سیستم یا همان میکروبلیز وجود دارد.
و بسیاری از موارد دیگر.
سلام ممنون بسیار عالی بود
سلام نازنینم.
خوشحالیم که این مقاله برای شما مفید واقع شده است.
سلام و تشکر . View RTL Schematic رو پیدا نمیکنم. نیست داخل باکس سمت چپ!
درود. مشکل شما یکی از دو مورد زیر میباشد:
1. در قسمت Hierarchy، تاپ ماجول را Select نکردهاید، که ابتدا باید تاپ ماجول را Select کنید تا در قسمت Processes گزینهی View RTL Schematic نمایش داده شود.
2 . اگر مورد 1 را به درستی انجام دادید و هنوز مشکل وجود داشت، در قسمت Processes روی علامت + کنار گزینهی Synthesize – XST کلیک کنید تا View RTL Schematic نمایش داده شود.
سلام فونیکس
ممنون بابت مطالب خوبی که قرار میدید.
امروزم یکی از مشکلاتی که داشتم توسط مطلب خوبتون رفع شد.
من کلاسهای متقاوتی شرکت کردم برای بحث FPGA
و واقعا میتونم به جرات بگم که مطالبتون واقعا از کیفت بالایی برخوردار هستند.
امیدوارم که همینطور با دوام و با قدرت به کارتون ادامه بدید
مرسی یونس 313 عزیز، بابت نظر مثبتتون.
سلام .
متشکر بابت مطلب خوبتون .
راستش وقتی این مطلب رو خوندم به اونجا که گفتید :”حاصل برنامه نویسی یک سخت افزار است” یک چیزی درذهنم جرقه زد .
آیا fpga اینقدر گیت داره که بشه باهاش یک alu یا cpu ساخت ؟راستش این کمی من رو به هیجان آورد ، …..یک cpu شخصی !!!!( امان از این فتنه ها که در سر ماست)
سلام بر حسین عزیز. و سپاس از توجه شما. اگر دقت کرده باشید ما گفتیم که حاصل کدنویسی، ایجاد یک سختافزار خواهد بود؛ نه حاصل برنامهنویسی. چون در اینجا هیچ برنامهای وجود ندارد و در نهایت کد موردنظر تبدیل به سختافزار خواهد شد. وقتی از برنامه حرف میزنیم انتظار میرود که یک 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 را به میکروکنترلر تبدیل کنیم، که به این قابلیت میکروبلیز میگویند.
سلام .
متشکر .
سلام
بسیار عالی توضیح دادید و بحث خیلی جذابی هست
لطفا در ادامه آموزش ها یه برد آماده بازاری یا حداقل مدار رو برای راه اندازی و برنامه ریزی معرفی کنید
ممنونم
سلام دوست عزیز. ممنون از نظر مثبت شما. حقیقتا اینکه این آموزش همراه با برد باشد یا خیر در تیم سیسوگ در حال بررسی میباشد. کمی صبور باشید، نتیجه به شما اعلان خواهد شد.
سلام
ممنون از زحماتتون و وقتی که برای آموزش صرف می کنید …
با عرض احتران باید بگم که متاسفانه ظاهرا شنا در بخش قبلی FPGA ها را با میکروکنترلرها مقایسه کردین و اینو در ابتدای این مطلب هم یادآوری کردین
من به شخصه با تجریه ای که در کا با FPGA و میکروکنترلرها دارم باید بگم که این مقایسه اصلا درست نیست . این 2 تا دو بحث کاملا جدا هستن و اصلا قابل قیاس با یکدیگر نیستند. مثل مقایسه کردن یه ماشین بوگاتی با یک هواپیمای جنگنده هست!! هواپیما رو با هواپیما مقایسه کنید …
ممنون از سایت خوبتون
سلام بر شما دوست عزیز. سپاس از اینکه مطالب را به صورت جدی دنبال و نظرتون را بیان میکنید. اگر توجه کرده باشید ما در اول مقاله قبل گفتیم که فلان پروژه با فلان پارامترها وجود دارد، و بعد اومدیم گفتیم که این پروژه با چه ابزاری قابل پیادهسازی میباشد؟ در نهایت با بررسی پارامترهایی که عمدتا به سرعت مربوط میشدند گفتیم که این پروژه با FPGA قابل پیاده سازی است، نه اینکه بگوییم FPGA بر میکروکنترلر ارجحیت دارد یا بالعکس. یا در همین مثال خودتان؛ فرض کنید که ما نیاز به پرواز کردن داریم، و دو ابزار بوگاتی یا هواپیما در اختیار ماست، خب چیزی که مشخصه انتخاب ما هواپیما خواهد بود چون بوگاتی اصلا برای همچین کاری خلق نشده است، هرچند هم که بخواهد خفن باشد. نتیجتا کاری که ما کردیم مقایسه کاربردها بود نه صرفا ذات دو ابزار. و در یک جمله ما در مفهوم مقاله قبل گفتیم که این تراشهها دو ابزار کاملا متفاوت با کاربردهای متفاوت میباشند که به نظر من حداقل این مقایسه و تحلیل هیچ اشکالی ندارد.
سلام. مطلب رو خیلی ساده و روان توضیح میدهید. اگر براتون ممکن است فرق cpld را با fpga بصورت ساده مثلا با مقایسه 2 مدل تراشه یا محل کاربرد معمول توضیح بدهید .
ممنون.
سلام و درود دوست عزیز ؛
تفاوت cpld و fpga چندان نیست که بخوایم یک مقاله در خصوصش منتشر کنیم ؛ خیلی ساده اگر بخوام بگم cpld داخل خودش eeprom داره و بیت فایل رو به شکل داخلی نگهداری میکنه در صورتی که توی fpga رم وجود داره و باید بیت فایل رو روی حافظه فلش خارجی ذخیره کرد.
بعد از اون تفاوت تعداد گیت ها است ؛ اوی fpga تعداد گیت ها بهتره بگم میکروسل ها خیلی بیشتر از cpld هست ؛ مثلا توی Cpld تعداد میکروسل ها به زحمت تا یک کیلو میکروسل برسه در حالی در fpga این تعداد خیلی بیشتره
تفاوت بعدی توی سرعت هست که fpga سرعت بالاتری رو پشتیبانی میکنه در حالی که غالبا cpld سرعت پایین تری رو داره.