با بینشی که تا اینجا نسبت به مفهوم، ماهیت و کاربردهای FPGA به دست آوردید، اکنون زمان آن فرا رسیده تا کمی عملیتر وارد موضوع طراحی و پیادهسازی دیجیتال به کمک FPGA شوید.
در ادامه برنامههای “آموزش FPGA از صفر”، شما را مرحله به مرحله با نرمافزار مخصوص پیادهسازی با FPGA و زبان توضیف سختافزاری VHDL آشنا میکنم.
در اولین برنامه از دور جدید آموزشها، قصد دارم شما را با نرمافزار مخصوص پیادهسازی به کمک FPGA به نامISE Design Suite که محصول شرکت Xilinx هست آشنا کنم.
More...
به کمک نرمافزار ISE Design Suite میتوانید تمام مراحل طراحی و پیادهسازی شامل ورود طرح، شبیهسازی، سنتز، جانمایی و مسیریابی رو انجام بدید. بعد از آن فایل پیکرهبندی را ایجاد کنید و FPGA را پروگرام کنید.
به کمک نرمافزار ISE میتوانید انواع تحلیلهای زمانی و توان مصرفی را برای طرحی که پیادهسازی کردید انجام بدید.
این نرمافزار IP Coreها یا کدهای از پیش نوشته شده زیادی را در اختیارتان قرار میدهد که میتوانید به کمک آنها مدارات بزرگ را سریعتر طراحی و تست کنید.
به کمک دهها قابلیت دیگر این نرمافزار و بدون نیاز به هیچ نرمافزار دیگری میتوانید به راحتی، تمام مراحل پیادهسازی را انجام دهید.
ویدئو یا متن؟
محتوای این برنامه آموزشی، به دو صورت ویدئو و متن آماده شده است. اگر علاقمند به یادگیری این مطلب به صورت ویدئویی هستید، ویدئوی زیر را ببینید و اگر ترجیح میدهید آن را به صورت متن مطالعه کنید، ادامه این مطلب را بخوانید.
برای دانلود نسخه با کیفیت این ویدئو، روی دکمه زیر کلیک کنید:
در این مقاله، قصد دارم شما را با نرمافزار ISE Design Suite آشنا کنم.
این نرمافزار از سوی شرکت XILINX، برای طراحی و پیادهسازی سیستمهای دیجیتال به وسیلهی FPGAهای این شرکت، ارائه شده است.
نرمافزارهای شرکت XILINX
به طور کلی، شرکت XILINX دو نرمافزار ارائه داده است؛ یکی نرمافزار ISE و دیگری نرمافزار Vivado.
نرمافزار Vivado، نرمافزار جدید این شرکت است که از اواخر سال 2013 عرضه شده است.
پیشنهاد شرکت XILINX این است که استفادهکنندگان از FPGAهای این شرکت، هر چه سریعتر شروع به استفاده از نرمافزار Vivado کنند.
اما با توجه به اینکه در حال حاضر اکثر شرکتها هنوز از نرمافزار ISE استفاده میکنند، بهتر است که ابتدا با این نرمافزار آشنا شویم.
در آموزشگاه فراد اندیش نیز ما از نرمافزار ISE در دورههای تخصصیمان استفاده میکنیم.
مراحل پیادهسازی یک مدار روی FPGA به کمک نرمافزار ISE
قبل از اینکه وارد محیط نرمافزار شویم، اجازه دهید به صورت کلی به روندی که باید برای پیادهسازی یک مدار در این نرمافزار در پیش بگیرید اشاره کنم:
شما میتوانید به کمک ادیتور نرم افزار ISE، طرحتان را به یکی از زبانهای VHDL یا Verilog وارد کنید.
همچنین میتوانید با شبیهساز نرمافزار ISE که ISim نام دارد، طرحتان را شبیهسازی کنید.
سپس، طرح را سنتز میکنید.
پس از آن، عمل جانمایی و مسیریابی (Placement و Routing) را انجام میدهید.
و فایل پیکرهبندی یا همان Bit File (که در مقالههای قبلی دربارهی آن توضیح دادم) را میسازید.
سپس با قابلیتی که در این نرمافزار وجود دارد و به کمک یک پروگرامر خارجی، FPGA را پروگرام میکنید.
قابلیتهای دیگر نرمافزار ISE
از قابلیتهای دیگری که این نرمافزار دارد این است که میتوانید به کمک آن برای طرحتان انواع بهینهسازیها را انجام دهید.
حتی میتوانید به کمک یکی از قابلیتهای بسیار مهم ISim، که به آن Chip Scope میگویند، طرحتان را در حین اینکه بر روی FPGA پروگرام شده و در حال کار است، تست کنید.
ارائهی IP Coreهای آماده، یکی دیگر از امکانات این نرمافزار است؛ IP Coreها، کدهای از قبل نوشته شدهای هستند که شما میتوانید در طرحهایتان از آنها استفاده کنید.
به کمک نرمافزار ISE میتوانید انواع تحلیلها را قبل از پیادهسازی نهایی کدتان انجام دهید؛ تحلیلهای زمانی و تحلیل توان مصرفی از جملهی مهمترین این تحلیلها هستند.
این نرمافزار به شما گزارشات مفصلی از مراحل سنتز، جانمایی، مسیریابی و شبیهسازی ارائه میدهد که با تحلیل این گزارشات شما میتوانید متوجه شوید که طرحتان تا چه اندازه طبق انتظارات شما عمل میکند.
اکنون با این توضیحات اجازه دهید با محیط نرمافزار ISE هم آشنا شویم.
ورود به محیط نرمافزار ISE
پس از نصب نرمافزار ISE، برای اجرای آن، باید مطابق شکل زیر و با توجه به نوع ویندوزتان که ۳۲بیتی یا ۶۴بیتی است، یکی از گزینهی Project Navigator را انتخاب کنید:
پس از اجرای نرمافزار، صفحهای مطابق شکل زیر مشاهده میکنید:
در حال حاضر، هیچ پروژهای در این صفحه باز نیست.
اولین کاری که برای شروع مراحل پیادهسازی باید انجام دهید، ساخت یک پروژه است.
تنظیمات ساخت یک پروژهی جدید در نرمافزار ISE
برای ساخت یک پروژه، میتوانید مطابق شکل زیر، دکمهی New Project را از صفحهی اول این نرمافزار انتخاب کنید؛ و یا از منوی File گزینهی New Project را انتخاب کنید:
اکنون باید نامی برای پروژهتان انتخاب کنید؛ برای مثال من نام First_project را انتخاب میکنم.
در قسمت Location نیز باید محل قرار گرفتن پروژه را انتخاب کنید که من آن را در فولدری به نام XILINX Project قرار میدهم:
در مرحلهی بعد، باید مشخص کنیم که قصد داریم این پروژه را روی چه تکنولوژیای پیادهسازی کنیم. همانطور که میدانید شرکت XILINX دارای انواع مختلف FPGAها است که در یکی از مقالههای سایت به نام "شرکتهای سازندهی FPGA و محصولات آنها" به طور مفصل دربارهی آن توضیح دادهام.
قبل از اینکه شروع به کار طراحی و پیادهسازی کنید، باید مشخص کنید که طرحی که در حال توسعهاش هستید، برای پیادهسازی روی کدام FPGA در نظر گرفتهاید.
مطابق شکل زیر، در قسمت Family مشخص کنید که FPGA شما از کدام خانوادهی FPGAها است.
من SPARTAN 6 را انتخاب میکنم، چون مثالهای عملی که برای مقالههای بعدی در نظر گرفتهام، روی این FPGA پیادهسازی خواهند شد و در دورههای تخصصی آموزشگاه فرا اندیش نیز از همین FPGAها استفاده میکنیم.
خانوادهی SPARTAN 6، دارای اعضای متنوعی است که در زیر میتوانید تعدادی از آنها را ببینید. FPGAای که من در اختیار دارم از نوع XC6SLX9 است.
بستهبندی یا پکیج FPGA را از نوع TQG144 انتخاب میکنم.
گزینهی بعدی، Speed Grade است که یکی از مشخصههای FPGA است که روی آن نوشته شده است؛ من مطابق شکل زیر، Speed Grade را روی گزینهی ۳- قرار میدهم.
اکنون در قسمت Synthesis Tool مشخص میکنم که از چه نرمافزاری برای سنتز کد من استفاده شود.
ممکن است این سوال پیش آید که چرا ما باید نرمافزاری را انتخاب کنیم؟
دلیل این مسئله این است که برخی شرکتها، نرمافزارهایی برای بعضی از مراحل طراحی تولید میکنند؛ مثلاً، نرمافزاری مخصوص سنتز مدار و یا نرمافزار شبیهساز مدار ارائه میکنند.
این شرکتها حتی ممکن است تولیدکنندهی تراشهی FPGA نباشند و صرفاً نرمافزار تولید میکنند.
برای مثال، برای شبیهسازی مدار، به جز نرمافزار شبیهساز شرکت XILINX که ISim نام دارد، شبیهسازهای دیگری نیز وجود دارند؛ مانند شبیهساز ModelSim.
اگر این شبیهساز را روی کامپیوترتان نصب کردهاید، میتوانید از قسمت Synthesis Tool، آن را انتخاب کنید.
ما در این پروژه، از شبیهساز نرمافزار ISE که XST نام دارد استفاده میکنیم. XST مخفف XILINX Synthesis Tool است.
برای Simulator هم از شبیهساز خود نرمافزار ISE که ISim نام دارد، استفاده میکنیم.
در قسمتPreferred Language مشخص میکنیم که زبان مطلوب ما کدام یک از زبانهای VHDL یا Verilog است. توجه کنید که انتخاب یکی از این زبانها به این معنا نیست که شما حتما باید به آن زبان کدنویسی کنید؛ مثلاً، اگر من VHDL را انتخاب کنم، میتوانم برخی از ماژولهای پروژه را به زبان VHDL و برخی دیگر را به زبان Verilog کدنویسی کنم.
پس دلیل اینکه ما در این پنجره یکی از زبانها را انتخاب میکنیم چیست؟
دلیلش این است که در بعضی از مراحل طراحی، بخشی از کدها را خود نرمافزار برای ما تولید میکند و با مشخص کردن Preferred Language، ما برای نرمافزار مشخص میکنیم که آن کدها را به چه زبانی برای ما تولید کند.
من زبان VHDL را انتخاب میکنم و سپس دکمهی Next را فشار میدهم.
اکنون، مشخصات پروژه را بار دیگر مرور میکنیم و پس از آن، دکمهی Finish را فشار میدهیم:
مطابق شکل زیر، پروژهی ما ساخته شده است اما در آن هیچ فایل و طرحی وجود ندارد:
در صفحهی اصلی ISE چند پنجره داریم؛ پنجرهی کوچکی که در سمت چپ شکل زیر میبینید، پنجرهی Hierarchy است که فایلها را به صورت سلسله مراتبی نشان میدهد:
در زیر آن پنجره، پنجرهی Process را داریم که کارهایی مثل سنتز، جانمایی، مسیریابی، ساخت فایل بیتی و غیره را به کمک گزینههایی که در آن وجود دارد، انجام میدهیم:
پنجرهی بزرگتر، پنجرهای است که در آن طرح را Edit میکنیم.
پنجرهی پایین صفحه، Console نام دارد؛ در این پنجره، نرمافزار اطلاعاتی را به ما میدهد.
ایجاد اولین فایل در نرمافزار ISE
برای ایجاد اولین فایل، از پنجرهی Hierarchy استفاده کنیم.
دو حالت وجود دارد؛ یا ما از قبل، ماژولهای آماده داریم و میخواهیم به پروژه اضافه کنیم و یا اینکه میخواهیم یک ماژول یا فایل جدید ایجاد کنیم.
اگر در هر بخش از پنجرهی Hierarchy کلیک-راست کنید، مطابق شکل زیر، یک منو ظاهر میشود؛ گزینهی Add Source برای اضافه کردن ماژولهایی است که از قبل آماده کردهایم و New Source، برای ایجاد یک ماژول جدید است.
چون ما ماژولی از قبل نداریم، من گزینهی New Source را انتخاب میکنم.
مطابق شکل زیر، در پنجرهای که باز میشود، انواع ماژولهایی را که میتوان به پروژهی ISE اضافه کرد میبینید:
در حال حاضر، من میخواهم یک فایل VHDL یا ماژول VHDL را به پروژه اضافه کنم.
بنابراین مطابق شکل زیر، گزینهی VHDL Module را انتخاب میکنم و برای این ماژول، نامی قرار میدهم؛ چون قصد طراحی یک Adder را دارم، نام ماژول را Adder انتخاب میکنم.
دکمهی Next را فشار میدهم.
اگر در پنجرهی شکل زیر، دوباره دکمهی Next را فشار دهم، با یک فایل Text خالی روبهرو میشوم.
اما نرمافزار ISE به وسیلهی پنجرهی Wizard این امکان را به شما میدهد که حداقل بخش Entity یا بخش پورتهای مدارتان را در این قسمت مشخص کرده و بسازید.
مثلاً، من برای ساخت یک Full Adder تک بیتی، احتمالاً دو پورت ورودی A و B نیاز دارم. همچنین، به سیگنال Carry In و پورتهای خروجی Sum و Carry Out نیز نیاز دارم که آنها را به صورت شکل زیر مشخص میکنم و سپس دکمهی Next را فشار میدهم:
در پنجرهی زیر، بار دیگر تنظیمات انجام شده را مرور میکنم و سپس دکمهی Finish را فشار میدهم:
در شکل زیر میبینید که نرمافزار در قسمت ادیتور، بخشی از کد را به صورت اتوماتیک، برای من ایجاد میکند. به بخش Entity دقت کنید:
برای کامنتگذاری در زبان VHDL، از دو منها استفاده میکنیم. میتوانیم مانند شکل زیر، کامنتهای پیشفرض که به رنگ سبز هستند را پاک کنیم تا ظاهر کد بهتر شود:
پس، یک فایل به نام فایلAdder.vhd ایجاد شده است؛ فایلهای VHDL مربوط به نرمافزار ISE با پسوند VHDL ذخیره میشوند.
در خط چهارم از کد، نرمافزار به صورت خودکار نام فایلمان را به عنوان نام Entity داده است؛ بهتر است همیشه این قاعده را رعایت کنیم؛ یعنی، نام Entity را با نام فایلمان یکی انتخاب کنیم.
همانطور که در شکل بالا میبینید، مود پورتها به صورت ورودی یا خروجی است و تایپ یا نوع آنها، STD_LOGIC است.
در خط ۱۳اُم، Architecture قرار دارد و همانطور که در برنامهی آشنایی با زبان VHDL توضیح دادم، میتوانیم بعد از عبارت Begin از بخش Architecture، کد توصیفکنندهی مدارمان را بنویسیم.
مثلاً، میتوانیم برای خروجیهای Sum و Cout عبارات خطهای ۱۷اُم و ۱۸اُم کد زیر را بنویسیم:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity Adder is Port ( A : in STD_LOGIC; B : in STD_LOGIC; Cin : in STD_LOGIC; Sum : out STD_LOGIC; Cout : out STD_LOGIC); end Adder; architecture Behavioral of Adder is begin Sum <= A xor B xor Cin; Cout <= (A and B) or (A and Cin); end Behavioral;
این اولین مقالهی ما در نرمافزار ISE است؛ قصد ندارم در آن راجع به زبان VHDL خیلی صحبت کنم و هدف من بیشتر آشنایی اولیهی شما با نرمافزار ISE است.
کد را مانند شکل زیر Save میکنیم:
انجام مراحل پیادهسازی کد روی FPGA در نرمافزار ISE
فایلهای مربوط به این پروژه در قسمت Hierarchy مشاهده میشوند؛ که ما در این پروژه فقط یک فایل، به نام فایل Adder داریم و اگر روی آن کلیک کنیم، کارهایی را که میتوانیم را روی این فایل انجام دهیم را مطابق شکل زیر، در زیر منوی Process میبینیم:
مثلا اگر من بخواهم این کد را سنتز کنم، میتوانم روی گزینهی Synthesize - XST کلیک کنم.
پس از شروع عمل سنتز، اطلاعات و گزارش مربوط به سنتز مانند شکل زیر در پنجرهی کنسول به من نمایش داده میشود؛ البته این اطلاعات در یک فایل هم ذخیره میشود که شما بعداً به آن دسترسی خواهید داشت.
سپس میتوانید عمل Place و Routing را انجام دهید و در نهایت هم با انتخاب گزینهیGenerate Programming File میتوانید فایل Configuration یا همان Bit File را تولید کنید.
بسته به اینکه کد شما چقدر پیچیده باشد، اعمال سنتز، place و rout میتواند زمان زیادی طول بکشد؛ این زمان، گاهی به نیم ساعت و بیشتر هم میرسد. بعد از اینکه شما Bit File را ساختید، باید این فایل را روی FPGA پروگرام کنید تا FPGAتان تبدیل به مداری شود که به کمک کد VHDL پیادهسازی کردید.
بعد از ذخیره کردن فایل، اجازه دهید نگاهی به فولدری که برای پروژه تعریف کرده بودیم، بیاندازیم.
در شکل زیر میبینید که یک فولدر به نام پروژهای که مشخص کرده بودیم، ایجاد شده است و تمام فایلها در آن قرار گرفتهاند.
فایلی که با آیکون نرمافزار ISE مشخص شده است همان فایل پروژهمان است که با دبل-کلیک روی آن میتوانید هر بار، پروژه را از همین جا باز کنید.
نرمافزار ISE، قابلیتهای زیادی دارد که به مرور و در مقالههای بعدی که راجع به زبان توصیف سختافزاری VHDL هستند، دربارهی آن بیشتر خواهیم آموخت.
امیدوارم که این مقاله هم مورد توجه شما قرار گفته باشد. از شما میخواهم که نظرات و پیشنهاداتتان در مورد این مقاله را در پایین همین پست با من به اشتراک بگذارید.
آیا برنامه ویدئویی آشنایی با نرمافزار ISE Design Suite برای شما مفید بود؟
لطفا نظرتان را در مورد این برنامه در پایین همین پست با دیگران به اشتراک بگذارید. همچنین با کلیک روی هر کدام از دکمههای اشتراک گذاری ابتدای این مطلب و به اشتراکگذاری آن در شبکههای اجتماعی میتوانید افراد بیشتری را در یادگیری این مطالب سهیم کنید.
سلام
طبق معمول فوق العاده بود…
سلام،
ممنون از لطف و توجه شما. امیدوارم مطالب بعدی هم مورد توجه شما قرار بگیرند.
سلام وخدا قوت
بسیار عالی بود جناب مهندس ثقفی
کاش در شهر ما هم بود این آموزشگاهتون که ما هم می تونستیم بیایم شرکت کنیم
فقط الان در این آموزش فایل.bit که ساخته شده رو نشون ندادین و نگفتین کجا ریخته میشود
بعد از سنتز
سلام، ممنون از شما.
در حال حاضر این امکان فراهم شده است و شما میتوانید از تمام دورهها به صورت آنلاین استفاده کنید.
برای اطلاع بیشتر در مورد دوره آنلاین طراحی دیجیتال با FPGA روی لینک زیر کلیک کنید:
جزئیات دوره آنلاین طراحی دیجیتال با FPGA
در مورد سوالی که پرسیدید، در ادامه برنامهها به طور کامل توضیح داده خواهد شد.
موفق باشید.
آقای احمد ثقفی .
بسیار عالی بسیار متشکرم
????
سلام آقای مهندس ثقفی
بسیار عالی و مفید هستند خیلی متشکرم
یک سئوال داشتم اینکه نرم افزار ISE برای اجرا شدن به چقدر حافظه RAM نیاز داریم
متشکر
سلام، ممنون از شما.
ما این نرمافزار رو با ۲ مگ هم اجرا کردیم برای آیسیهای قدیمیتر. جواب دقیق حتی بستگی به کد شما و اینکه چند درصد FPGA را اشغال کرده هم دارد.
برای مشاهده پاسخ مفصل سوالتون، لینک زیر رو در سایت Xilinx ببینید:
http://www.xilinx.com/ise/products/memory.htm
موفق باشید.
سلام آقای مهندس
خیلی ممنون از شما
سلام استاد
خیلی ممنونم بابت این فایل های اموزشی عالی
خدا خیر بده بهتون
سلام،
خواهش میکنم. امیدوارم برنامههای بعدی هم براتون مفید باشه.
سلام
بسیار کار ارزشمندی انجام میدین جناب مهندس موفق و پایدار باشید
بسیار عالی استاد ، شما مایه افتخار هر ایرانی هستید
با سلام و درود خدمت استاد ثقفی عزیز
بسیار عالی
خیلی خوب بود ممنون
سلام. به نکات خیلی خوبی اشاره کردین، متشکرم.
عالی بود،ممنون
خیلی عالی بود استاد میشه بپرسم با زبان وریلاگ میشه کد نوشت تو ise
ممنون. بله با هر دو زبان VHDL و وریلاگ میتوانید در نرمافزار ISE پیادهسازی را انجام دهید.
موفق باشید.
بسیار متشکرم مفید بود الان خودمم ارشد الکترونیک میخونم درگیر یادگیریش هستم،مهندس چهره جنابعالی برام اشنا بود فکر کنم زمانی که دانشگاه هوایی دانشکده برق خدمت میکردید من هم دانشجو بودم اون زمان .
خواهش میکنم. بله حتما در آنجا همدیگر را دیدهایم.
موفق باشید.
سلام جناب مهندس من نرم افزار رو نصب کردم و کدهای لازم جهت طراحی مدارم رو هم وارد کردم
اما هیچکدوم سنتز نشدن تمام قسمت های لازم رو چک کردم هیچ ایرادی داخل اون نبود
ولی همش عمل سنتز رو ناموفق نشون میداد
میشه کمک کنید تا دلیلش رو پیدا کنم و بتونم عمل سنتز مدارم رو انجام بدم؟ ممنون میشم.
سلام،
اینکه کد شما سنتز نشده است میتواند دهها دلیل داشته باشد که فقط با مطالعه پیام خطایی که در نرمافزار اعلام میشود قابل تشخیص است.
موفق باشید.