دانلود با لینک مستقیم و پر سرعت .
لینک پرداخت و دانلود *پایین مطلب*
فرمت فایل:Word (قابل ویرایش و آماده پرینت)
تعداد صفحه: 31
معماری میکروکنترلرهای AVR
میکروکنترلرهای AVR توسط شرکت Atmel طراحی و ساخته شدهاند. اولین قطعات از میکروکنترلرهای AVR در سال 1993 روانه بازار شد و بهزودی جای خود را در قلب طراحان مدارات میکروکنترلری باز کرد. نخستین قطعات که در این خانواده معرفی شدند، میکروکنترلرهای AVR در سری Sxxxx90AT بودند. ولی از آنجاییکه این قطعات نسبت به سایر میکروکنترلرهای AVR که بعداً در سری Mega ارائه شدند امکانات کمتری دارند، بهندرت از آنها استفاده میشود. شرکت Atmel همزمان با ارائه میکروکنترلرهای AVR در سری Mega اقدام به طراحی و تولید میکروکنترلرهای AVR در سری Tiny کرده است. این قطعات در بستهبندیهای کوچکتر نسبت به نمونههای قبلی و با امکانات فوقالعاده (امکاناتی که کمتر از سری Mega و حدوداً برابر با سری Sxxxx90 هستند) در ولتاژها و جریانهای مصرفی کم ارائه شدهاند و زمینه را برای طراحی مداراتی با توان مصرف فوقالعاده کم و کارایی بسیار بالا فراهم کردهاند.
هدف ما در این مقاله ارائه مباحث مربوط به سری Mega است که در این سری بهطور خاص روی قطعه 16ATMega تأکید بیشتری خواهیم داشت. دلیل انتخاب این قطعه وجود بسیاری از قابلیتهای تمامی سری Mega و پایه بودن آن است.
در این بخش معماری داخلی میکروکنترلرهای AVR مورد بررسی قرار میگیرد.
میکروکنترلرهای AVR دارای درگاه داده 8 بیتی و از نوع CMOS و با ساختار Risc[1] هستند و در ساخت آنها معماری نوع Harward بهکار برده شده است. در این نوع معماری از باسهای سهگانه مجزا (آدرس ـ داده ـ کنترل) برای حافظه برنامه استفاده میشود. کاربرد ساختار Risc باعث میشد. که این قطعات دارای خصوصیات منحصربهفردی باشند، از آنجمله میتوان به سرعت بالا، سازگاری با کامپایلرهای زبانهای سطح بالا چون c و امکانات فراوان اشاره کرد. ساختار Risc برای اولینبار در سال 1970 میلادی برای معماری پردازشگرها معرفی شد. پیش از این، معماری Cisc[2] متداولتر بوده است. برای اینکه تفاوتهای بین Cisc و Risc مشخص شود، در ادامه تفاوتهای کلی این دو نوع معماری بررسی میشود.
آنچه که در طراحی پردازشگرها از اهمیت ویژهای برخوردار است سرعت آنهاست. هرکدام از ساختارهای Cisc و Risc خط مشی متفاوتی را برای رسیدن به این هدف ارائه میکنند و طراحان پردازشگر نیز یکی از آنها را به دیگری ترجیح میدهند.
برخی از مزایای ساختار Cisc مانند استفاده از ریزدستورالعملهای سختافزاری، مجموعه دستورالعملهای زیاد و سطح بالا دلیل محکمی برای شرکتهای چون اینتل و موتورولا بود تا در نمونههای خود مانند پردازندههای سری 96x80 و میکروکنترلرهای سری 8051 و 96x80 و سری k68 از این نوع معماری بهره ببرند. استفاده از ریزدستورالعملهای سختافزاری برای ایجاد دستورالعملهای اصلی در زبان اسمبلی بسیار میکروکنترلرهای AVR دارای راحت بود و ساخت نرمافزار برای واحد کنترل را با هزینه کمتری امکانپذیر میساخت. سادگی استفاده از ریزدستورالعملها برای ایجاد دستورالعملهای جدید این اجازه را به طراحان ماشینهای Cisc میدهد که بهراحتی قطعات جدید سازگار با قطعات قبلی را با صرف انرژی کمتر طراحی کنند. کامپیوترهای جدید ساختهشده به این روش قادر هستند تا نرمافزارهای نوشتهشده برای کامپیوترهای قدیمی را اجرا کنند، چون این کامپیوترها دستورالعملهای کامپیوترهای قبلی را با همان کدهای عملیاتی دارا هستند و در عین حال در آنها از دستورالعملهای جدید نیز استفاده شده است.
از آنجا که هر دستورالعمل در ساختار Cisc از یک سری ریزدستورالعملهای سختافزاری قدرتمند ساخته شده است یک ماشین Cisc دستورات سطح بالاتری نسبت به یک ماشین Risc خواهد داشت. بنابراین میتوان یک الگوریتم خاص را با دستورالعملهای کمتر در ماشین Cisc اجرا کرد. درنتیجه حافظه کمتری برای ذخیره کدهای عملیاتی نرمافزار لازم خواهد بود.
زمانی که ماشینهای Cisc شروع به گسترش کردند مزیتهای گفته شده باعث بهبود عملکرد کامپیوترها میشد ولی بعد از مدتی طراحان فهمیدند ماشینهای Cisc مشکلاتی را به همراه دارند. اولین و بزرگترین مشکلی که در ماشینهای Cisc وجود داشت این بود که بهعلت تعدد دستورالعملها و پیچیدگی موجود در آنها کد عملیاتی[3] مربوط به دستورالعملهای مختلف متغیر بود (طولی برابر با یک تا چندین بایت)؛ درنتیجه طول اشغالشده توسط هر دستورالعمل در حافظه برنامه اندازه متفاوتی پیدا میکرد. این موضوع و همچنین محدود بودن تعداد بیت در درگاه داده موجب میشد که پردازشگر چندین چرخه مکش دستورالعمل از حافظه را برای اجرای هر دستورالعمل انجام دهد. این امر به نوبه خود از یک طرف باعث پایین آمدن سرعت پردازشگرها و از سوی دیگر باعث یکسان نبودن زمان اجرای دستورالعملهای مختلف میشد. بنابراین عملاً امکان استفاده آسان از خط لوله دستورالعمل در ساختار چنین ماشینهایی از میان میرفت.
از طرف دیگر به دلیل بزرگ بودن سختافزار داخلی پردازشگرهای Cisc، ثباتهای قابل دسترس کمی در داخل آنها وجود داشت، درنتیجه در بیشتر دستورالعملهای منطقی و حسابی، از حافظه خارجی داده بهعنوان عملوند دوم این دستورات استفاده میشد که این مسأله نیز به نوبه خود باعث میشد که سرعت پردازشگرها تا حد سرعت حافظه خارجی پایین بیاید. در سال 1970 پیشرفتهای بهعملآمده در تکنولوژی نیمههادی باعث شد تا اختلاف سرعت میان پردازشگرها و حافظهها کمتر شود. همچنان که سرعت حافظهها افزایش پیدا میکرد، میل طراحان پردازشگرها برای طراحی پروسسورهایی با سرعتهای بالاتر بیشتر میشد و به این ترتیب بود که ساختار Risc متولد شد. با مراجعه به دستورالعملهای یک ماشین Risc درمییابیم که دستورالعملها در پردازشگرهای Risc سادهتر بوده و فرمت ثابتی دارند و درک آنها سخت بهنظر میرسد.
اگرچه در یک ماشین Risc اجرای بسیاری از دستورالعملها مدتی برابر یک یا دو پالس ساعت زمان میبرند، ولی عملاً، در ساختار آنها از آرایههای بزرگ گیتهای منطقی استفاده شده است که در نگاه اول عامل تأخیر بیشتر در اجرای این دستورالعملها بهنظر میرسند. در عمل، این تأخیرها وجود دارد، تا حدی که شاید اگر بخواهیم بهطور معمول از این دستورالعملها استفاده کنیم مدتی بیشتر از 2 الی 3 پالس ساعت زمان ببرد. ولی مستقل بودن کامل دستورالعملها از همدیگر امکان استفاده از ساختاری بهنام خط لوله دستورالعمل را بهدست میدهد. مفهوم خط لوله دستورالعمل این است که قبل از حصول نتایج کامل یک دستورالعمل، میتوان دستورالعملهای بعدی را کدگشایی و برای اجرا آماده کرد. بهعبارت دیگر زمانی که یک دستورالعمل در حال اجراست، دستورالعملهای بعدی مکش و کدگشایی میشوند. خط لوله دستورالعمل باعث میشود، عملیات لازم برای انجام 2 الی 3 دستورالعمل به موازات همدیگر انجام شود و درنتیجه زمان اجرای واقعی دستورالعملها پایین بیاید. همچنین ساختار Risc موجب آسانتر شدن ساخت ثباتهای داخلی میشود که درنتیجه تمام عملیات حسابی و منطقی در داخل ALU و بدون دخالت حافظه خارجی داده انجام میگیرد. بنابراین این ثباتها خود ALU هستند که عملوند دستورات را در معماری Risc میسازند.
پس دلایلی همچون:
- سرعت پاسخدهی بالا به وقایع پیشبینینشده.
- پهنای باند بالا
- توانهای مصرفی کمتر
- سختافزار داخلی کم و...
باعث شده که در بسیاری موارد در طراحی پردازشگرهای امروزی، ساختار Risc بر معماری Cisc ترجیح داده شود. لازم به ذکر است که از سال 1990 به بعد معماریهای جدیدی همچون ARM[4]، M-Core و... معرفی شدهاند که مجال بحث در مورد آنها از عهده این مقاله و حوصله خوانندگان خارج است.
امکانات داخلی 16 Mega
امکانات موجود در هر دو نوع بستهبندی تقریباً مشابه همدیگر بوده و بهطور خلاصه شامل این موارد است:
- انواع حافظه داخلی
- حافظه برنامه یا FLASH به اندازه KB16
- حافظه داده یا RAM به اندازه KB1
- حافظه ماندگار یا EEPROM به اندازه Byte512
- 32 ثبات همهمنظوره
- انواع درگاه سریال
- USART: درگاه سریال سنکرون و آسنکرون همهمنظوره استاندارد
- TWI و یا C2I: درگاه سریال دوسیمه سنکرون
- SPI: درگاه سریال سنکرون با سرعت بالا برای ارباطات دو پروسسوری و چندپروسسوری
- درگاه JTAG برای تست میکروکنترلر و اشکالزدایی از نرمافزارهای نوشتهشده در سیستم واقعی. از این درگاه همچنین برای برنامهریزی حافظههای FLASH و EEPROM نیز استفاده میشود.
- یک مدل آنالوگ به دیجیتال 10 بیتی با 8 کانال ورودی
- دو تایمر 8 بیتی و یک تایمر 16 بیتی با امکاناتی چون پیش تقسیمکننده، ورودی شکار و خروجیهای PWM
- یک مقایسهگر آنالوگ
- شش حالت خواب
- امکان پیکربندی میکروکنترلر با فیوزهای اختصاصی برای استفاده از اسیلاتور داخلی یا کریستال خارجی و یا شبکه RC برای تولید پالس ساعت برای میکروکنتر
سازماندهی حافظه
الفـ حافظه برنامه
میکروکنترلر 16Mega برای حافظه برنامه خود از 16 کیلوبایت یا 8 کیلو کلمه حافظه Flash استفاده میکند. این حافظه از طریق یک خط لوله تکمرحلهای به هسته اصلی AVR متصل است و زمانی که یک دستورالعمل در حال انجام است، دستورالعمل بعدی از حافظه Flash به درون CPU مکش میشود.
دستورالعملهای استفادهشده در میکروکنترلرهای AVR طولی برابر 2 یا 4 بایت را در حافظه برنامه اشغال میکنند. به همین دلیل حافظه FLASH در این میکروکنترلرها بهصورت دوبایتی (1 کلمه) پیکربندیشده و MCU میتواند در هر پالس ساعت به دو بایت از حافظه برنامه دسترسی داشته ابشد. براساس PC (شمارنده برنامه) در میکروکنترلرها AVR به آدرس یک کلمه در حافظه برنامه اشاره میکند. درنتیجه در قطعه 16 Mega حافظه برنامه ظرفیتی برابر 16× k8 داشته و شمارنده برنامه با 13 بیت ساخته شده است.
حافظه برنامه در تمام میکروکنترلرهای AVR در سری Mega به دو بخش کاربردی و Boot loader تقسیمبندی میشود که هر کدام ویژگیهای مخصوص به خود را داشته و برای منظور خاصی مورد استفاده قرار میگیرد. لازم به ذکر است که حافظه برنامه یا همان FLASH به اندازه تقریبی 10000 بار قابلیت پاک شدن یا نوشتن دارد و ذخیره دادهها بر روی آن برای مدت 10 سال پس از آخرین برنامهریزی ضمانت شده است. حافظه FLASH به همراه حافظه EEPROM به 4 طریق مختلف قابلیت برنامهریزی دارد:
- سادهترین و اصلیترین راه برنامهریزی آن از طریق درگاه سریال SPI و بهوسیله سه پین از پینهای ورودی ـ خروجی بر روی سیستم اصلی است.
- راه دوم استفاده از پروگرمرهای استاندارد مخصوص AVR و از طریق برنامهریزی موازی است.
این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید