میکروکنترلر ARM مخفف Advance RISC Machine است. یکی از هسته های پردازشی گسترده در جهان است. اولین پردازنده ARM در سال 1978 توسط دانشگاه کمبریج توسعه یافت و اولین پردازنده ARM RISC توسط گروه کامپیوترهای Acorn در سال 1985 تولید شد. این پردازنده ها به طور خاص در دستگاه های قابل حمل مانند دوربین های دیجیتال، تلفن های همراه، شبکه های خانگی استفاده می شوند. ماژول ها و فناوری های ارتباطی بی سیم و سایر سیستم های تعبیه شده به دلیل مزایایی مانند مصرف انرژی کم، عملکرد مناسب ان.
پردازنده معماری ARM یک ماشین محاسباتی مجموعه دستورالعمل کاهش یافته پیشرفته [RISC] است و یک میکروکنترلر کامپیوتری با مجموعه دستورات کاهش یافته 32 بیتی (RISC) است. این ARM یک خانواده میکروکنترلر است که توسط سازندگانی مانند ST Microelectronics، Motorola و غیره ساخته شده است. معماری ARM دارای نسخه های کاملاً متفاوتی مانند ARMv1، ARMv2 و غیره است و هر کدام مزایا و معایب خاص خود را دارند.
مجوعه ARM یک میکروکنترلر پیچیده در خانواده ARM است که دارای طراحی ARMv7 است. 3 زیر خانواده در مجموعه ARM وجود دارد
سری ARM Cortex Axe
سری ARM-Cortex Rx
سری ARM-Cortex Mx
اجزای معماری ارم عبارنت از :
Arithmetic Logic Unit
Booth multiplier
Barrel shifter
Control unit
Register file
در ادامه به شرح موارد بالا میپردازیم
پردازنده ARM به طور مشترک دارای اجزای دیگری مانند ثبت وضعیت برنامه است که حاوی پرچم های پردازنده (Z، S، V و C) است.بیتهای حالت به طور پیوسته در رجیستر ایستاده برنامه وجود دارند، علاوه بر بیتهای غیرفعال کردن وقفه و قطع سریع. و همچنین برخی از ثبات های ویژه: برخی از ثبات ها مانند دستورالعمل ها، ثبات های خواندن و نوشتن اطلاعات حافظه و ثبات آدرس حافظه استفاده می شوند.
مالتی پلکسرها: چندین مالتی پلکسر به عملکرد مدیریت گذرگاه های پردازنده عادت دارند. به دلیل زمان محدود پردازش، ما تمایل داریم این مؤلفه ها را در یک مدل بسیار رفتاری پیاده سازی کنیم. هر جزء با یک موجود توصیف می شود. هر موجودیت معماری خاص خود را دارد که بسته به کاربرد آن می توان آن را برای نیازهای خاصی بهینه کرد. این باعث می شود طراحی آسان تر ساخته و نگهداری شود.
واحد منطق حسابی (ALU)دارای دو ورودی 32 بیتی است. اولیه از فایل ثبات می آید، در حالی که دیگری از شیفتر می آید. Status پرچم هایی را که توسط خروجی های ALU اصلاح شده اند ثبت می کند. خروجی V بیت به پرچم V می رود و همچنین تعداد به پرچم C می رود. در حالی که مهم ترین بیت واقعاً پرچم S را نشان می دهد، عملیات خروجی ALU توسط NORed برای دریافت پرچم Z انجام می شود. ALU دارای یک گذرگاه تابع 4 بیتی است که امکان پیاده سازی حداکثر 16 کد عملیاتی را فراهم می کند.
ضریب ضرب دارای 3 ورودی 32 بیتی است و ورودی ها از فایل ثبت برمی گردند. خروجی ضریب به ندرت 32 بیت مهم قابل توجه را شامل میشود نمایش موجودیت ضریب در بلوک دیاگرام بالا نشان داده شده است. هر زمان که ورودی ابتدایی 04 فعال شود، ضرب شروع می شود. پره خروجی هنگام اتمام بالا می رود.
الگوریتم غرفه یک قانون الگوریتمی ضرب قابل توجه برای اعداد متمم 2 است. این اعداد مثبت و منفی را به طور یکسان رفتار می کند. علاوه بر این، اجرای 0 یا 1 در ضریب ضرب بدون انجام هیچ گونه جمع یا تفریق نادیده گرفته میشود و در نتیجه ضرب سریعتر ممکن را ایجاد میکند. شکل، نتایج شبیه سازی را برای میز تست ضریب نشان می دهد. واضح است که ضرب فقط در چرخه ساعت 16 به پایان می رسد.
در Barrel Shifter دارای یک ورودی 32 بیتی برای جابجایی است. این ورودی از فایل ثبت برمی گردد یا ممکن است داده های فوری باشد. شیفتر دارای ورودی های کنترلی مختلفی است که از رجیستر دستورالعمل باز می گردند. فیلد Shift در دستورالعمل عملکرد Barrel Shifter را کنترل می کند. این فیلد نوع شیفتی را که باید انجام شود (منطقی به چپ یا راست، حسابی به راست یا چرخش به راست) نشان می دهد. مقداری که رجیستر باید توسط آن جابجا شود در یک فیلد فوری در دستورالعمل موجود است یا ممکن است 6 بیت پایینی یک ثبات در فایل ثبات باشد.
گذرگاه ورودی shift_val 6 بیتی است که امکان جابجایی تا 32 بیت را فراهم می کند. نوع شیفت نشان می دهد که مرتب سازی جابجایی مورد نیاز 00، 01، 10، 11 به ترتیب مربوط به تغییر به چپ، شیفت راست، یک شیفت حسابی به راست و چرخش به راست است. شیفتر بشکه مخصوصاً با مالتی پلکسرها ایجاد می شود.
برای هر ریزپردازنده، واحد کنترل قلب کل فرآیند است و مسئولیت عملیات سیستم را بر عهده دارد، بنابراین طراحی واحد کنترل مهمترین بخش در کل طراحی است. واحد کنترل گاهی اوقات یک طرح مدار ترکیبی خالص است. زمان بندی پردازنده علاوه بر این در واحد کنترل گنجانده شده است. سیگنال های واحد کنترل به هر جزء در پردازنده متصل می شوند تا بر عملکرد آن نظارت کنند.
نکته نهایی که باید توضیح داده شود نحوه استفاده از ARM است. سیگنال های مختلفی که با پردازنده ارتباط دارند سیگنال های ورودی، خروجی یا نظارتی هستند که برای کنترل عملکرد ARM استفاده می شوند.
یک میکروکنترلر ARM یک ذخیرهسازی بار است که مجموعه دستورالعملهای معماری رایانه را کاهش میدهد به این معنی که هسته نمیتواند مستقیماً با حافظه کار کند. عملیات داده باید توسط رجیسترها انجام شود و اطلاعات توسط یک آدرس در حافظه ذخیره می شود. قشر ARM-M3 از 37 مجموعه ثبت تشکیل شده است که در آن 31 ثبت با هدف عمومی و 6 مورد ثبت وضعیت هستند. ARM از هفت حالت پردازش برای اجرای وظایف کاربر استفاده می کند.
USER Mode
FIQ Mode
IRQ Mode
SVC Mode
UNDEFINED Mode
ABORT Mode
Monitor Mode
حالت کاربر یک حالت عادی است که کمترین تعداد ثبت را دارد. SPSR ندارد و دسترسی محدودی به CPSR دارد
در FIQ و IRQ دو حالت ایجاد وقفه در CPU هستند. FIQ وقفه پردازش و IRQ وقفه استاندارد است. حالت FIQ دارای پنج رجیستر اضافی برای ارائه انعطاف پذیری بیشتر و عملکرد بالا در هنگام مدیریت وقفه های بحرانی است.
حالت Undefined هنگامی که دستورالعمل های غیرقانونی اجرا می شوند و ان ها را شناسایی می کند. هسته ARM از گذرگاه داده 32 بیتی و جریان داده سریعتر تشکیل شده است.
در حالت THUMB داده های 32 بیتی به 16 بیت تقسیم می شوند و سرعت پردازش را افزایش می دهند.
ثبات های رزرو شده برای توابع خاص استفاده می شوند. SPSR و CPSR حاوی بیت های کنترل وضعیت هستند که برای ذخیره داده های موقت استفاده می شوند. رجیستر SPSR و CPSR دارای ویژگی هایی هستند که حالت های عملیاتی تعریف شده، پرچم های فعال یا غیرفعال وقفه و پرچم وضعیت ALU را دارند. هسته ARM در دو حالت 32 بیتی یا حالت THUMBS کار می کند.
در حال حاضر، میکروکنترلرهای 32 بیتی را بر اساس معماری ARM cortex-m3 در بازار موجودند. بسیاری از توسعه دهندگان سیستم های جاسازی شده شروع به استفاده از این میکروکنترلرهای 32 بیتی برای پروژه های خود کرده اند. میکروکنترلرهای ARM از زبان های برنامه نویسی سطح پایین و سطح بالا پشتیبانی می کنند. برخی از معماریهای میکروکنترلر سنتی با محدودیتهای زیادی ساخته شدهاند، بنابراین استفاده از زبان برنامهنویسی سطح بالا دشوار است.
به عنوان مثال، اندازه حافظه محدود است و ممکن است عملکرد کافی نباشد. میکروکنترلرهای ARM با فرکانس 100 مگاهرتز و عملکرد بالاتر کار می کنند، بنابراین از زبان های سطح بالاتر پشتیبانی می کنند. میکروکنترلر ARM با IDES های مختلف مانند keiluvision3، keiluvision4، coocox و غیره برنامه ریزی شده است. یک میکروکنترلر 8 بیتی از دستورالعمل های 8 بیتی و ARM cortex-M از دستورالعمل های 32 بیتی استفاده می کند.
این یک کنترلر محاسباتی مجموعه دستورالعمل کاهش یافته است
واحد پردازش مرکزی 32 بیتی با کارایی بالا
خط لوله 3 مرحله ای و فشرده
دارای تکنولوژی THUMB-2 است
ادغام بهینه با دستورالعمل های 16/32 بیتی
از ابزارها و RTOS و اشکال زدایی و ردیابی Sight هسته آن پشتیبانی می کند
حالت های کم مصرف
از حالت های خواب پشتیبانی می کند
بسته نرم افزاری را کنترل کنید
دامنه های قدرت چندگانه
کنترل کننده وقفه برداری تودرتو (NVIC)
تأخیر کم، نویز کم پاسخ را قطع می کند
بدون نیاز به برنامه نویسی اسمبلی
میکروکنترلر قشر ARM یک میکروکنترلر 32 بیتی است بنابراین تمام دستورالعمل ها 32 بیتی هستند که در یک چرخه اجرا می شوند. این شامل یک مجموعه دستورالعمل برای انجام عملیات حسابی، منطقی و بولی است. ARM یک معماری load-store است، سپس دستورالعمل ها به صورت مشروط اجرا می شوند.
برنامه نویسی زبان اسمبلی توسط حافظه های مانند ADD، SUB، MUL و غیره توسعه یافته است، اما برای برنامه نویسی ARM، دستورالعمل های اضافی مانند ADCNES و SWINE و غیره اضافه شده است.
پوریا احمدی - دانشگاه صدرا