بعد از اینکه یک مدار دیجیتال را به کمک یک نرمافزار پیادهسازی مثل ISE یا ویوادو طراحی کردید، باید آن را در FPGA پروگرام کنید.
اما حافظه درون FPGAها ذاتا مشابه SRAMها هستند و در نتیجه آنچه در آنها پروگرام میشود بعد از قطع منبع تغذیه پاک میشود!
اما این مساله برای یک محصول مبتنی بر FPGA قابل قبول نیست و نیاز است به نحوی بتوانیم آن را به صورت دائمی پروگرام کنیم.
برای این کار، معمولا از یک حافظه فلش جانبی در FPGA استفاده میشود. مدار نهایی در این حافظه جانبی پروگرام میشود و هر بار که برد روشن میشود، اطلاعات مربوط به مدار به طور خودکار از حافظه فلش به FPGA منتقل میشود.
در این ویدئو، نحوه پروگرام کردن مستقیم FPGA و فلش جانبی آن را به طور کامل شرح میدهم. علاوه بر آن، به شما نشان میدهم چطور این کار را هم به کمک نرمافزار ISE انجام دهید و هم به کمک نرمافزار ویوادو.
More...
ویدئو یا متن؟
بخشی از محتوای این برنامه ویدئویی، به صورت متن نیز آماده شده است. اگر علاقمند به یادگیری تمام این مطلب به صورت ویدئویی هستید، ویدئوی زیر را ببینید و اگر ترجیح میدهید بخشی از آن را به صورت متن مطالعه کنید، ادامه این مطلب را بخوانید.
پس از اینکه یک کد توصیف سختافزاری را به یکی از زبانهای VHDL یا Verilog نوشتید و مراحل پیادهسازی شامل سنتز، جانمایی و مسیریابی را انجام دادید، نهایتا یک فایل بیتی (bit file) تولید خواهد شد که باید به FPGA منتقل شود.
وقتی این فایل بیتی را به FPGA منتقل کردید، منابع سختافزاری درون FPGA بهگونهای در کنار یکدیگر قرار میگیرند که مدار توصیفی شما را بسازند.
به این کار، پروگرام کردن FPGA میگویند.
شما میتوانیدبرد شامل FPGA را بهصورت «موقت» یا «دائمی» پروگرام کنید.
در این مقاله، با مراحل پروگرام کردن FPGA بهصورت گامبهگام آشنا خواهید شد.
پیش از ورود به مبحث پروگرام کردن، ابتدا روند طراحی دیجیتال با FPGA را مرور میکنم. سپس، مراحل پروگرام کردن را بهصورت گامبهگام انجام میدهم.
مراحل طراحی و پیادهسازی یک مدار دیجیتال در FPGA
اولین مرحله پیادهسازی و طراحی دیجیتال با FPGA، ورود طرح است.
در این مرحله، شما بهکمک یک زبان توصیف سختافزاری مانند VHDL یا Verilog، طرحتان را وارد میکنید.
برای این کار باید از یک ویرایشگر متن استفاده کنید؛ در نرمافزار پیادهساز ISE، یک ویرایشگر متن وجود دارد که شما میتوانید طرحتان را در آن وارد کنید.
مرحله دوم، شبیهسازی طرح است؛ معمولاً پس از ورود طرح، شبیهسازی Functional یا Behavioral را انجام میدهید.
این نوع شبیهسازی به این منظور انجام میشود که مطمئن شوید طرحتان از لحاظ منطقی مشکلی ندارد.
مرحله سوم، مرحله سنتز است.
همانطور که در مقاله "مراحل پیادهسازی با FPGA" گفته شد، سنتز به این معنا است که طرحی که بهکمک زبان توصیف سختافزاری پیادهسازی کردهاید، بهکمک منابع سختافزاری موجود در تراشه FPGA شما، پیادهسازی شود.
برای مشاهده مقاله "مراحل پیادهسازی با FPGA" روی لینک روبهرو کلیک کنید.
بنابراین، در این مرحله، حتماً باید برای نرمافزار سنتز -که در مورد مثال ما همان نرمافزار ISE است- مشخص کنید که قرار است طرحتان را روی چه نوع FPGAای پیادهسازی کنید.
نرمافزار ISE، اطلاعات مربوط به منابع سختافزاری تمام FPGAهای شرکت XILINX را در خود دارد.
مثلاً، وقتی شما تراشه SPARTAN 6 LX9 را برای پیادهسازی طرحتان انتخاب کنید، نرمافزار با توجه طرح شما و منابع سختافزاری موجود در این تراشه، مدار توصیفی شما را پیادهسازی میکند.
مرحله چهارم، مرحله جانمایی طرح است؛ پس از اینکه در مرحله قبل مشخص شد که برای پیادهسازی طرح چه منابع سختافزاری از FPGA موردنظر شما باید بهکار گرفته شود، در مرحله جانمایی مشخص میشود که این منابع دقیقاً در کدام قسمت از FPGA قرار دارند.
مرحله پنجم، مرحله مسیریابی یا Routing است؛ در این مرحله، میتوان نحوه اتصال و سیمبندی بین منابع سختافزاری که در پیادهسازی طرح شما استفاده شده است را مشخص کرد.
مرحله بعدی، ایجاد فایل پیکربندی یا فایل configuration است که در اصطلاح به آن بیتفایل نیز میگوییم. پسوند این فایل bit. است.
در فایل پیکربندی، نتایج تمام مراحل سنتز، جانمایی و مسیریابی وجود دارد.
مرحله آخر، مرحله پیکربندی یا پروگرام کردن FPGA است.
در این مرحله، شما بهوسیله یک پروگرامر، بیتفایلی که در مرحله ششم تولید کرده بودید را وارد FPGA میکنید تا درون تراشه FPGA شما، تبدیل به مداری شود که آن را در مرحله اول طراحی و توصیف کرده بودید.
همانطور که در ابتدای مقاله گفتم، میتوانیم برد شامل FPGA را بهصورت موقت یا دائمی پروگرام کنیم.
در صورت پروگرام کردن موقت (یا اصطلاحاً پروگرام کردن مستقیم FPGA) با قطع و وصل منبع تغذیه، منابع سختافزاری درون FPGA به حالت اولیه بازمیگردند.
اما از آنجا که این روش پروگرام کردن FPGA، سریعتر و راحتتر است، در هنگام توسعه و تست پروژه، برای صرفهجویی در زمان معمولاً از این روش استفاده میکنیم.
برای پروگرام کردن دائمی، به جای پروگرام کردن مستقیم FPGA، حافظه فلش مخصوصی را که به FPGA متصل است پروگرام میکنیم.
در این حالت، هرگاه تغذیه بُرد قطع و وصل شود، FPGA بهکمک فلش جانبی که روی بُرد تعبیه شده است به طور خودکار پروگرام میشود.
در این مقاله، ابتدا مراحل پروگرام کردن مستقیم FPGA را گامبهگام توضیح میدهم؛ سپس، به انجام مراحل پروگرام کردن FPGA بهکمک یک حافظه جانبی خواهیم پرداخت.
پروگرام کردن FPGA بهصورت مستقیم و بهکمک بیتفایل
برای پروگرام کردن FPGA بهصورت مستقیم، نیاز به فایل پیکربندی یا بیتفایل دارید.
برای تولید این فایل، باید پس از آماده شدن کد توصیف سختافزاری، مراحل پیادهسازی، شامل سنتز، جانمایی و مسیریابی را انجام دهید.
پس از آن، مطابق شکل زیر، ابتدا روی تاپماجول پروژه کلیک کرده و سپس از منوی Process، گزینه Generate Programming File را با دبلکلیک انتخاب کنید:

ساخت بیتفایل در نرمافزار ISE
به این ترتیب، بیتفایل ساخته شده و بهصورت خودکار در فولدر پروژه ذخیره میشود.
برای پروگرام کردن FPGA، باید از نرمافزار مخصوصی از مجموعه نرمافزاری ISE استفاده کنید؛ نام این نرمافزار iMPACT است.
برای اجرای نرمافزار iMPACT، میتوانید به دو روش عمل کنید:
برای اجرای نرمافزار iMPACT از داخل نرمافزار ISE، مطابق شکل زیر، روی علامت مثبت کنار گزینه Configure Target Device کلیک کنید تا منوی جدیدی باز شود.
سپس، گزینه Manage Configuration Project را انتخاب کنید تا نرمافزار iMPACT باز شود.

باز کردن نرمافزار iMPACT از داخل نرمافزار ISE
در این مرحله، شما باید بُردتان را روشن کرده و از طریق پروگرامر به کامپیوتر متصل کرده باشید.
سپس، در نرمافزار iMPACT، مطابق شکل زیر، روی گزینه Boundary Scan دبلکلیک کنید:

محیط نرمافزار iMPACT
پس از آن، همانند شکل زیر، دکمه Initialize Chain را فشار دهید تا نرمافزار از طریق پروگرامر، با بُرد ارتباط برقرار کند:

انتخاب گزینه Initialize Chain برای شناسایی FPGA توسط نرمافزار iMPACT
همانطور که در شکل زیر مشاهده میکنید، نرمافزار iMPACT، تراشهی FPGA روی بُرد را شناسایی کرده است:

شناسایی FPGA توسط نرمافزار iMPACT
با چند بار فشار دادن دکمه Esc از صفحهکلید کامپیوتر، از پیامهایی که ظاهر میشوند عبور کنید.
روی بُردی که من استفاده کردهام (بُرد فراد1)، تراشه SPARTAN6 از نوع LX9 وجود دارد.
اکنون باید بیتفایلی که ساخته بودید را از فولدر پروژه انتخاب کرده و به این FPGA اعمال کنید.
برای این کار، مطابق شکل زیر، روی FPGA کلیک راست کرده و گزینه Assign New Configuration File را انتخاب کنید:

اعمال فایل پیکربندی (بیتفایل) به FPGA
پس از آن، بهسراغ فولدر پروژه بروید و بیتفایل را انتخاب کنید:

اعمال فایل پیکربندی (بیتفایل) به FPGA
اکنون چندبار دکمه Esc، از صفحه کلید کامپیوتر را فشار دهید تا از پیامهای ظاهر شده عبور کنید.
همانطور که در شکل زیر ملاحظه میکنید، نام بیتفایل در زیر تراشه نوشته شده است؛ بنابراین، بیتفایل به منظور پروگرام کردن FPGA انتخاب شده است.

انتخاب فایل پیکربندی (بیتفایل) برای پروگرام کردن FPGA
برای پروگرام کردن FPGA، کافی است روی FPGA یک کلیک راست کنید و گزینه پروگرام را انتخاب کرده و سپس دکمه OK را فشار دهید:

پروگرام کردن FPGA در نرمافزار iMPACT
به این ترتیب، FPGA به مداری که شما در کد HDL توصیف کرده بودید تبدیل میشود.
وقتی به این روش FPGA را پروگرام میکنید مانند این است که یک SRAM را پروگرام کرده باشید.
در واقع، با قطع منبع تغذیه (خاموش کردن بُرد)، پیکربندی FPGA پاک میشود.
بنابراین، FPGA به حالت اولیه بازمیگردد و هیچ قابلیتی نخواهد داشت.
اما راهحل این مشکل چیست؟
راه حل این است که همیشه از یک حافظه دائمی یا یک حافظه فلش در کنار FPGA استفاده میشود.
این حافظه، از طریق پینهای خاصی به FPGA متصل میشود. باید فایل پیکربندی را به حافظه جانبی منتقل کنیم. حافظه و FPGA از طریق پروتکل خاصی باهم ارتباط برقرار میکنند.
روند کار به این صورت است که با هربار روشن کردن بُرد، اطلاعات پیکربندی بهصورت خودکار از حافظه به FPGA منتقل شده و عملیات پروگرام کردن انجام میشود.
به این ترتیب، میتوانید یک بُرد شامل FPGA ایجاد کنید که قابلیت استفاده عملی دارد؛ یعنی میتوانید آن را در محصولتان قرار دهید و مطمئن باشید که با هربار روشن کردن بُرد، اطلاعات پروگرامینگ از فلش به FPGA منتقل میشود.
این کار، خصوصاً اگر FPGA کوچک باشد، بسیار سریع (در مدت چند ثانیه) انجام میشود و معمولا کسی که از بُرد استفاده میکند، متوجه این تاخیر نخواهد شد.
اما چگونه میتوانیم بهکمک یک فلش جانبی FPGA را پروگرام کنیم؟
پروگرام کردن FPGA بهصورت دائمی و بهکمک یک حافظه جانبی
برای پروگرام کردن از طریق حافظه فلش، به یک فایل پروگرام جدید نیاز دارید. پسوند این فایل mcs. است و اصطلاحاً به آن فایل MCS میگویند.
شما میتوانید این فایل را در نرمافزار iMPACT از روی بیتفایل بسازید.
بهطور کلی، دو نوع حافظه دائمی یا فلش برای FPGA وجود دارد.
یک نوع از آنها را شرکت Xilinx مخصوص این کار تولید کرده است که به آنها حافظههای فلش Xilinx میگوییم.
اگر روی بُرد، از حافظههای فلش Xilinx استفاده کنید، باید آن را اصطلاحاً در chain یا زنجیره پروگرامینگ Jtag قرار دهید. اما منظور از این جمله چیست؟
همانطور که احتمالا میدانید، ما FPGA را از طریق پروتکل Jtag پروگرام میکنیم.
بهعبارت دیگر، یک سمت پروگرامر، پروتکل USB است که به کامپیوتر متصل میشود و سمت دیگرش پروتکل Jtag است که به تعدادی از پورتهای FPGA که میتواند این پروتکل را پیادهسازی کنند، متصل میشود.
در واقع، این ارتباط Jtag میتواند یک زنجیره ایجاد کند که در این زنجیره یا chain قطعات دیگری نیز میتوانند قرار گیرند؛ قطعاتی مانند FPGAها یا حافظههای فلش دیگر.
در شکل زیر، شمایی از نمایش زنجیره Jtag در نرمافزار iMPACT را مشاهده میکنید:

زنجیره شامل FPGA و حافظه فلش
در این زنجیره، یک FPGA و یک حافظه فلش وجود دارد. حافظههای فلش مخصوص شرکت Xilinx در زنجیره قرار میگیرند و شما میتوانید از طریق پروگرامر مستقیماً آنها را پروگرام کنید.
اما شرکت Xilinx تعدادی حافظه فلش که تولید شرکتهای دیگر هستند را نیز در دیتاشیت مربوط به پروگرام کردن FPGA معرفی کرده است.
این حافظهها برای نگهداری فایل پیکربندی استفاده میشوند و با FPGAهای Xilinx سازگار هستند.
عملکرد آنها نیز کاملاً مشابه با فلشهای شرکت Xilinx است؛ اما پروتکل ارتباط با این حافظهها از نوع SPI است.
این فلشها در زنجیره FPGA قرار نمیگیرند؛ بلکه به مجموعه پینهایی از FPGA متصل میشوند که قابلیت پیادهسازی پروتکل SPI را دارند.

نحوه ارتباط فلشهای جانبی ساخت شرکتهای دیگر با FPGA
روی بُردهای فراد 1 از فلش مخصوص شرکت Xilinx استفاده نشده است و بهجای آن، یک فلش SPI تولید شرکت وین بوند بهکار رفته است.
زیرا این فلشها نسبت به فلشهای شرکت Xilinx ارزانتر هستند و با توجه به اینکه ما میخواستیم قیمت این بُرد، حداقل مقدار ممکن باشد، از این فلش استفاده کردیم.
تفاوتی که بین این دو نوع فلش وجود دارد این است که سرعت فلشهای شرکت Xilinx، نسبت به فلشهای نوع دیگر بیشتر است.
بهعبارت دیگر، وقتی بُرد را روشن میکنید، فلش با سرعت بیشتری اطلاعات درونش را به FPGA منتقل میکند. اما با توجه به اینکه FPGA بسیار کوچکی در برد فراد ۱ قرار دارد، اطلاعات پیکربندی این FPGA بسیار محدود است؛ بنابراین، در عمل تفاوت محسوسی نخواهد داشت.
اکنون با این توضیحات بهسراغ انجام عملی مراحل پروگرام کردن میرویم.
ابتدا باید بیتفایل را به فایل MCS تبدیل کنید. سپس، آن را به حافظه فلش منتقل کنید تا در نهایت، FPGA بهکمک فایل MCS موجود در فلش، پروگرام شود.
در شکل زیر، قسمتهای مختلف بُرد فراد 1 را ملاحظه میکنید:

قسمتهای مختلف بُرد فراد 1
اگر دکمه Initialization را فشار دهیم، FPGA ریست میشود؛ پس از ریست شدن، FPGA تبدیل به مداری میشود که فایل MCS مربوط به آن روی فلش جانبی قرار دارد.
فشردن دکمه Initialization مانند این است که یک لحظه برق FPGA قطع شده باشد.
در واقع، FPGA ریست میشود و دوباره محتوای حافظه فلش به FPGA منتقل شده و FPGA پروگرام میشود.
اگر بهکمک بیتفایل، FPGA را پروگرام کنیم و سپس دکمه Initialization را فشار دهیم، مدار ما از روی FPGA پاک میشود؛ زیرا بهکمک بیتفایل، مستقیماً خود FPGA پروگرام میشود و دادهای روی فلش جانبی قرار نمیگیرد.
برای پروگرام دائمی FPGA باید مراحل زیر را طی کنید:
مراحل پروگرام کردن حافظه فلش متصل به FPGA
در این بخش، مراحل پروگرام کردن فلش متصل به FPGA را برای فلشی که در برد فراد ۱ استفاده شده است انجام میدهیم.
مرحله اول این است که در نرمافزار ISE بیتفایل را با تنظیمات جدیدی بسازید.
مطابق شکل زیر، بر روی گزینه Generate Programming File راستکلیک کرده و سپس گزینه Process Properties انتخاب کنید:

مراحل ساخت بیتفایل برای پروگرام کردن دائمی FPGA
پنجرهای مطابق شکل زیر باز میشود؛ در قسمت Configuration Options، گزینه Set SPI Configuration BUS Width که بهطور پیشفرض یک است را برابر با چهار قرار دهید. سپس، گزینه OK را انتخاب کنید.
با توجه به نوع حافظه فلش جانبی که روی بُرد استفاده کردهایم، انجام این تنظیم ضروری است تا عمل انتقال دیتا بهدرستی انجام شود.

مراحل ساخت بیتفایل برای پروگرام کردن فلش متصل به FPGA؛ پنجره Configuration Options
همانطور که در شکل زیر مشاهده میکنید، کنار گزینه Generate Programming File یک علامت سوال ظاهر میشود؛ این علامت به این معنی است که بیتفایل ساخته نشده است.
بنابراین، بار دیگر روی آن دبلکلیک کنید تا بیتفایل با توجه به تنظیم جدیدی که انجام دادهاید ساخته شود:

مراحل ساخت بیتفایل برای پروگرام کردن دائمی FPGA
اکنون مطابق شکل زیر، روی گزینه Manage Configuration Project (iMPACT) کلیک کنید تا نرمافزار iMPACT از داخل نرمافزار ISE باز شود:

نحوه باز کردن نرمافزار iMPACT از داخل نرمافزار ISE
سپس، مراحل شکل زیر را طی کنید تا نرمافزار، FPGA روی بُرد را شناسایی کند:

مراحل شناسایی FPGA روی بُرد توسط نرمافزار iMPACT
همانطور که گفتم، در نرمافزار iMPACT ابتدا باید از روی بیتفایلی که ساختهایم یک فایل MCS درست کنیم و در گام بعدی، این فایل MCS را روی فلش جانبی FPGA پروگرام کنیم.
برای ساخت فایل MCS از روی بیتفایل، مطابق شکل زیر، روی گزینه Create Programming File یا PROM File Formatter دبلکلیک کنید:

مراحل ساخت فایل MCS از روی بیتفایل در نرمافزار iMPACT
همانطور که در شکل زیر مشاهده میکنید، پنجرهای که باز میشود، سه مرحله یا Step دارد:

مراحل ساخت فایل MCS از روی بیتفایل در نرمافزار iMPACT
در مرحله اول مشخص میکنیم که چه نوع حافظه جانبی برای نگهداری فایل پیکربندی روی بُرد قرار دارد.
بهصورت پیشفرض حافظه Xilinx Flash انتخاب شده است. در واقع، همان فلشهایی که تولید شرکت Xilinx است و در صورت استفاده، در زنجیره FPGA قرار میگیرند.
اما فلشی که روی بُرد فراد ۱ قرار دارد، فلشی از نوع SPI است. بنابراین، از گروه SPI Flash، باید گزینه Configure Single FPGA را انتخاب کنیم.
سپس، روی فلِش سبز رنگ کلیک کنید تا به مرحله بعد برویم.
در مرحله دوم باید حجم یا سایز فلش را مشخص کنید؛ حجم فلشی که بر روی بُردهای فراد ۱ مونتاژ شده است، ۶۴ مگابیت است.
پس از انتخاب حجم فلش، باید روی Add Storage Device کلیک کنید تا این فلش به پروژه اضافه شود.
توجه داشته باشید که برای ذخیرهسازی فایل پیکربندی Spartan-6 LX9، به فلشی با حجم بیش از چهار مگابیت نیاز نداریم.
بهعبارت دیگر، یک فلش چهار مگابیتی میتواند کل فایل پیکربندی این FPGA را در خود ذخیره کند.
اما فلشی که روی برد فراد ۱ قرار دارد، ۶۴ مگابیتی است. بنابراین، ۶۰ مگابیت آن اضافه است.
اگر دیتاشیت مربوط به پیکرهبندی این FPGA را مطالعه کنید، میتوانید ببینید که چگونه میتوان از ۶۰ مگابیت باقیمانده این فلش برای ذخیره دیتا استفاده کرد. میتوانید در این قسمت از حافظه، مقادیری را ذخیره کرده و از آنها در پروژه استفاده کنید.
پس از انجام تنظیمات مرحله دوم، روی فلِش سبزرنگ دوم کلیک کنید تا به مرحله بعد بروید.
تنظیمات مرحله سوم، انتخاب نام فایل MCS و تعیین محل ذخیرهسازی آن است.
من این فایل را در فولدر پروژه ذخیره میکنم. در نهایت، گزینه OK را انتخاب میکنم.
سپس، نرمافزار در پیغامی میپرسد که آیا شروع به اضافه کردن بیتفایل کنم. مطابق شکل زیر، گزینه OK را کلیک کنید:

مراحل ساخت فایل MCS از روی بیتفایل در نرمافزار iMPACT
سپس، بیتفایل را از محلی که آن را ذخیره کردهاید انتخاب کنید تا نرمافزار، گامهای ساخت فایل MSE را طی کند:

مراحل ساخت فایل MCS از روی بیتفایل در نرمافزار iMPACT؛ انتخاب بیتفایل
شما میتوانید در یک فلش، بیش از یک فایل MCS ذخیره کنید. بنابراین، نرمافزار میپرسد که آیا بیتفایل دیگری نیز دارید. مطابق شکل زیر، گزینه NO را انتخاب کنید:

مراحل ساخت فایل MCS از روی بیتفایل در نرمافزار iMPACT
و در نهایت گزینه OK را انتخاب کنید:

مراحل ساخت فایل MCS از روی بیتفایل در نرمافزار iMPACT
اکنون برای اینکه فایل MCS از روی فایل بیتفایل ساخته شود، باید مطابق شکل زیر، روی گزینه Generate File دبلکلیک کنید.
وقتی عبارت Generate Succeeded ظاهر شد، یعنی فایل MCS با موفقیت ساخته شده است.

مراحل ساخت فایل MCS از روی بیتفایل در نرمافزار iMPACT
در شکل بالا، شمایی از فلش روی بُرد را ملاحظه میکنید؛ قسمت سبز رنگ، نشاندهنده حجم اشغال شده فلش است.
همانطور که مشاهده میکنید، بخش بسیار کوچکی از فلش توسط این فایل MCS اشغال شده است.
اکنون ما فایل MCS را در اختیار داریم؛ مرحله آخر این است که فلش جانبی را پروگرام کنیم.
برای این کار، باید مطابق شکل زیر، روی Boundary Scan دبلکلیک کنید.
مشاهده میکنید که در بالای FPGA و درون یک نقطهچین، عبارت SPI/BPI نوشته شده است؛ این همان فلش جانبی متصل به FPGA است.
اما هنوز این فلش برای نرمافزار iMPACT شناخته شده نیست؛ بنابراین، باید برای نرمافزار مشخص کنید که دقیقاً از چه مدل فلشی استفاده کردهاید.
مطابق قسمت شماره دو از شکل زیر، درون نقطهچین راستکلیک کنید و گزینه Add SPI/BPI Flash را انتخاب کنید:

مراحل تعیین مشخصات فلش جانبی متصل به FPGA برای نرمافزار iMPACT
سپس، مطابق شکل زیر، فایل MCS را به این فلش معرفی کنید:

معرفی فایل MCS به فلش جانبی FPGA
پس از انتخاب فایل MCS، مطابق شکل زیر، پنجرهای باز میشود که در آن باید مدل فلش SPIای که روی بُرد قرار دارد را انتخاب کنید.
فلش روی بُرد فراد ۱ از نوع SPI PROM است؛ در منوی کشویی سمت راست، انواع فلشهایی که توسط شرکت Xilinx برای ارتباط با این FPGA پشتیبانی میشوند آورده شده است.
از بین آنها، فلش W25Q64BVCV از تولیدات شرکت وین بوند را انتخاب میکنم. گزینه Data Width را نیز روی 4 تنظیم میکنم و سپس گزینه OK را انتخاب میکنم:

تعیین مشخصات فلش جانبی متصل به FPGA برای نرمافزار iMPACT
وقتی مانند شکل زیر، مربعی ظاهر شد که درون آن کلمه FLASH نوشته شده بود، یعنی، فلش روی بُرد، توسط نرمافزار شناخته شده است و تنها کاری که باقی میماند، پروگرام کردن آن است.
بنابراین، روی FLASH کلیکراست کرده و گزینه Program را انتخاب کنید:

مراحل پروگرام کردن فلش جانبی FPGA
سپس، مطابق شکل زیر، دکمه OK را فشار دهید:

مراحل پروگرام کردن فلش جانبی FPGA
اکنون عملیات پروگرامینگ شروع میشود؛ نرمافزار ابتدا باید فلش را پاک کند و سپس پروگرام کردن فلش را شروع کند. بنابراین، ابتدا فاز Erase انجام شده و فلش پاک میشود.
در نهایت، با ظاهر شدن عبارت Program Succeeded، متوجه میشویم که فلش جانبی FPGA با موفقیت پروگرام شده است.
اکنون مدار مربوط به این فایل MCS روی بُرد کار میکند.
اگر برق را قطع و وصل کنیم و یا دکمه Initialization (ریست) روی بُرد را فشار دهیم، FPGA از طریق فلش جانبی پروگرام شده و دوباره تبدیل به همین مدار میشود.
از آنجا که پروگرام کردن مستقیم FPGA بهکمک بیتفایل سریعتر و راحتتر است، برای صرفهجویی در زمان، در هنگام توسعه و تست پروژه، معمولاً FPGA را مستقیماً پروگرام میکنیم؛ مگر در موارد خاصی که نیاز داشته باشیم حتماً فلش جانبی پروگرام شود. اما در مراحل نهایی پروژه، فلش جانبی را پروگرام میکنیم.
به شما پیشنهاد میکنم که اگر یک بُرد FPGA در اختیار دارید، حتماً این مراحل را چند بار انجام دهید تا به مراحل پروگرام کردن FPGA کاملاً مسلط شده و مشکل یا ابهامی نداشته باشید.

