• 14605

    مشاوره ،طراحی و اجرای سیستم آموزش الکترونیکی كيش تك

  • 14607

    يادگيري زبان خارجي با آموزش آنلاين كيش تك

  • 14608

    برگزاري رويداد، همايش و كارگاههاي تخصصي آموزشي كيش تك

  • 14609

    عضويت حقيقي و حقوقي متخصصان صنعت و مديريت كيش تك

  • 14610

    يادگيري الكترونيكي دوره هاي تخصصي در سامانه رهياران كيش تك

  • 14611

    برگزار كننده كارگاه،سمينار و كلاس هاي تخصصي علمي و فني كيش تك

  • 14613

    ارتباطات سازماني ملي و بين المللي كيش تك

ساختار داخلی میکروکنترلرهای AVR

در این قسمت می خواهیم به بررسی ساختار داخلی میکروکنترلر ATmega16 بپردازیم.

(ارائه شده توسط شرکت پردیس فناوری کیش)

ساختار داخلی میکروکنترلر ATmega16

همان طور که در بلوک دیاگرام شکل زیر مشاهده می کنید اجزای درونی میکرو کنترلر توسط باس های داخلی به هم متصل شده اند و یک بخش از این بلوک دیاگرام با خط چین با نام AVR CPU مشخص شده است که در واقع پردازنده اصلی AVR می باشد. در این قسمت قصد داریم اجزای تشکیل دهنده CPU میکرو کنترلر AVR را توضیح دهیم.

کار اصلی یک CPU دسترسی به حافظه ها، محاسبات ریاضی و منطقی، کنترل وسایل جانبی و بررسی وقفه های هر یک از قسمت ها می باشد. شمارنده برنامه، اشاره گر پشته، رجیستر دستورات، آشکارساز دستورات، رجیسترهای Y ، X و Z، رجیسترهای همه منظوره، واحد محاسبه و منطق (ALU) و رجیستر وضعیت، از اجزای تشکیل دهنده CPU میکروکنترلر AVR هستند. میکرو کنترلر AVR از معماری RISC استفاده می کند و برای کارایی بهتر از ساختار Harvard و همچنین از حافظه ها و باس های جداگانه برای انتقال داده استفاده می کند. دستورات با یک سطح pipelining اجرا می شوند و هنگامی که یک دستور در حال اجرا می باشد دستور بعدی از حافظه برنامه pre – fetched می شود با این روش هر دستور تنها در یک کلاک سیکل اجرا می شود. 

شمارنده برنامه (Program Counter)

CPU میکروکنترلر برای اینکه دستورات را از اولين آدرس حافظه برنامه خط به خط بخواند نیاز به یک شمارنده برنامه دارد. افزایش Program Counter آدرس خط بعدی را برای اجرای دستورات فراهم می کند.

اشاره گر پشته (Stack Pointer)

 در میکرو کنترلر AVR اشاره گر پشته از دو رجیستر ۸ بیتی استفاده می کند. اشاره گر پسته برای ذخیره موقت اطلاعات در دستورهای فراخوانی PUSH ، CALL و POP و متغیرهای محلی، روتین های وقفه و توابع استفاده می شود.

رجیستر دستورات (Instruction Register)

در اصل CPU میکروکنترلر برای فهمیدن انجام یک دستورالعمل از کد ماشین استفاده می کند و به هر یک از این کدها یک سمبل در زبان اسمبلی اختصاص داده می شود. رجیستر دستورات، تمام دستورهای اسمبلی در نظر گرفته شده از طرف شرکت سازنده Atmel را شامل می شود.

آشکارساز دستورات (Instruction Decoder)

شمارنده برنامه افزایش می یابد۔ و کد هر دستور توسط CPU خوانده می شود و با توجه به رجیستر دستورات، کد خوانده شده آشکار می گردد و CPU متوجه می شود که کد دستور به چه معنی و مفهومی است. 

رجیسترهای همه منظوره (General Purpose Registers)

میکروکنترلرهای AVR دارای ۳۲ رجیستر همه منظوره هستند این رجیستر ها قسمتی از حافظه داخلی میکروکنترلر می باشند که اکثر دستورات اسمبلی AVR مستقیما با این رجیسترها دسترسی دارند و در یک کلاک سیکل اجرا می شوند.

رجیسترهای Y، X و Z

وظیفه این سه رجیستر که البته از ترکیب رجیسترهای R26 تا R31 بوجود می آیند، اشاره گر ۱۶ بیتی جهت آدرس دهی غیر مستقیم فضای داده هستند و بسیاری از دستورات اسمبلی AVR با این سه رجیستر عمل می کنند.

واحد محاسبه و منطق (Arithmetic Logic Unit)

واحد محاسبه و منطق در میکرو کنترلر AVR به صورت مستقیم با تمام ۳۲ رجیستر همه منظوره ارتباط دارد. عملیاتهای محاسباتی با رجیستر های همه منظوره در یک کلاک سیکل اجرا می شوند. به طور کلی عملکرد ALU را می توان به سه قسمت اصلی ریاضیاتی، منطقی و توابع بینی تقسیم بنیادی کرد. در برخی از ALU های توسعه یافته در معماری میکرو کنترلر های AVR از یک ضرب کننده با قابلیت ضرب اعداد بدون علامت و علامت دار و نیز اعداد اعشاری استفاده شده است.

رجیستر وضعیت (Status Register)

بیت های این رجیستر در واقع پرچم هایی هستند که CPU را از نتایج دستورات و وضعیت برنامه آگاه می کنند.

بیت 0 – C پرچم Carry

انجام دستوراتی که عملیات محاسباتی یا منطقی را انجام می دهند سبب تأثیر بر پرچم نقلی (Carry) می شود. به طور مثال اگر نتیجه جمع ۸ بیتی بیشتر از ۸ بیت شود کری برابر یک خواهد شد.     

بیت 1 – Z پرچم Zero

برخی از دستورات منطقی و محاسباتی سبب تأثیر بر روی این پرچم می شوند. اگر حاصل عمليات صفر شود این پرچم فعال می گردد.

بیت 2 – N پرچم Negative

این بیت نشانگر نتایج منفی در عملیاتهای محاسباتی یا منطقی است.

بیت 3 – V پرچم Two ‘ s Complement Overflow

در دستورات محاسباتی این بیت نشانگر سرریز مکمل عدد دو می باشد.

بیت 4 – S بیت علامت Sign Bit

این بیت حاصل XOR دو پرچم N و V می باشد.

بیت 5 – H پرچم Half Carry

در انجام دستورات محاسباتی BCD پرچم نقلی کمکی تاثیر می بیند.

بیت 6 – T پرچم Bit Copy Storage

می توانیم از بیت T به عنوان مبدأ و یا مقصد یک عملیات بیتی استفاده کنیم.

بیت 7 – I پرچم Global Interrupt Enable

این بیت برای فعال سازی وقفه همگانی است اگر این بیت یک شود به دیگر وقفه ها در صورت فعال شدن پاسخ داده می شود. در موقع رخ دادن یکی از وقفه ها برنامه وارد تابع وقفه مربوطه می شود در این حالت این پرچم توسط سخت افزار صفر می شود و به وقفه دیگری پاسخ داده نمیشود و در برگشت از تابع وقفه مربوطه این بیت به طور اتوماتیک توسط سخت افزار یک می شود.

انواع حافظه در میکروکنترلرهای AVR

میکروکنترلرهای AVR دارای سه نوع حافظه هستند

حافظه Flash 

در این حافظه کدهای برنامه یعنی همان فایل hex.* که توسط پروگرامر بر روی تراشه Load می شود قرار می گیرد و CPU میکروکنترلر برنامه را که اجرا می کند کد دستورالعمل را از این حافظه برداشت می کند. حافظه ثابت (Flash) میکرو کنترلرهای AVR از نسل جدید این حافظه می باشد و دارای دو قسمت Application و Boot Loader هستند. در قسمت Application کدهای برنامه قرار می گیرد اما ناحیه Boot این امکان را فراهم می کند که میکرو کنترلر بدون استفاده از ابزار پروگرامر، برنامه حافظه Flash را تغییر دهد. 

حافظه EEPROM

این حافظه جزء حافظه های ماندگار می باشد که میکرو کنترلر می تواند اطلاعاتی را در این حافظه داخلی بنویسد و یا اطلاعاتی را از آن بخواند. همچنین لازم به یادآوری است که این حافظه در صورت قطع تغذیه میکرو کنترلر پاک نمی گردد. از این حافظه زمانی استفاده می شود که میکرو کنترلر باید دیتایی را در خود ثبت کند و بعد آن دیتا را به کاربر اعلام کند و در صورتی که میکرو کنترلر Reset شد یا تغذیه آن قطع گردید داده ذخیره شده از بین نرود. باید توجه کنید که برای خواندن و نوشتن در حافظه EEPROM باید یک زمان تاخیری در نظر بگیرید.

حافظه SRAM

همان طور که ذکر کردیم کدهای برنامه در حافظه Flash قرار می گیرند و CPU میکروکنترلر کدهای دستورات را آشکار می کند. حال باید حاصل دستورات انجام شده در یک حافظه موقت ذخیره گردد این حافظه در میکرو کنترلر AVR از نوع Static RAM می باشد. رجیستر های همه منظوره و رجیسترهای ورودی و خروجی نیز جزء این حافظه می باشند. محتوای این حافظه با قطع تغذیه پاک می گردد و در صورتی که میکرو کنترلر را Reset کنیم محتوای رجیسترها صفر می شود اما محتوای حافظه SRAM صفر نمی شود.

راه های ارتباطی با ما : تهران – بلوار کشاورز- خیابان 16 آذر جنب انتشارات دانشگاه تهران – پلاک 45 – طبقه 4 – واحد9، تلفن : 02166176196