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

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

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

 

منبع

حمایت از Sisoog Os

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Sisoog Os
Sisoog Os

کارآفرین, تولید کننده, طراح الکترونیک و ....

دیدگاه ها

2 دیدگاه

  • محسن
    ۱۰ مرداد ۱۴۰۱

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک