مقدمه
اگر شما هم در زمینه کار با تراشههای FPGA یک تازه کار محسوب میشوید. بهتر است بدانید که یکی از مهمترین گامهای طراحی و توسعه یک سیستم دیجیتال در FPGA مساله دیباگ و خطایابی سیستم است. منظور از دیباگ در اینجا خطایابی سیستم دیجیتال بعد از لود شدن بیت فایل روی تراشه است و نه شبیه سازی در کامپیوتر با ابزارهای شبیه سازی مرسوم. در این مقاله دو قسمتی از پایگاه دانش هگزالینکس قصد داریم شما را با مفهوم لاجیک آنالیزر داخلی و روش استفاده از ابزار دیباگ و خطایابی ChipScope™ Pro در مجموعه نرم افزاری ISE آشنا کنیم. پس تا انتها ما را همراهی کنید.
برای اینکه درک موضوع سادهتر باشد، بد نیست کمی به عقب برگردیم و به زمانهایی که هنوز FPGA جایگزین مدارات دیجیتال گسسته نشده بودند، نگاهی بیاندازیم. پس اجازه بدید نحوه تست یک مدار دیجیتال روی بوردهای آزمایشگاه را با هم مرور کنیم. حتما بیاد میآورید که یکی از مهمترین تجهیزات اندازه گیری که در کنار اسیلوسکوپ برای تست مورد استفاده قرار می گرفت، دستگاهی به نام لاجیک آنالایزر بود.
لاجیک آنالایزر واقعی
روش کار به این صورت بود. یک پروب برمیداشتیم. با استفاده از آن ارتباط بین دستگاه و نقطهایی که تصمیم داشتیم تغییرات آن را بررسی کنیم برقرار میکردیم. یعنی سر پروپ را روی محل تست قرار میدادیم و سیگنال را میدیدیم. گاهاً برای مشاهده سیگنال در یک لحظه مناسب، یکسری شرط را هم بررسی میکردیم. این شرطها به عنوان تریگر مورد استفاده قرار میگرفتند. به این ترتیب که به لاجیک آنالایزر میگفتیم، دقیقاً بعد از اینکه فلان شرط برقرار شد، ذخیره سیگنال مد نظر را آغاز کند و بعد سیگنال را روی صفحه نمایشگر دستگاه نمایش بدهد.
این کار را بارها و بارها روی قسمتهای مختلف مدار روی بورد تکرار میکردیم. هر بار تعدادی از سیگنالها را بررسی میکردیم و آن قدر ادامه میدادیم تا به منشأ خطا پی ببریم.
صد البته که لاجیک آنالایزرها امروز هم مورد استفاده قرار میگیرند، با نمایشگرهای بزرگتر، حافظههای بیشتر و قابلیتهای بسیار پیشرفتهتر، اما یک اصل همچنان پابرجاست. همچون قبل باید پروبهای لاجیک آنالایزر را روی سیگنالها قرار دهیم و سیگنالها را روی نمایشگر این دستگاهها مشاهده کنیم. اما در مدارهای مجتمع همچون FPGA دیگر سیگنالی وجود ندارد، همه چیز تجمیع شده و حتی پینهای تراشه هم در دسترس نیستند. به ناچار باید از هدرها (header) و یا نقاط تست (test point) محدود روی بورد استفاده کنیم و پروبها را به آنها متصل کنیم. از این رو حتما باید در زمان طراحی بورد مدار چاپی ملاحظات لازم برای تعیین تعداد کافی نقطه تست روی بورد در نظر گرفته شود. ناگفته پیداست که لاجیک آنالایزرها برای تست در سطح بورد مناسب هستند و نه تست در سطح چیپ!
این نقاط تست و هدرها معمولا در زمان توسعه اولیه یک بورد و پیش از نهایی شدن و یا حتی روی بوردهای ارزیاب وجود دارند، اما محصول تجمیع شده و بوردهای کوچک امروزی هدری برای تست ندارند! اصلاً فضایی برای این کار وجود ندارد؟! اما این تمام مشکل نیست بعضاً در زمان طراحی، تیم مهندسی روی استاندارد ورودی خروجی ها (IO) و تعداد IO مورد نیاز و مسائلی از این دست به توافق نمیرسند، اصلا نمیتوانید تصور کنید که به توافق رسیدن روی تمامی موضوعات و پیش بینی تمام نیازها تا چه اندازه سخت است.
از سوی دیگر باید به این نکته توجه داشته باشیم که این لاجیک آنالایزرها اینقدرها هم ارزان نیستند. خیلی از افراد به آنها دسترسی ندارند و فقط در اختیار دانشگاهها و شرکتهای بزرگ است. بد نیست برای دیدن قیمتها سری به سایت rohde-schwarz یا keysight بزنید.
خب بعد از این یادآوری نسبتاً طولانی، حالا زمان آن فرا رسیده که راه حل این مشکل و روش جایگزین برای دیباگ سخت افزاری روی FPGA را خدمتتون معرفی کنم.
لاجیک آنالایزر مجازی
یک راه حل طلایی برای حل این مشکل که به واقع یک مزیت غیرقابل چشم پوشی در دهه اخیر ایجاد کرده، توسعه لاجیک آنالایزر داخلی درون FPGA است.
ایده کلی به این صورت است که به جای استفاده از یک آنالایزر فیزیکی واقعی، از یک آنالایزر مجازی که با استفاده از منابع منطقی و حافظهها درون FPGA پیادهسازی میشوند، استفاده کنیم.
این لاجیک آنالایزرهای داخلی، همچون ChipScope™ Pro در محیط توسعه ISE و یا Hardware Debug Module در محیط توسعه Vivado شرکت Xilinx، مانند بردار بزرگتر خودشان قادر به جمعآوری و ذخیره اطلاعات سیگنالها درون تراشه هستند، این کار میتواند به صورت تصادفی یا با استفاده از یکسری شروط به عنوان تریگر انجام شود.
استفاده از لاجیک آنالایزر مجازی در عمل باعث حذف هدرهای روی بورد میشود. چون دیگر به آنها نیاز نداریم. با این وجود یک نکته ناراحت کننده وجود دارد و آن این است که در اکثر موارد نیازمند بازسازی کدها هستیم. خب این دقیقا یعنی چه؟
- یکی از مهمترین مزایای استفاده از لاجیک آنالایزر داخلی این است که به ما اجازه میدهد تعدادی زیادی از مقادیر روی باسهای عریض درون تراشه را روی حافظههای بلوکی ذخیره کنیم.
- از سوی دیگر بزرگترین عیب آنها این است که در طرحهایی که تقریبا بخش قابل توجهی از منابع منطقی و حافظههای درون تراشه استفاده شده است، امکان بکارگیری و استفاده از آنها به شدت محدود میشود.
پیاده سازی و فراخوانی ChipScope در یک پروژه ISE کاری نسبتا سر راست است. سادهترین کاری که میتوان انجام داد به این صورت است که
- ابتدا طرح خود را سنتز کنیم. (فقط سنتز کافی است و نیازی به تولید بیت فایل نداریم)
- سپس Core Inserter را فراخوانی کنیم.
- و بعد سیگنالهای خودمان را به آن اضافه کنیم.
- و در نهایت با ChipScope Pro Analyzer به آنالیز، دیباگ و خطایابی در سیستم میپردازیم.
اما ما قصد داریم این فرایند ساده را با جزئیات بیشتری به شما آموزش دهیم. پس پیشنهاد میکنم قبل از اینکه کار عملی شروع کنیم ابتدا معرفی Xilinx از این ابزار را مطالعه کنید.
معرفی ChipScope™ Pro
ابزار ChipScope™ Pro با اضافه کردن لاجیک آنالایزر داخلی (ILA) یا سیستم آنالایزر داخلی (System ILA) و ورودی خروجیهای مجازی (VIO) به صورت مستقیم درون طرح، امکان مشاهده و مانیتور کردن تمامی سیگنالهای داخلی را بعد از پیاده سازی به طراح میدهد. مقادیر سیگنالها درون سیستم در لحظات مشخصی با توجه به نرخ نمونه برداری ذخیره میشوند و از طریق اینترفیس مناسب در اختیار طراح قرار میگیرند و این باعث میشود تعداد زیادی پین فیزیکی روی بورد و سخت افزار نهایی صرفه جویی شود. سیگنالهای نمونه برداری شده در نهایت با استفاده از ChipScope Pro Analyzer نمایش داده میشوند و توسط طراح آنالیز میشوند. به این ترتیب فرایند دیباگ و خطایابی سیستم به شدت تسهیل میشود.
ابزار ChipScope™ Pro قابلیت اینترفیس با لاجیک آنالایزرها و اسیلوسکوپهای شرکت Keysight Technologies یا Agilent سابق نیز دارد. برای این کار لازم هسته نرم افزاری ATC2 که یکی از IP Core های قابل فراخوانی درون ISE است مورد استفاده قرار گیرد. البته این IP رایگان نیست و نیاز به تهیه لایسنس دارد. با این کار میتوان از قابلیتهای لاجیک آنالایزر به ویژه حافظه بزرگ آن برای اندازه گیریهای دقیق تر و سریعتر استفاده کرد.
ابزار ChipScope Pro Serial I/O Toolkit یکی دیگر از ابزارهای خانواده ChipScope™ Pro است که به سادگی راه اندازی میشود و میتواند برای دیباگ ورودی خروجیهای پرسرعت در FPGA بکارگرفته شود. با استفاده از این ابزار طراح قادر خواهد بود نرخ خطای بیت (BER) را روی یک یا چند کانال که در حال تبادل پرسرعت دادهها هستند تقریباً به صوت بلادرنگ (real-time) اندازه بگیرد در حالی که سیستم در حال کار در وضعیت نرمال خودش است.
ابزار ChipScope™ Pro یک پکیج کامل از قابلیتهای دیباگ و خطایابی را در قالب چند ابزار کمکی همچون Core Inserter و ChipScope Pro Analyzer و همینطور چند IP Core نظیر ILA ، ICON و VIO در محیطهای گرافیکی کاربرپسند در اختیار طراح قرار میدهد. در حالت کلی استفاده از آن به دو گام نیاز دارد.
- در گام اول نوع عملیات دیباگ و سیگنالهایی که باید مانیتور شوند مشخص میشوند.
- در گام دوم با استفاده از ChipScope Pro Analyzer نمایش و آنالیز سیگنالها انجام میشود.
در گام اول معمولاً از Core Inserter و یا IP Core های اختصاصی دیباگ همچون ILA ، VIO و ICON استفاده میشود. در گام دوم ChipScope Pro Analyzer به صورت مستقیم از منوی برنامهها و یا از درون Project Navigator فراخوانی و استفاده میشود.
جمع بندی
ابزار ChipScope™ Pro در مرحله دیباگ و خطایابی بعد از پیکرهبندی تراشه FPGA بکار میرود. این ابزار نیز درون Project Navigator تجمیع شده است و برای اضافه کردن لاجیک آنالایزر مجازی ILA و یا هسته نرم افزاری VIO درون طرح بکار میرود. به این ترتیب امکان مشاهده نقاط و سیگنالهای داخلی پیاده سازی شده توسط ChipScope Pro Analyzer فراهم آورده میشود. در بخش بعدی این آموزش روش کار با این ابزار در قالب یک پروژه توضیح داده می شود.
منبع: Xilinx
2 در مورد “دیباگ و خطایابی با ChipScope™ Pro (معرفی)”
سلام . ممنون
همچنان دنبال کننده مطالب سایت تون هستیم
حمید عزیز، از اینکه این مطلب مورد توجه شما قرار گرفته است، بسیار خرسندیم.