03-01-2020, 01:30 AM
میکروکنترلرهای AVR دارای یک واحد مرکزی به نام MCU هستند. MCU مخفف عبارت Master Control Unit و به معنای واحد کنترل اصلی است. این واحد وظایف مهمی از قبیل مدیریت تمام فعالیت های میکروکنترلر و انجام تمام عملیات های لازم بر روی داده ها را بر عهده دارد.
همان طور که می دانیم و همچنین با توجه به این که میکروکنترلر AVR از معماری هاروارد استفاده می کند، حافظه ی آن شامل دو قسمت «حافظه ی برنامه» (FLASH) و «حافظه ی داده» (SRAM و EEPROM) می باشد. لازم به ذکر است که ارتباط با این حافظه ها از طریق گذرگاه های مجزا صورت می گیرد.
MCU قسمت های مختلفی دارد. در ادامه این قسمت ها را به طور خلاصه معرفی خواهد شد:
هنگامی که میکروکنترلر روشن می شود مقدار شمارنده ی برنامه (PC) با مقدار پیش فرض ۰۰۰۰H مقداردهی می شود. کدهای دستورالعمل که بعد از این آدرس در حافظه ی FLASH ذخیره شده اند توسط CPU به رجیستر دستور منتقل می گردند. واحدبازگشایی دستور این کد را از رجیستر دستور برداشته و پس از رمزگشایی کد تمامی سیگنال های کنترلی جهت انجام عملیات را صادر می کند. در نهایت ALU عملیات لازم بر روی داده ها را انجام داده و پس از آن مقدار PC تغییر می کند و آدرس دستورالعمل بعدی که باید انجام شود در آن قرار می گیرد.
همان طور که می دانیم و همچنین با توجه به این که میکروکنترلر AVR از معماری هاروارد استفاده می کند، حافظه ی آن شامل دو قسمت «حافظه ی برنامه» (FLASH) و «حافظه ی داده» (SRAM و EEPROM) می باشد. لازم به ذکر است که ارتباط با این حافظه ها از طریق گذرگاه های مجزا صورت می گیرد.
MCU قسمت های مختلفی دارد. در ادامه این قسمت ها را به طور خلاصه معرفی خواهد شد:
رجیسترهای عمومی
میکروکنترلر AVR دارای ۳۲ رجیستر عمومی است که به صورت R0 تا R31 نامگذاری شده اند. این رجیسترها که هشت بیتی هم هستند به طور مستقیم با واحد ALU در ارتباط اند. (در مورد واحد ALU در ادامه توضیحات مختصری ارائه شده است.)
موضوعی که در این جا نیاز به تأکید دارد در ارتباط با رجیستر های R26 تا R31 است. این رجیسترها که دو به دو با نام های Y ،X و Z نیز شناخته می شوند (یعنی R26 و R27 تشکیل یک بیت ۱۶ بیتی به نام X می دهند و به همین صورت برای Y و Z) رجیسترهای اشاره گر نام دارند. این رجیسترها علاوه بر کاربردهای عمومی برای آدرس دهی های غیرمستقیم کاربرد دارند. در مطالب آتی در مورد آدرس دهی غیرمستقیم بحث خواهد شد.
واحد ALU
ALU مخفف عبارت Arithmetic Logic Unit به معنای واحد حساب و منظق می باشد. تمامی عملیات های ریاضی مانند جمع و تفریق و …، و عملیات های منطقی مانند: AND، OR و … توسط واحد ALU انجام می پذیرد.
رجیستر دستور (IR)
رجیستر دستور یا Instruction Register، برای نگهداری کد دستور العمل استفاده می شود. کد دستورالعمل که در حافظه ی برنامه یا همان حافظه ی FLASH ذخیره شده است، قبل از اجرا به این رجیستر (IR) منتقل شده و سپس اجرا می شود.
واحد رمزگشایی دستور (Instruction Decoder)
این واحد (ID) کد دستورالعمل را از رجیستر دستور گرفته و تشخیص می دهد که این کد مربوط به چه دستورالعملی است، سپس سیگنال های کنترلی مورد نیاز جهت اجرای آن دستورالعمل را تولید می نماید.
شمارنده ی برنامه (Program Counter)
در این رجیستر آدرس دستورالعمل بعدی که باید اجرا شود، ذخیره می شود. با اجرای هر دستورالعمل این مقدار ذخیره شده افزایش پیدا کرده و به آدرس دستورالعمل بعدی اشاره می کند.
چگونگی کار CPU
هنگامی که میکروکنترلر روشن می شود مقدار شمارنده ی برنامه (PC) با مقدار پیش فرض ۰۰۰۰H مقداردهی می شود. کدهای دستورالعمل که بعد از این آدرس در حافظه ی FLASH ذخیره شده اند توسط CPU به رجیستر دستور منتقل می گردند. واحدبازگشایی دستور این کد را از رجیستر دستور برداشته و پس از رمزگشایی کد تمامی سیگنال های کنترلی جهت انجام عملیات را صادر می کند. در نهایت ALU عملیات لازم بر روی داده ها را انجام داده و پس از آن مقدار PC تغییر می کند و آدرس دستورالعمل بعدی که باید انجام شود در آن قرار می گیرد.