این مقاله انواع مختلف حافظه و کاربرد آنها در دستگاههای میکروکنترلر PIC را توضیح میدهد. این مقاله همچنین توضیح میدهد که معماری هر بخش از فضای حافظه شامل مثالهایی از مُدهای آدرسدهی و کد است.
انواع حافظه در معماری میکروکنترلرها
واحدهای میکروکنترلر (MCU) از سه نوع حافظه تشکیلشده است.
- Program Memory
- Data Memory
- Data EEPOM
انواع Program Memory
معمولاً تمام میکروکنترلرها این حافظه را بهمنظور ذخیره کردن دستورالعملها در اختیاردارند. و خود این حافظه از چهار نوع حافظه دیگر تشکیلشده است.
- ROM (Read only memory)
- EPROM (Erasable programmable read only memory)
- OTP (On time programmable)
- FLASH EEPROM (Electrical erasable programmable read only memory)
ROM
در میکروکنترلرها اولین نوع حافظه ROM است و در حین فرآیند ساخت، کدهای برنامه در ROM تنظیم میشوند که پس از فرآیند تولید قابلتغییر نیستند، بنابراین به آن حافظه فقط خواندنی میگویند یعنی فقط کد را میخواند اما قابلتغییر نیست. به همین دلیل میکروکنترلرهایی که حافظه ROM دارند بهترین گزینه برای برنامههایی است که در آنها نیازی به تغییر برنامه نیست و فقط نیاز به خواندن برنامه دارند. این میکروکنترلرها در مقایسه با میکروکنترلرهایی که دارای حافظه قابلبرنامهریزی OTP یا FLASH هستند، قیمت کمتری دارند. PIC16CR65 و PIC16CR72 نمونههایی از میکروکنترلرها هستند که دارای حافظه ROM هستند و در قسمت شماره با “R” مشخص میشوند.
EPROM
دومین نوع حافظه erasable programmable read only است و از این حافظه در دو نوع بسته مختلف استفاده میشود. هنگامیکه از EPROM دربسته سرامیکی با پنجره کوارتز استفاده میشود، میتوان برنامه میکروکنترلر را بارها پاک کرد و زمان پاک کردن بهشدت نور بستگی دارد. بهطورمعمول زمان پاک کردن بین 5 تا 30 دقیقه است. در این میکروکنترلر همچنین میتوان برنامه را دوباره برنامهریزی کند. به دلیل هزینه بالای بستهبندی سرامیکی پنجرهای بسیار گران است. میکروکنترلر PIC16C74B / JW EPROM در بازار موجود است و “JW” با بستهبندی پنجرهای نشان داده میشود.
OTP
حافظه قابلبرنامهریزی یکبار مصرف از همان نوع قالب دستگاههای بستهبندیشده پنجرهای EPROP استفاده میکرد. بستهبندی آن، آن را منحصربهفرد کرده است. این میکروکنترلرها دربسته بندی پلاستیکی مات هستند و نمیتوان برنامه آن را از طریق اشعه ماورا بنفش پاک کرد. دستگاه های OTP ابتدا به سمت مشتری منتقل میشوند سپس این موارد برنامهریزی میشوند بنابراین این دستگاهها را میتوان یک بار قابلبرنامهریزی نامید. این دستگاههای کمهزینه مثل PIC16C72A / P و PIC16C74B / SO دستگاههای OTP هستند.
Flash EPROM
این نوعی است که قابلیت انعطافپذیری متناوب را فراهم میکند زیرا برنامه آن میتواند بهصورت الکتریکی پاک شود و همچنین در چند ثانیه دوباره برنامهریزی شود. برای پاک کردن برنامه نیازی به نور ماورا بنفش نیست. پس از پاک شدن برنامه، میتواند با کد جدید دوباره برنامهریزی شود. دستگاههایی که دارای حافظه فلش هستند نیز میتوانند با استفاده از چند توالی خاص از دستورالعملها، خود برنامهریزی شوند. این دستگاهها همچنین حاوی مقدار کمی داده EPROM غیر فرار هستند و میتوانند هزاران بار نوشته شوند. PIC16F77 و PIC16F877 نمونههایی از میکروکنترلر است که حافظه فلش دارند. در این دستگاهها با پارت نامبر “F” مشخص میشود.
Program Memory Architecture
معماری حافظه برنامه در اینجا با چند مثال توضیح دادهشده است مانند حافظه برنامه میکروکنترلر 14 بیتی که دارای محدودیت داده 8K کلمه است و هر کلمه دارای یک دستورالعمل 14 بیتی است. در این شرایط برنامه به 4 صفحه تقسیمشده است و هر یک دارای 2K کلمه است که در شکل نشان دادهشده است.
در این مثال میکروکنترلر از حافظه داده برای انتقال دادهها در میان صفحات استفاده میکند. رجیستر PCLATH برای انتخاب صفحه بعدی که دستورالعمل در آن اجرا میشود، استفاده میشود. هنگامیکه دستورالعمل CALL یا GOTO اجرا میشود، از PCLATH <4: 3> برای انتخاب صفحه شاخه به استفاده میشود. WhenPCL با کد کاربری PCLATH<4:0> اصلاح میشود، سپس PCLATH <4: 0> با PCL برای تشکیل آدرس PC کامل برای اجرای دستورالعمل بعدی استفاده میشود. در شکل 1 میبینید که صفحه 0 دارای بردار تنظیم مجدد در محل 0 (000h) است. پس از فشار دادن ریست، کد در بردار ریست شروع به اجرا میکند. معمولاً دو دستورالعمل اول PCLATH برای صفحه صحیح برنامه و سومین دستورالعمل GOTO برای اجرای کد در شاخه دیگری از حافظه برنامه استفاده میشود، در غیر این صورت، در صورت وقفه میتوان از یک کد مفید کوچک در ابتدای حافظه برنامه استفاده کرد. در حین اجرای کد هنگام وقفه، آدرس دستورالعمل بعدی واکشی میشود و بهصورت پشته ذخیره میشود.
Page Size Limit and Absolute Addressing
Data Memory
این مورد نیز در همه میکروکنترلرها متداول است. این متشکل از رجیسترهای با اهداف عمومی است که به آنها GPR و رجیسترهای عملکرد خاص که به آنها SPR گفته میشود. حافظه داده به 4 بانک تقسیم میشود و طول هر بانک 128 بایت است. برای دسترسی به هر بانک، بیتهای PR1 و PR0 از وضعیت رجیستر باید دسترسی داشته باشند. رجیستر عملکرد ویژه، جنبههای مختلف میکروکنترلر را کنترل میکند و به ساختار فرآیند میکروکنترلر بستگی دارد. توابعی مانند ورودی، خروجی و کنترل محیطی، تایمر، شمارنده به رنام، اشارهگر پشته، حد پشته، کدهای شرایط و وضعیت پردازنده را کنترل میکند. رجیسترهای عمومی هدف دادههای گذرا را ذخیره میکنند. بهعنوانمثال، وقتی برنامه در حالت خود قطع میشود، آن مقدار از رجیستر آدرس، رجیستر دستورالعمل یا شمارنده برنامه در رجیستر هدف عمومی ذخیره میشود.
علاوه بر حافظه برنامه و داده، برخی از میکروکنترلرها دارای نوع سوم حافظه هستند که EEPROM نامیده می شود. این غیر فرار است و داده های آن را می توان بارها نوشت.
Processor Architecture
در اینجا نگاهی به معماری پردازنده میکروکنترلر میاندازیم. این ساختار و اندازه حافظه را کنترل میکند و درنهایت سرعت عملیاتی میکروکنترلر را کنترل میکند. این میکروکنترلر دارای دو معماری رایج است: یکی معماری وان نیومن و دیگری معماری هاروارد.
Von Neumann Architecture
میکروکنترلرهایی که دارای معماری Von Neumann هستند فقط یک فضای حافظهدارند. این فضای واحد، دادهها و دستورالعملهای برنامه را ذخیره میکند. به همین دلیل چندین دستورالعمل باید از یک فضای حافظه منفرد صورت گیرد که به آن واکشی میگویند. دستورالعملهایی که بارها و بارها اجرا میشوند، نیاز به چندین واکشی دارند تا در یک فضای حافظه قرار گیرند. در این شرایط ابتدا واکشی دستورالعملهای پردازنده را بازیابی میکند و واکشیهای اضافی دادههایی را که برای دستورالعمل برنامه موردنیاز است بازیابی میکند. با این کار پهنای باند میکروکنترلر کاهش مییابد، زیرا واکشی باید منتظر بماند تا دستورالعملهای واکشی برنامه کامل شود. این Von Neumann نامیده میشود.
Harvard Architectur
واحدهای میکروکنترلر PIC از معماری هاروارد استفاده میکنند زیرا این میکروکنترلرها دارای داده و حافظه برنامه جداگانه هستند. بنابراین، در واحدهای میکروکنترلر pic، واکشی دستورالعملها و واکشی دادهها بهطور همزمان در یک عملیات واکشی منفرد انجام میشود و باعث افزایش توان عملیاتی میشود. این معماری همچنین یک مزیت دیگر دارد که برنامه و گذرگاه داده میتواند متناسب با نیازهای عملکرد تنظیم شود. گذرگاه داده آن همیشه 8 بیت عرض دارد اما میکروچیپ میکروکنترلر را ارائه میدهد که دارای عرض حافظه برنامه 12، 14، 16 بیتی است. افزایش عرض باعث میشود که هیچ دستورالعملی برای واکشی بیشتر نباشد اما بازهم عملیات واکشی در یک عمل واکشی واحد انجام میشود.
در قسمت بعدی درباره ی تنظیم بیت های پیکرهبندی میکروکنترلر ها و… بیشتر صحبت خواهیم کرد.
سلام
ممنون تز آموزش هاتون . بی زحمت یه آموزش هم برای پروگرام کردن میکروها به روش isp نه بوت لودر بدید که بشه یک میکرو با میکرو دوم پروگرام کرد . خیلی به درد میخوره . مثلا اگه الگوریتمشو بدونیم میشه میکرو با ماژول هایی رادیویی و … پروگرام کرد
ممنون
سلام .دم شما گرم .عالی بود.
سلام خواهش میکنم