redlinestudio

علی اکبر سعیدیان 

وبلاگ نویس و تولید کننده محتوای تخصصی در حوزه برق و الکترونیک

چهارشنبه  ۱۶:۰۸  ۱۳۹۸.۱۱.۱۶


بررسی کلی مُد Low Power در پردازنده‌های Arm Cortex سری M


یک سیستم امبدد فارغ از اینکه بوسیله باتری تغذیه می‌شود و یا به شبکه برق متصل می‌شود، هر چقدر کم مصرف‌تر باشد بهتر است و یک امتیاز محسوب می‌شود. یکی از اصلی‌ترین مصرف‌کننده های انرژی در سیستم‌های امبدد میکروکنترلرها هستند پس پیدا کردن راه‌حلی برای کاهش هر چه بیشتر مصرف انرژی میکروکنترلرها بسیار مهم است و معمولا در معماری پردازشگرها، راه‌حل‌هایی برای کاهش دادن انرژی مصرفی تعبیه شده است.

در این مطلب کوتاه به سراغ پردازشگرهای Arm Cortex-M خواهیم رفت و مُد Low Power این خانواده از پردازشگرها را مورد بررسی قرار می‌دهیم تا بتوانیم در پروژه‌هایمان از آنها استفاده کنیم.

(همانطور که میدانید خانواده Arm Cortex-M بسیار پرکاربرد هستند و در کشور ما هم زیاد مورد استفاده قرار می‌گیرند.)

هر میکروکنترلری که از پردازشگرهای خانواده Arm Cortex-M بهره می‌برد حداقل سه وضعیت یا مُد برای مصرف توان دارد:

Run و Sleep و Deep sleep

در وضعیت run همانطور که از اسمش مشخص است، پردازشگر با حداکثر توان در حال فعالیت است و آنچه را که سیستم امبدد به خاطر آن طراحی و ساخته شده اجرا می‌کند.

درحالت Sleep، کلاک cpu موقف می‌شود اما کلاک flash و اجزای جانبی Peripheral Clock قطع نمی‌شوند.

در مُد Deep Sleep نه تنها کلاک cpu بلکه کلاک کل سیستم اعم از flash و PLL نیز قطع خواهند شد.

تولیدکنندگان مختلف میکروکنترلر این توانایی را دارند که سیستم مصرف توان هر نوع میکروکنترلر را به نوعی سفارشی یا Customize کنند تا بسته به کاربردهایی که برای هر نوع میکروکنترلر پیش‌بینی می‌شود، بهینه ترین عملکرد در زمینه مصرف توان را داشته باشند.

به عنوان مثال کمپانی NXP در میکروکنترلرهای Kinetis-L علاوه بر مدهای استاندارد Arm Cortex-M از دو مُد Low leakage sleep و Very low leakage sleep نیز بهره می‌برد که میزان جریان مصرفی در این دو مُد در حد میکرو و یا نانو آمپر است.

باید این نکته را به یاد داشته باشیم قتی میکروکنترلر را در حالت sleep یا Deep sleep قرار می‌دهیم به خاموشی کامل نزدیک می‌شویم و در هر مرحله مدت زمان برگشت میکروکنترلر به حالت کار و اجرای دستورات به طور چشمگیری افزایش پیدا می‌کند و بسته به کاربرد سیستم شما ممکن است استفاده از این مُدها مفید با مضر باشد.


ورود به مُد Low Power


دو دستور متفاوت برای قرار دادن سیستم در مد Low Power وجود دارد.

حالت اول :

wait for event یا WFE


حالت دوم :

wait for interrupt یا WFI


هنگامی که دستور WFE اجرا می‌شود، مقدار بیت Event بررسی می‌شود و اگر مقدار آن وجود داشته باشد سیستم به مد sleep می‌رود.

این Event یا رویدادها ممکن است بوسیله منابع خارجی تولید شوند و یا بوسیله ارسال دستورات event

البته در 99 درصد کاربردها از دستور WFI استفاده می‌شود. هنگامی که پردازشگر با دستور WFI مواجه می‌شود، بلافاصله به مُد Sleep می‌رود.

پردازشگر به مد sleep می‌رود تا زمانی که بوسیله یک وقفه تحریک و راه اندازی مجدد شود و در بعضی مواقع توانایی انتخاب وقفه‌ها نیز برای برنامه‌نویس در نظر گرفته شده است و به طراح سیستم کمک می‌کند تا زمان باقی ماندن سیستم در حالت sleep یا Deep sleep را با دقت بیشتری کنترل کند.

در زبان C، کد ورود به وضعیت sleep بسیار سر راست و ساده است. در بسیاری نرم افزارها کافی است کد زیر را وارد کنید:

__WFI;


و اگر از CMSIS استفاده می‌کنید میتوانید تابع WFI را با نوشتن کد زیر فرا بخوانید:

__WFI();

درون رجیستر SBC یک بیت به نام SLEEPDEEP وجود دارد که اگر مقدار آن 1 تنظیم شود پردازشگر به حالت Deep sleep می‌رود و اگر 0 باشد به حالت sleep می‌رود. البته همانطور که پیش از این گفتیم ممکن است مدهای sleep در میکروکنترلر شما بیش از این دو حالت باشد به همین دلیل برای تنظیم آنها به رجیسترهای دیگری نیاز است.

یکی دیگر از امکانات این خانواده پردازشگر برای مدهای Low Power یک ویژگی به نام sleep-on-exit است که به پردازشگر اجازه می‌دهد پس از اجرای هر وقفه به طور اتوماتیک به حالت sleep برود و بدین ترتیب انرژی بیشتری صرفه‌جویی می‌شود. یعنی پردازنده در هنگام وقفه فعال می‌شود و عملیات‌های لازم را انجام می‌دهد سپس به طور اتوماتیک به مد sleep می‌رود.

در آخر یکبار دیگر یادآوری میکنم که مدهای Low Power این خانواده یکی از موثرترین راه‌ها برای صرفه‌جویی در مصرف انرژی هستند و همانطور که دیدید استفاده از آنها کار پیچیده‌ای نیست.

هر پردازشگر Arm Cortex-M حداقل دارای این سه مد هست و حتی محصولات بعضی کارخانه‌ها که از این پردازشگرها بهره برده‌اند تا 12 مد متفاوت دارند.



سیستم امبدد، میکروکنترلر، پردازنده

شاید از این نوشته‌ها هم خوشتان بیاید :

در حال پردازش ...
پاسخ به:لغو پاسخ
کپتچا:8 6 1 3
صفحه اصلیتماس با مارفتن به ابتدا