آموزش, توصیه شده, مقاله های سیسوگ

آموزش PIC قسمت پنجم: سازماندهی حافظه در PIC

آموزش PIC قسمت پنجم: سازماندهی حافظه در PIC

این مقاله انواع مختلف حافظه و کاربرد آنها در دستگاه‌های میکروکنترلر PIC را توضیح می‌دهد. این مقاله همچنین توضیح می‌دهد که معماری هر بخش از فضای حافظه شامل مثال‌هایی از مُدهای آدرس‌دهی و کد است.

 

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

واحدهای میکروکنترلر (MCU) از سه نوع حافظه تشکیل‌شده است.

  • Program Memory
  • Data Memory
  • Data EEPOM

انواع Program Memory

معمولاً تمام میکروکنترلرها این حافظه را به‌منظور ذخیره کردن دستورالعمل‌ها در اختیاردارند. و خود این حافظه از چهار نوع حافظه دیگر تشکیل‌شده است.

  1. ROM (Read only memory)
  2. EPROM (Erasable programmable read only memory)
  3. OTP (On time programmable)
  4. 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

 

memory-types

 

معماری حافظه برنامه در اینجا با چند مثال توضیح داده‌شده است مانند حافظه برنامه میکروکنترلر 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

 
حافظه در PIC
 
اندازه صفحه برنامه به تعداد بیت‌های آدرس دهی رمزگذاری می‌شود که در دستورالعمل‌های شاخه‌ای مانند دستورالعمل‌های CALL یا GOTO رمزگذاری شده‌اند. دستورالعمل‌های شاخه در سه بیت اول نشان می‌دهد که این دستورالعمل می‌تواند شمارنده برنامه را اصلاح کند. اگر در مورد دستورالعمل‌های CALL صحبت کنیم، این نشان‌دهنده آدرس برگشت است و 11 بیت باقیمانده در 11 بیت (LSB) شمارنده برنامه بارگیری می‌شود، این 11 بیت آدرس دهی حداکثر 2K آدرس را امکان‌پذیر می‌کند. این اندازه صفحه حافظه برنامه و دستگاه‌هایی را که حداکثر 2K حافظه برنامه دارند مشخص می‌کند، 2 بیت مهم (MSB) شمارنده برنامه برای پاک نگه‌داشتن PCLATH است. دستگاه‌هایی که دارای 4K برنامه هستند برای پاک کردن به 5 بیت در PCLATH نیاز دارند، درحالی‌که برای کار در 4 بیت صفحات 1 یا 2 انتخاب می‌شوند و دستگاه‌هایی که دارای 8K حافظه برنامه هستند برای انتخاب چهارمین و پنجمین بیت در PCLATH برای انتخاب صفحه 1 و 4 نیاز دارند. ازآنجاکه کل آدرس با استفاده از PCLATH کاملاً تعریف‌شده است و آدرس در دستورالعمل کدگذاری شده است بنابراین می‌توان گفت که از آدرس دهی مطلق نشان داده‌شده در شکل 2 با رجیستر PSLATH استفاده می‌کنیم.
 

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 بیتی است. افزایش عرض باعث می‌شود که هیچ دستورالعملی برای واکشی بیشتر نباشد اما بازهم عملیات واکشی در یک عمل واکشی واحد انجام می‌شود.   

منبع

در قسمت بعدی درباره ی تنظیم بیت های پیکره‌بندی میکروکنترلر ها و… بیشتر صحبت خواهیم کرد.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

3 دیدگاه در “آموزش PIC قسمت پنجم: سازماندهی حافظه در PIC

  1. Avatar for hosi hosi گفت:

    سلام
    ممنون تز آموزش هاتون . بی زحمت یه آموزش هم برای پروگرام کردن میکروها به روش isp نه بوت لودر بدید که بشه یک میکرو با میکرو دوم پروگرام کرد . خیلی به درد میخوره . مثلا اگه الگوریتمشو بدونیم میشه میکرو با ماژول هایی رادیویی و … پروگرام کرد
    ممنون

  2. Avatar for محسن محسن گفت:

    سلام .دم شما گرم .عالی بود.

    1. Avatar for Sisoog Os Sisoog Os گفت:

      سلام خواهش میکنم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *