مقدمه
در این نوشته سعی شده است آموزش کامل و مرحله به مرحله ی شبیه سازی دوطرفه ی 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 اجرا کنید و آنرا با ورودی های مختلفی تست کنید.
با آرزوی موفقیت
مسعود نکویی
با سلام،آنچه که شما بیان کردید بیشتر نحوه استفاده ازblack box می باشد تا co_simulation .co_simulation روشی برای تحریک سخت افزار به وسیله نرم افزار می باشد.
با سلام. آموزش فوق تحت عنوان ISE+MATLAB Co-Simulation می باشد. موردی که شما ذکر کردید با عنوان Hardware Co-simulation می باشد. انشالله در پروژه های بعدی، این آموزش هم روی سایت قرار داده خواهد شد. با تشکر از دیدگاه شما.
با سلام
برای اینکه بتونیم کدی که با ISE به زبان VHDL نوشتیم را اینگونه در محیط شبیه سازی متلب بیاریم چکار باید کرد؟؟؟
میشه کد با پسوند ,vhd را هم توی بلک باکس اضافه کرد؟؟؟؟؟
با سلام
من یه سوال داشتم کدهای سیمولینک رو به vhdl می توان تبدیل کرد ولی چرا هنوز با زبان vhdl برای fpga برنامه نویسی میکنند
ممنون