در قسمت اول برنامه ویدئویی آشنایی با نرمافزار ویوادو، شما را با قابلیتهای ویژه نرمافزار ویوادو و تفاوتهای مهم آن در مقایسه با نرمافزار ISE آشنایی کردم. همچنین به این سوال مهم پاسخ دادم که دقیقا چه زمانی و به چه دلیل باید از نرمافزار ویوادو استفاده کنیم.
در ویدئوی قسمت دوم، وارد نرمافزار ویوادو خواهیم شد و ضمن آشنایی با بخشهای مختلف آن، یک پروژه را در آن پیادهسازی خواهیم کردم.
More...
برای انجام پروژهها و تولید آموزشهای مرتبط با ویوادو، از برد Arty S7 که محصول شرکت دیجیلنت است استفاده میکنم. این برد دارای یک تراشه FPGA اسپارتان ۷ و تعدادی پریفرال جانبی نسبتا ساده است.
در قسمت دوم ویدئوی آشنایی با ویوادو، در مورد ایجاد یک پروژه، ساخت یک فایل VHDL و همچنین مراحل سنتز، جانمایی و مسیریابی صحبت خواهم کرد.
برای مشاهده قسمت اول ویدئوی آشنایی با نرمافزار ویوادو این برنامه را مشاهده کنید...
ویدئو یا متن؟
محتوای این برنامه آموزشی، به دو صورت ویدئو و متن آماده شده است. اگر علاقمند به یادگیری این مطلب به صورت ویدئویی هستید، ویدئوی زیر را ببینید و اگر ترجیح میدهید آن را به صورت متن مطالعه کنید، ادامه این مطلب را بخوانید.
برای دانلود نسخه با کیفیت این ویدئو، روی دکمه زیر کلیک کنید:
این مقاله، قسمت دوم از سری آشنایی با نرمافزار ویوادو است؛ در این مقاله، با محیط نرمافزار، نحوه ایجاد پروژه و چگونگی افزودن فایلها و ماجولها به پروژه آشنا خواهید شد.
در قسمت اول از سری آشنایی با نرمافزار ویوادو، با مباحث مقدماتی، ماهیت نرمافزار Vivado، تفاوت آن با نرمافزار ISE و کاربرد آن آشنا شدیم.
اگر تاکنون آن مقاله را مطالعه نکردهاید، میتوانید از طریق لینک زیر به آن مراجعه کنید:
برای مشاهده قسمت اول ویدئوی آشنایی با نرمافزار ویوادو این برنامه را مشاهده کنید...
اکنون بهسراغ ایجاد اولین پروژه و پیادهسازی آن در نرمافزار ویوادو میرویم.
پس از نصب نرمافزار Vivado، از طریق آیکونی که روی صفحه دسکتاپ ایجاد میشود، نرمافزار را باز کنید؛ در شکل زیر صفحه اول نرمافزار را مشاهده میکنید:

صفحه ابتدایی نرمافزار ویوادو
در سمت چپ تصویر، منوی Quick Start را ملاحظه میکنید؛ از طریق این منو، قادر به انجام سه عملیات هستید.
میتوانید از طریق گزینه Create Project، یک پروژه جدید ایجاد کنید.
اگر قبلاً بر روی پروژهای کار کردهاید، میتوانید گزینه Open Project را انتخاب کرده و فایل آن پروژه را باز کنید.
همچنین، پروژههایی بهعنوان نمونه در این نرمافزار وجود دارند که میتوانید آنها را از طریق گزینه Open Example Project باز کنید؛ به این ترتیب، میتوانید روی این مثالها کار کنید و از این طریق، تجربه و بینش خوبی کسب کنید.
اکنون بهسراغ ساخت اولین پروژه برویم.
ساخت پروژه در نرمافزار ویوادو
مشابه نرمافزار ISE، اولین کاری که باید برای شروع پیادهسازی انجام دهیم، ساخت یک پروژه جدید است.
بنابراین، ابتدا گزینه Create Project را انتخاب میکنیم:

ساخت یک پروژه جدید در نرمافزار ویوادو
سپس، در پنجرهای که مطابق شکل زیر باز میشود، گزینه Next را انتخاب میکنیم:

ساخت یک پروژه جدید در نرمافزار ویوادو
در پنجره بعدی (شکل زیر)، نام و محل ذخیرهسازی پروژه را انتخاب میکنیم:

تعیین نام و محل ذخیرهسازی پروژه جدید در نرمافزار ویوادو
دقت کنید که گزینه Create project subdirectory را از حالت انتخاب شده خارج نکنید؛ زیرا انتخاب آن باعث میشود که نرمافزار، فولدرهای موردنیاز را در فولدر اصلی پروژه ایجاد کند؛ در این فولدرها، فایلهای مختلف پروژه قرار خواهند گرفت.
سپس، گزینه Next را انتخاب میکنیم.
در پنجره بعدی (شکل زیر) میتوانید نوع پروژه را انتخاب کنید:

انتخاب نوع پروژه در نرمافزار ویوادو
در ۹۹ درصد اوقات، گزینه اول، یعنی، گزینه RTL Project را انتخاب میکنیم.
انتخاب این گزینه به این معناست که شما قصد دارید یک پروژه را از ابتدا و بهکمک ماجولهای VHDL یا Verilog، IPها و بخشهای مختلفی که وجود دارد پیادهسازی کنید.
سپس، میتوانید فرایندهای سنتز، جانمایی، مسیریابی و پراگرام کردن را برای پروژهای که میسازید انجام دهید.
بنابراین، من گزینه اول را انتخاب کرده و روی دکمه Next کلیک میکنم.

انتخاب تراشه FPGA موردنظرمان در فرایند ساخت پروژه در نرمافزار ویوادو
در پنجره بعدی، باید تراشه FPGAای که قصد پیادهسازی پروژه بر روی آن را دارید انتخاب کنید:
شرکت Xilinx انواع مختلف تراشههای FPGA را تولید میکند؛ شما در هنگام کار با نرمافزار ISE یا Vivado، حتماً باید برای نرمافزار مشخص کنید که قصد پیادهسازی پروژه بر روی چه تراشهای را دارید.
دلیل این کار این است که فرایندهای پیادهسازی، شامل سنتز، جانمایی و مسیریابی، همگی بر اساس ساختار تراشه FPGA موردنظر شما انجام خواهد شد.
بنابراین، نرمافزار باید از FPGA موردنظر شما اطلاع داشته باشد که بر اساس ساختار و منابع سختافزاری درون آن این فرایندها را انجام دهد.
نام بُردی که من برای مثالهای خودم در ارتباط با نرمافزار Vivado استفاده میکنم، بُرد RTS7 است؛ روی این بُرد، یک FPGA از نوع Spartan7 وجود دارد.
بنابراین، در قسمت Family، همانند شکل زیر خانواده Spartan7 را انتخاب میکنم:

انتخاب تراشه FPGA موردنظرمان در فرایند ساخت پروژه در نرمافزار ویوادو
همانطور که اطلاع دارید، FPGAهای شرکت Xilinx، در پکیجها یا بستهبندیهای مختلفی ارائه میشوند.
نوع Package مربوط به FPGA روی بُرد csga324 است؛ بنابراین، من همین گزینه را انتخاب میکنم.
پس از آن، باید speed grade را انتخاب کنیم.
مشخصه speed grade، یکی از مشخصات FPGA است که روی تراشه حک شده است.
speed grade تراشه FPGA روی بُرد من برابر با -1 است.
همانطور که در شکل بالا مشاهده میکنید، پس از تعیین این گزینهها، از بین تمام تراشههایی که در لیست وجود داشت، دو تراشه باقی مانده است.
در واقع، این دو FPGA، دو تراشه از خانواده Spartan7 هستند که تفاوت آنها در حجم منابع سختافزاریشان است.
بر روی بُرد من تراشه دوم قرار دارد؛ بنابراین، آن را انتخاب کرده و گزینه Next را فشار میدهم.
سپس، در پنجره Summary، گزینه Finish را انتخاب میکنم (شکل زیر):

مراحل ساخت یک پروژه جدید در نرمافزار ویوادو
اکنون منتظر میمانم تا پروژه من ساخته شود:

ساخت پروژه جدید در نرمافزار ویوادو
پس از ساخت پروژه، میتوانید پنجرههای مختلفی که در نرمافزار Vivado وجود دارند را مشاهده کنید:

محیط نرمافزار ویوادو
البته این پنجرهها ثابت نخواهند بود و در طول فرایند پیادهسازی تغییر خواهند کرد.
برای مثال، در حین انجام کارهای مختلف، از جمله کار با IPها، Debug کردن، کار مرتبط با گزارشهای مختلف و فرایندهای مختلفی که در طول پیادهسازی انجام میدهید، ساختار پنجرهها یا اصطلاحاً، layout صفحه تغییر خواهد کرد.
ممکن است محل قرارگیری پنجرهها تغییر کند یا پنجره جدیدی ظاهر شود. این مسئله بر این مبنا است که شما در کدام مرحله از پیادهسازی قرار دارید.
اما بهطور کلی، من پنجرههای موجود در تصویر زیر را به شما معرفی خواهم کرد:

معرفی پنجره Flow Navigator و Sources از نرمافزار ویوادو
در ستون سمت چپ، پنجره Flow Navigator را داریم که میتوانید در آن فرایند پیادهسازی را در یک نگاه مشاهده کنید.
در این پنجره، فرامین اجرایی برای ورود طرح، توصیف IP، شبیهسازی، تحلیلها، سنتز، جانمایی، مسیریابی، ساخت بیتفایل و گزارشگیری قرار دارد.
در پنجره Sources، ماجولهای مختلفی که در پروژهتان وجود دارد را میتوانید بهصورت طبقهبندی شده مشاهده کنید.
در واقع، در قسمت Design sources (قسمت شماره 1 در تصویر بالا)، میتوانید ماجولهایی مثل فایلهای VHDL، Verilog و IPها را ببینید.
همچنین، در قسمت Constrains (قسمت شماره 2 در تصویر بالا)، فایلهای قیود کاربر قابل مشاهده هستند.
البته فایل قیود نسبت به نرمافزار ISE کاملاً تغییر کرده است؛ من حتماً در برنامه دیگری در مورد این فایل توضیح خواهم داد.
در قسمت شماره 3، شما فایلهای مربوط به شبیهسازی را میتوانید ملاحظه کنید.
به این ترتیب، فایلهای مختلف بهصورت طبقهبندی شده قرار گرفتهاند.
روی هر قسمت از پنجره Source که دبلکلیک کنید، میتوانید در پنجره Property مشخصات آن را ملاحظه کنید.
مطابق شکل زیر، در بخش Project Summary، خلاصهای از پروژه وجود دارد:

معرفی پنجره Project Summary از نرمافزار ویوادو
در این بخش، خلاصهای از گزارشات مراحل مختلف پروژه نیز دیده میشود.
البته همانطور که گفتم، در مراحل مختلف، چینش پنجرهها تغییر میکند و پنجرههای متنوعی در محل Project Summary در شکل بالا قرار خواهند گرفت.
مثلاً، وقتی میخواهید یک ماجول جدید بسازید، ادیتور یا ویرایشگر نرمافزار، در همین قسمت ظاهر میشود.
یا مثلاً وقتی شبیهسازی میکنید، خروجیها و نمودارها را در این قسمت میبینید.
بهطور کلی به پنجره پایین صفحه، پنجره کنسول میگوییم:

معرفی پنجره Console از نرمافزار ویوادو
این پنجره تبهای متنوعی دارد.
با توجه به اینکه در کدامیک از مراحل پیادهسازی قرار دارید یا در حال استفاده از کدامیک از امکانات نرمافزارهستید، تعداد و نوع این تبها میتواند تغییر کند.
اکنون با این توضیحات اولیه، بهسراغ ساخت یک ماجول بسیار ساده VHDL برویم.
ساخت ماجول VHDL در نرمافزار ویوادو
برای اضافه کردن یک ماجول جدید به پروژه، مطابق شکل زیر روی گزینه Add Sources کلیک کنید:

اضافه کردن source جدید به پروژه در نرمافزار ویوادو
به این ترتیب، پنجرهای مطابق شکل زیر باز میشود که در آن سه انتخاب دارید:

اضافه کردن source جدید به پروژه در نرمافزار ویوادو
انتخاب اول برای ساخت یک فایل قیود کاربر استفاده میشود.
انتخاب دوم، برای ایجاد یک ماجول طراحی بهکار میرود؛ منظور از ماجول طراحی، همان ماجولهای VHDL یا Verilog است.
و در نهایت، از طریق گزینه سوم میتوانید یک ماجول مرتبط با شبیهسازی، مثل تستبنچ بسازید.
بنابراین، برای ساخت یک ماجول VHDL گزینه دوم را انتخاب کرده و سپس دکمه Next را فشار میدهیم.
در پنجره بعدی، نرمافزار، این امکان را به شما میدهد که اگر فایلهایی را از قبل بهصورت آماده دارید، آنها را بهکمک گزینه Add Files به پروژهتان اضافه کنید:

اضافه کردن source جدید به پروژه در نرمافزار ویوادو
اگر میخواهید فایل جدیدی ایجاد کنید، باید گزینه Create File را انتخاب کنید.
بنابراین، من مطابق شکل بالا، گزینه Create File را انتخاب کرده و روی دکمه Next کلیک میکنم.
همانطور که مشاهده میکنید در پنجرهای که باز میشود، برای نوع فایل، گزینه VHDL بهصورت پیشفرض انتخاب شده است (شکل زیر):

ساخت ماجول VHDL در نرمافزار ویوادو
اگر قصد نوشتن کد به زبان Verilog را دارید، میتوانید از منوی کشویی آن را انتخاب کنید.
من زبان VHDL را انتخاب میکنم.
در قسمت File name باید برای این ماجول نامی انتخاب کنیم؛ من قصد ساخت یک ماجول جمعکننده (Full Adder) تکبیتی را دارم، بنابراین، نام آن را FA1bit قرار میدهم:

تعیین نام و محل ذخیرهسازی ماجول در نرمافزار ویوادو
محل قرارگیری فایل ماجول باید در فولدرهای پیشفرض پروژه باشد؛ بنابراین، گزینه پیشفرض <Local to Project> را تغییر نمیدهیم.
سپس روی گزینه OK کلیک میکنیم.
به این ترتیب، مطابق شکل زیر این فایل به پروژه اضافه میشود؛ سپس، گزینه Finish را انتخاب میکنیم:

اضافه شدن ماجول VHDL به پروژه
پس از انتخاب گزینه Finish، پنجره Define Module باز میشود که در آن نرمافزار سوالاتی را در ارتباط با فایل VHDL میپرسد:

تنظیمات ماجول VHDL در نرمافزار ویوادو
مثلاً، در قسمت Entity name، میتوان نام دلخواهی برای Entity تعیین کرد.
طبق توصیه شرکت Xilinx، ما همیشه نام Entity را با نام فایل یکسان در نظر میگیریم.
البته این مسئله، حالت پیشفرض نرمافزار ویوادو نیز است.
همچنین، نام Architecture را از نام پیشفرض Behavioral تغییر نمیدهیم؛ زیرا در پیادهسازی، نام Architecture اهمیتی ندارد.
در قسمت I/O Port Definition، میتوانید پورتهای Entity را مشخص کنید.
ما میخواهیم یک Full Adder تکبیتی داشته باشیم؛ بنابراین، پورتها را بهصورت زیر مشخص میکنیم:

تعیین پورتهای ماجول VHDL در نرمافزار ویوادو
پورتهای B ،A و Cin ورودی و پورتهای S و Cout خروجی هستند.
همه پورتها را بهصورت تکبیتی تعیین کردهام.
برای پورتهای بیش از یک بیت، باید ستون Bus را تیک بزنیم و عرض بیت را تعیین کنیم.
سپس، گزینه OK را انتخاب میکنیم تا اولین فایل ما که FA1bit نام دارد ساخته شود.
همانطور که در شکل زیر میبینید، ماجول FA1bit در پنجره Sources و بخش Design Sources قرار گرفته است:

اضافه شدن ماجول VHDL به پروژه
حتماً علامتی که نشاندهنده تاپماجول است را از نرمافزار ISE میشناسید؛ همانطور که مشاهده میکنید، این علامت، در کنار ماجول FA1bit قرار گرفته است.
چون در این پروژه تنها یک ماجول داریم، نرمافزار، این ماجول را بهصورت پیشفرض بهعنوان تاپماجول در نظر گرفته است.
اگر روی آن دبلکلیک کنیم، در سمت راست یک تب جدید باز میشود که میتوانید کد درون ماجول را مشاهده کنید:

مشاهده و ویرایش کد درون ماجول VHDL
اگر بر روی نوار بالای هر پنجره دبلکلیک کنید، آن پنجره بهصورت تمامصفحه ظاهر میشود:

مشاهده ویرایشگر بهصورت تمامصفحه
میتوانید برای مرتب کردن کد، قسمتهای کامنت را از ابتدا و میانه آن حذف کنید.
سپس، در قسمت کانکارنت (بعد از begin مربوط به بخش Architecture) شروع به کدنویسی کنید.
برای نوشتن این ماجول ساده، مقادیر S و Cout را در محیط کانکارنت مشخص میکنیم.
همانطور که میدانید، S برای یک جمعکننده تکبیتی از رابطه زیر بهدست میآید:
S <= A xor B xor Cin;
و Cout نیز از رابطه زیر محاسبه میشود:
Cout <= (A and B) or (A and Cin) or (B and Cin);
نکتهای در نرمافزار Vivado وجود دارد، در رابطه با check syntax است.
در نرمافزار ISE، گزینهای بهنام check syntax داشتیم که با کلیک کردن بر روی آن، نرمافزار با بررسی کد، خطاهای سینتکسی آن را اعلام میکرد.
در نرمافزار Vivado چنین گزینهای وجود ندارد؛ اما زمانی که شما در حال کدنویسی هستید، نرمافزار بهصورت همزمان، عمل check syntax را انجام میدهد و خطاهای احتمالی را به شما گوشزد میکند.
خطی که دارای خطا است با یک خط قرمز رنگ مشخص میشود و اگر شما مکاننمای موس را روی آن خط قرار دهید، جزئیاتی از خطا را میتوانید مشاهده کنید (شکل زیر):

نحوه انجام Check Syntax در نرمافزار ویوادو
بنابراین، مسئله خطایابی یا check syntax در نرمافزار Vivado به این صورت انجام میشود.
کد ماجول ما بهصورت زیر است:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity FA1bit is
Port (
A : in STD_LOGIC;
B : in STD_LOGIC;
Cin : in STD_LOGIC;
S : out STD_LOGIC;
Cout : out STD_LOGIC);
end FA1bit;
architecture Behavioral of FA1bit is
begin
S <= A xor B xor Cin;
Cout <= (A and B) or (A and Cin) or (B and Cin);
end Behavioral;
اکنون ماجول ما کامل است و میتوانیم آن را save کرده و مراحل پیادهسازی را برای آن انجام دهیم.
پیادهسازی پروژه در نرمافزار ویوادو
همانطور که میدانید، برای یک پروژه کامل، ما نیاز به فایل قیود کاربر نیز داریم؛ این فایل، برای اعمال pin assignment و برخی قیدهای دیگر بهکار میرود.
اما در این مثال، با توجه به اینکه هدف ما آشنایی مقدماتی با نرمافزار Vivado است، کار پیادهسازی این پروژه را در همین جا به پایان میرسانیم و از منوی سمت چپ فرمان پیادهسازی را صادر میکنیم.
برای مثال، میتوانیم با کلیک بر روی گزینه Run Synthesis دستور اجرای عملیات سنتز را بدهیم.
یا میتوانیم با کلیک بر روی گزینه Run Implementation، به نرمافزار فرمان دهیم تا عملیات implementation را انجام دهد؛ منظور از عملیات implementation، همان مراحل جانمایی (placement) مسیریابی (routing) است.
یا میتوانیم گزینه generate bit stream را انتخاب کنیم؛ به این ترتیب، نرمافزار، بیتفایل نهایی که باید آن را روی FPGA پروگرام کنیم میسازد:

نحوه پیادهسازی پروژه در نرمافزار ویوادو
همانطور که میدانید، مشابه نرمافزار ISE، اگر هر کدام از مراحل را انتخاب کنید و مراحل قبل از آن انجام نشده باشند، نرمافزار بهصورت خودکار آن مراحل را انجام میدهد.
بنابراین، من بهراحتی میتوانم روی گزینه generate bit stream کلیک کنم و گزینه OK را انتخاب کنم تا مراحل پیادهسازی آغاز شود.
اگر دقت کنید در قسمت بالا-سمت راست نرمافزار، عبارت Running synth-design نوشته شده است؛ این عبارت به این معناست که مرحله سنتز در حال انجام است.
و به همین ترتیب، نرمافزار در این قسمت عنوان هر مراحلهای که در حال انجام آن است را گزارش میکند.
البته قاعدتاً ما در حین این پیادهسازی با خطا مواجه خواهیم شد؛ زیرا وجود فایل قیود کاربر و اعمال قیدهای pin assignment و تعیین استاندارد IOها در نرمافزار Vivado، اجباری است.
اگر این کارها را انجام ندهید، در یکی از مراحل پیادهسازی به شما هشدار بحرانی (critical warning) اعلام میکند و در مراحل انتهایی تبدیل به خطا میشود.
پس از انجام مراحل پیادهسازی، پنجرهای با عنوان Bitstream Generation Failed ظاهر میشود؛ بنابراین، تولید بیتفایل با خطا روبهرو شده است.
در شکل زیر، گزینه OK را انتخاب میکنیم:

عدم موفقیت در ساخت بیتفایل
اکنون میتوانیم به قسمت log برویم و نوع خطا را مشاهده کنیم:

مشاهده خطاها در قسمت log نرمافزار ویوادو
البته میتوانیم خطاها را بهصورت طبقهبندی شده نیز ببینیم؛ باید مطابق شکل زیر، به قسمت پیامها یا messages برویم:

مشاهده خطاها در قسمت messages در نرمافزار ویوادو
در این قسمت، نرمافزار به ما warningها، errorها و critical warningها را نشان میدهد.
همانطور که مشاهده میکنید، مشکل پروژه ما، عدم استفاده از قیود است؛ قیودی که در فایل قیود کاربر مخصوص نرمافزار Vivado قرار داشته باشد.
با توجه به هدف من از این مثال ساده که آشنایی مقدماتی با نرمافزار Vivado بود، از این فایل استفاده نکردم.
اما در برنامه آموزشی دیگری فایل قیود کاربر مخصوص نرمافزار Vivado را به شما معرفی خواهم کرد.
نحوه اعمال و استفاده از آن قیود را نیز در آن برنامه به شما توضیح خواهم داد.
فایل قیود کاربر در نرمافزار Vivado با نرمافزار ISE کاملاً متفاوت است؛ هم عنوان این فایل متفاوت است و هم syntax متفاوتی دارد.
بنابراین، این موضوع به یک بررسی جامع در برنامهای جداگانه نیاز دارد.
امیدوارم از خواندن این مقاله هم لذت برده باشید و بتوانید از نکات یاد گرفته شده، در انجام پروژههایتان استفاده کنید.
آیا برنامه ویدئویی آشنایی با نرمافزار ویوادو - قسمت دوم برای شما مفید بود؟
لطفا نظرتان را در مورد این برنامه در پایین همین پست با دیگران به اشتراک بگذارید. همچنین با کلیک روی هر کدام از دکمههای اشتراک گذاری ابتدای این مطلب و به اشتراکگذاری آن در شبکههای اجتماعی میتوانید افراد بیشتری را در یادگیری این مطالب سهیم کنید.

