مقدمه

در این نوشته سعی شده است آموزش کامل و مرحله به مرحله ی شبیه سازی دوطرفه ی Matlab System Generator  و  ISE که به اختصار Co-Simulation گفته می شود، در اختیار شما قرار گیرد.

این روش به شما کمک خواهد کرد که در محیط simulink متلب، کد FPGA خود را شبیه سازی کنید. مزیت این روش در این است که میتوانید در کنار کدی که قصد شبیه سازی آن را دارید، از انواع بلوک ها و فانکشن ها و ابزارهای سیمولینک به منظور تست و ارزیابی کد خود استفاده کنید.

در این آموزش قصد داریم یک کد verilog بسیار ساده که مربوط به تولید یک خط با شیب ثابت است را شبیه سازی کنیم. هدف از این انتخاب ساده تنها این است که خواننده از آن ایده گرفته و در طراحی های خود مورد استفاده قرار دهد.

برای اجرای این پروژه به نرم افزارهای زیر نیاز خواهد بود:

  • سیستم عامل: Win XP یا Win 7
  • MATLAB (یکی از نسخه‌ی 2012a | 2012b | 2013a | 2013b)
  • Xillinx ISE + System Generator (نسخه‌ی 14.7) (جدول ترکیب های سازگار ISE و MATLAB)

اجرای پروژه

ابتدا مطابق تصویر با استفاده از یک ویرایشگر متن (مثل notepad++)  یک ماژول وریلاگ به نام stln ایجاد میکنیم.

این فایل را با نام stln.v در مسیری دلخواه (در اینجا D:\FPGA\st_line_demo\st_line) ذخیره میکنیم.

اکنون نرم افزار System Generator  را اجرا می‌کنیم. با این کار نرم افزارهای MATLAB  و SIMULINK اجرا خواهند شد.

از قسمت FILE>NEW>MODEL  در نرم افزار Simulink پروژه ی جدیدی ایجاد نموده و پس از باز شدن پروژه آن را حتما در همان پوشه‌ای که فایل وریلاگ را ذخیره کردیم(در این پروژه : D:\FPGA\st_line_demo\st_line) ذخیره می‌کنیم.

حال با کلیک بر روی Simulink Library Browser از قسمت بالای پنجره، پنجره‌ی library browser باز میشود. در قسمت Xilinx Blockset>Basic Elements  گزینه ی System Generator  را با کلید چپ ماوس گرفته و به پروژه ی ایجاد شده ببرید (Drag and Drop). همچنین این کار را با کلیک راست روی System Generator و انتخاب گزینه ی Add to str_line(file name)  هم می توانید انجام دهید.

دقیقا همین عملیات را برای پوشه ی Black Box  نیز انجام دهید و انرا برروی پروژه ی خود Drag and Drop  کنید. این کار با کلیک راست روی گزینه ی  Black Box و انتخاب گزینه ی Add to str_line(file name) نیز قابل انجام است.

درست پس از این عملیات پنجیره ی زیر باز می‌شود:

 

فایل  stln.v را انتخاب می کنیم. پنجره ی زیر باز می شود:

 

روی پوشه ی Black Box  ورودی خروجی ها نمایش داده می شود. برای اعمال ورودی و خروجی نیاز به Input & Output Gateway خواهد بود.

 

آنها را درست مانند Black Box به پنجره ی پروژه بیاورید و مانند تصویر زیر به ورودی و خروجی ها متصل کنید.

 

برای استفاده ی صحیح از Gateway Block  باید آنرا پیکربندی کنیم، به طوری که تعداد بیتی که به ورودی در کد ما داده شده است باید در اینجا هم مشخص شود. برای مثال عدد 2 می تواند عددی 8 بیتی یا 16 بیتی یا هر حالت دیگری باشد. پس با توجه به کد ما ورودی ها باید 8 بیتی باشند.

برای مشخص کردن این مشخصه روی Gateway in  دو بار کلیک کنید تا پنجره ی زیر باز شود:

در این پنجره ورودی 8 بیتی را مشخص می کنیم. توجه کنید نیازی به پیکر بندی Gateway Out نیست.

حال  Simulink>Source>Constant  و همچنین Simulink>Sink>Scope  را باز کنید و به پروژه بیاورید و مانند تصویر زیر متصل کنید.

 

نکته ای که باید حتما به ان توجه کرد آن است که Black Box Simulation Mode هم باید از حالت Inactive  به  حالت ISE Simulator Mode پیکربندی کرد و این عملیات هم با دو بار کلیک بر روی Black Box و تغییر گزینه ی Simulation Mode در پنجره ی زیر صورت میگیرد.

 

حال مدل آماده ی شبیه سازی است!

با مشخص کردن ورودی های دلخواه مانند تصویر زیر و کلیک بر روی گزینه ی Start Simulation شبیه سازی صورت می گیرد و  با دو بار کلیک بر روی Scope تصویر شبیه سازی را به صورت نمودار در بازه ی 10 تایی مشاهده خواهیم کرد:

 

در اینجا به طور مثال مقادیر ورودی 5 و 6 به ترتیب برای m  و  c  در نظر گرفته شده است. با تغییر Stop time از 10 به 100 نمایش خطی دقیق تر خواهد بود و پله های گسسته ی حالت قبل تقریبا دیده نمی‌شوند:

توجه:

چنانچه نسخه‌ی ISE و MATLAB مورد استفاده با یکدیگر سازگار نباشند، در این مرحله به خطایی مشابه زیر مواجه خواهید شد:

Error 0001:

Reported by:
‘untitled/Black Box’

Details:
ISE Simulator Simulation could not be started. It is possible that
the system memory available for this process has been exhausted.
Error occurred during “Simulation Initialization”.

نتیجه گیری

همان طور که گفته شد این پروژه یک نمونه ی آزمایشی برای آشنایی خواننده بود تا بتوانید از ایده ی این روش در طراحی ها و شبیه سازی هایتان استفاده کنید. شبیه سازی دو طرفه ی ISE و MATLAB  یا  MATLAB+ISE Co-simulation برای دسته ای از کدهاست که می خواهید در FPGA اجرا کنید و آنرا با ورودی های مختلفی تست کنید.

 

با آرزوی موفقیت

مسعود نکویی