ادامهی مطالب بخش دوم و معرفی منابع
در بخش اول این آموزش با PWM آشنا شدیم و در بخش دوم ماژول پیادهسازی سختافزاری آن را نوشتیم. حال در این بخش میتوانیم آن را هر چند بار که میخواهیم در ماژول mojo_top استفاده کنیم. با استفاده از این قابلیت وریلاگ، میتوان در دل یک top module یک بار یا به دفعات بیشتر از sub moduleهای دیگر استفاده کرد، بدون آنکه نیاز باشد هر بار کد آن sub moudule را به طور کامل تکرار کنیم. در مثال فعلی هم میتوانیم با همین شیوه، سیگنالهای PWM متعدد تولید کنیم و LEDهای مختلف روی بورد را به کمک آنها کنترل کنیم و یا اینکه آنها را به پینهای مختلف بورد Mojo بدهیم و در مدارهای جانبی متصل به Mojo از آنها استفاده کنیم.
به عنوان مثال برای آنکه بتوانیم هشتمین LED روی بورد را با سیگنال PWMی که ساختیم کنترل کنیم، در mojo_top اینطور مینویسیم.
PWM my_pwm(.clk(clk), .rst(rst), .duty(8’b01000000), .sig_drv(led[7]));
اولین کلمهی این عبارت، نام ماژولی است که میخواهیم از آن نمونه بگیریم. در اینجا این ماژول PWM است. کلمهی بعدی شناسه یا نامی است که برای این نمونهی بخصوص در top module انتخاب میکنیم. علت این نامگذاری این است که اگر بخواهیم نمونههای متعدد از این ماژول بگیریم، از یکدیگر قابل تشخیص باشند. داخل پرانتزی که بعد از نام سیگنال قرار دارد، به ترتیب لیست سیگنالهای ورودی و خروجی ماژول را میآوریم و در پرانتز مقابل هر کدام نام سیگنالی از top module که به این ورودی یا خروجی متصل میشود را میگذاریم. همینجا مشخص است که مثلا اگر بخواهیم مقدار duty cycle سیگنال PWM را تغییر دهیم، کافیست عددی که در پرانتز مقابل duty نوشتهایم را تغییر دهیم. یا مثلا اگر بخواهیم خروجی PWM را به LED دیگر یا پین دیگری بدهیم، به راحتی میتوانیم این کار را فقط با تغییر دادن عبارت داخل پرانتز مقابل sig_drv. انجام دهیم.
فایل mojo_top در نهایت به این صورت خواهد بود.
برای بارگذاری این کد بر روی بورد Mojo، دقیقا همان مراحلی را باید طی کنید که در قسمت اول هم انجام دادیم، تولید فایل bin. در ISE، باز کردن نرمافزار Mojo Loader و ریختن کد روی بورد.
اگر مراحل بدون مشکل انجام شد، شما با موفقیت به خط پایان این پروژه رسیدهاید و حالا یک PWM سختافزاری دارید. به عنوان یک تفریح و البته تمرین بیشتر، میتوانید تلاش کنید کد را به گونهای تغییر دهید که اولا چندین سیگنال PWM تولید کنید و ثانیا duty cycleهای آنها را متفاوت با هم قرار دهید، یا حتی میتوانید کاری کنید که خود پارامتر duty هم یکی از سیگنالهای ورودی بورد Mojo باشد و مثلا با یک toggle swich بتوان آن را تغییر داد.
- منبع: ترجمه از سایت deviceplus.com
منبع: عکس شاخص از سایت enjoy-digital.fr
امیدواریم که این چند جلسه «آموزش FPGA: بورد Mojo و مقدمات FPGAها» براتون مفید واقع شده باشه. در میکرو دیزاینر الکترونیک کلی آموزش رایگان مفید داریم توصیه میکنم حتما به دیگر قسمتهای سایت هم سر بزنی.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.