سلام.
قصد دارم در این تاپیک آموزش ChipScope رو به صورت خلاصه و همراه با مثال و عکس بذارم.
ChipScope یکی از برنامه های جانبی Xilinx ISE Suit هست که همراه اون نصب میشه و در منوی برنامه ها به اسم Analyzer یا ChipScope Analyzer موجوده که برای سیستم های 32 بیتی و 64 بیتی برنامه های جدایی داره و باید برنامه مناسب سیستمتون رو اجرا کنید. همچنین امکان اجرای برنامه از داخل ISE هم وجود داره.
اول یک توضیح کلی راجع به این برنامه و کاربردش:
وقتی یک کد VHDL یا Verilog مینویسین برای تست درستی کدتون اولین راهی که معمولاً به ذهن میرسه شبیه سازی با برنامه هایی مثل ISim یا ModelSim هست در حالی که بعضی مواقع تولید فایل TestBench زمان زیادی میگیره و مثلاً لازمه که یک سیگنال ورودی که پیچیدگی هایی داره رو در کد تست تولید کنید یا به نحوی ذخیره کنید و با TextIO به شبیه سازی اضافه کنید.
مشکل دیگه ای که وجود داره اینه که همیشه نتیجه شبیه سازی با نتیجه در عمل یکسان نیست مخصوصاً اگه زمانبندی های خیلی حساس داشته باشید.
یک راه آسون و مطمئن وقتی سخت افزار در دسترسه استفاده از برنامه ChipScope هست. این برنامه با قابلیت های زیر میتونه به شدت زمان تست رو کاهش بده و قابلیت دیباگ به کدتون بده:
1- مشاهده سیگنالهای داخلی کد با کلاک دلخواه مثلاً کلاکی که سیگنال با اون تغییر می کنه.
2- مشاهده سیگنالها در صورت تریگر شدن توسط سیگنال دیگر.
3- ورودی/خروجی آسنکرون یا سنکرون(با کلاک) از طریق JTAG (پروگرمر).
استفاده از این برنامه همون طور که گفته شد نیاز به موجود بودن سخت افزار و وصل بودن کامپیوتر به FPGA از طریق پروگرمر هست.
امکان دیباگ تمام FPGA های داخل Chain هر مدلی که باشن به صورت همزمان وجود داره.
محدودیت این برنامه هم اینه که حداقل زمان پدیت سیگنالهای متصل به ILA (بعداً توضیح میدم چیه) در نرم افزار 25 میلی ثانیه تعریف شده البته میشه هر سیگنال رو تا چند هزار (مقدار دقیق الان یادم نیست بعداً اصلاح می کنم) تریگ دید یعنی اگه مثلاً تریگ تعریف نشه و با کلاک سیستم کار کنه میشه تا چند هزار کلاک مقدار سیگنال رو دید.
برای استفاده از ChipScope لازمه که در کدتون چند تا ماژول اضافه کنید:
1- ICON که مخفف Integrated Controller هست، به ازای هر ماژول ILA یا VIO لازمه یک سیگنال کنترل اضافه بشه. طول سیگنال کنترل ثابته و هیچ نکته خاصی نداره.
برای اضافه کردن این ماژول باید IP Core اون رو دقیقاً مثل روالی که برای اضافه کردن IP Core های دیگه طی میشه انجام داد. با وارد کردن عبارت icon در کادر جستجوی IP Core میشه سریعاً پیداش کرد.
2- ILA که مخفف Integrated Logic Analyser هست، در این ماژول میشه سیگنالهایی که قصد مشاهده اونها رو دارین مشخص کنین، کلاکی که سیگنالها با اون کلاک مشاهده میشن و سیگنالهای تریگر رو تعریف کنید. این ماژول هم به صورت یک IP Core هست.
3- VIO که مخفف Virtual Input/Output هست و در صورتی که بخواین مقداری رو به عنوان ورودی مجازی به یکی از سیگنالهای داخل کدتون بدین استفاده میشه (در صورتی که فقط خروجی از FPGA بخواین میشه فقط از ILA استفاده کرد).
در حال حاضر سخت افزار در دسترس نیست ادامه مباحث و توضیحات و مثال در پست های بعدی در آینده نزدیک قرار میگیره.
موفق باشید.
قصد دارم در این تاپیک آموزش ChipScope رو به صورت خلاصه و همراه با مثال و عکس بذارم.
ChipScope یکی از برنامه های جانبی Xilinx ISE Suit هست که همراه اون نصب میشه و در منوی برنامه ها به اسم Analyzer یا ChipScope Analyzer موجوده که برای سیستم های 32 بیتی و 64 بیتی برنامه های جدایی داره و باید برنامه مناسب سیستمتون رو اجرا کنید. همچنین امکان اجرای برنامه از داخل ISE هم وجود داره.
اول یک توضیح کلی راجع به این برنامه و کاربردش:
وقتی یک کد VHDL یا Verilog مینویسین برای تست درستی کدتون اولین راهی که معمولاً به ذهن میرسه شبیه سازی با برنامه هایی مثل ISim یا ModelSim هست در حالی که بعضی مواقع تولید فایل TestBench زمان زیادی میگیره و مثلاً لازمه که یک سیگنال ورودی که پیچیدگی هایی داره رو در کد تست تولید کنید یا به نحوی ذخیره کنید و با TextIO به شبیه سازی اضافه کنید.
مشکل دیگه ای که وجود داره اینه که همیشه نتیجه شبیه سازی با نتیجه در عمل یکسان نیست مخصوصاً اگه زمانبندی های خیلی حساس داشته باشید.
یک راه آسون و مطمئن وقتی سخت افزار در دسترسه استفاده از برنامه ChipScope هست. این برنامه با قابلیت های زیر میتونه به شدت زمان تست رو کاهش بده و قابلیت دیباگ به کدتون بده:
1- مشاهده سیگنالهای داخلی کد با کلاک دلخواه مثلاً کلاکی که سیگنال با اون تغییر می کنه.
2- مشاهده سیگنالها در صورت تریگر شدن توسط سیگنال دیگر.
3- ورودی/خروجی آسنکرون یا سنکرون(با کلاک) از طریق JTAG (پروگرمر).
استفاده از این برنامه همون طور که گفته شد نیاز به موجود بودن سخت افزار و وصل بودن کامپیوتر به FPGA از طریق پروگرمر هست.
امکان دیباگ تمام FPGA های داخل Chain هر مدلی که باشن به صورت همزمان وجود داره.
محدودیت این برنامه هم اینه که حداقل زمان پدیت سیگنالهای متصل به ILA (بعداً توضیح میدم چیه) در نرم افزار 25 میلی ثانیه تعریف شده البته میشه هر سیگنال رو تا چند هزار (مقدار دقیق الان یادم نیست بعداً اصلاح می کنم) تریگ دید یعنی اگه مثلاً تریگ تعریف نشه و با کلاک سیستم کار کنه میشه تا چند هزار کلاک مقدار سیگنال رو دید.
برای استفاده از ChipScope لازمه که در کدتون چند تا ماژول اضافه کنید:
1- ICON که مخفف Integrated Controller هست، به ازای هر ماژول ILA یا VIO لازمه یک سیگنال کنترل اضافه بشه. طول سیگنال کنترل ثابته و هیچ نکته خاصی نداره.
برای اضافه کردن این ماژول باید IP Core اون رو دقیقاً مثل روالی که برای اضافه کردن IP Core های دیگه طی میشه انجام داد. با وارد کردن عبارت icon در کادر جستجوی IP Core میشه سریعاً پیداش کرد.
2- ILA که مخفف Integrated Logic Analyser هست، در این ماژول میشه سیگنالهایی که قصد مشاهده اونها رو دارین مشخص کنین، کلاکی که سیگنالها با اون کلاک مشاهده میشن و سیگنالهای تریگر رو تعریف کنید. این ماژول هم به صورت یک IP Core هست.
3- VIO که مخفف Virtual Input/Output هست و در صورتی که بخواین مقداری رو به عنوان ورودی مجازی به یکی از سیگنالهای داخل کدتون بدین استفاده میشه (در صورتی که فقط خروجی از FPGA بخواین میشه فقط از ILA استفاده کرد).
در حال حاضر سخت افزار در دسترس نیست ادامه مباحث و توضیحات و مثال در پست های بعدی در آینده نزدیک قرار میگیره.
موفق باشید.
دیدگاه