ذاكرة قراءة فقط قابلة للبرمجة والمسح الكهربائي
عودة للموسوعةأنواع |
ذواكر الحاسوب |
---|
الذواكر غير مستدامة |
ذاكرة وصول عشوائي (RAM) |
|
تاريخية |
|
ذاوكر مُستدامة |
ذاكرة القراءة فقط (ROM) |
|
ذاكرة الوصول العشوائي المُستدامة (NVRAM) |
|
ذواكر مغناطسية |
|
ذواكر بصرية |
|
ذواكر تاريخية |
|
|
ذاكرة القراءة القابلة للمسح هي نوع من الذاكرات القابلة للبرمجة والمسح كهربائيا.
ذاكرة الكمبيوتر EEPROM
لنتعهد على أنواع الذواكر المستخدمة في الحاسب
ذاكرة الوصول العشوائيRandom Access Memory RAM =
ذاكرة القراءة فقط READ ONLY MEMORY
الذاكرة الظاهرية VIRTUAL MEMORY
ذاكرة وميضية FLASH MEMORY
أنواع ذواكر الرام للوصول العشوائي
دي رام
ذاكرة الوصول العشوائي الساكنة
FPM DRAM
SDRAM
EDO DRAM
RDRAM
FLASH RAM
VRAM
DZZX
كيف تعمل ذواكرrom
نقطة التقاء السطر مع العمود في الـRAM نجد ترانزستور بينما نقطة التقاء السطر مع العمود في ROM سنجد diode -في حال قام الديود بوصل السطر مع العمود ستكون محتوى الخلية 1 -في حال لم يتصل السطر مع العمود بالتالي فإن محتوى الخلية 0
أنواع الـROM
ROM
PROM
EPROM
EEPROM
يوجد أمرين مشهجرين بين هذه الأنواع : -البيانات لا تضيع عند بتر التيار الكهربائي كما يحدث في RAM -البيانات لا يمكن تغييرها باستخدام وسائل خاصة
الذاكرة EEPROM
Electrically Erasable Programmable Read-Only Memory تتميز هذه الذاكرة : -يمكن الكتابة على الرقاقة دون إزالتها من مكانها
-يمكن تغيير جزء محدود من الرقاقة دون محوها كلها
-تغيير المحتويات لا يحتاج إلى أدوات خاصة أوأجهزة
-يمكن تغيير محتويات الخلايا باستخدام برنامج يتحكم بالمجال الكهربائي للخلية ويقوم بشحنها أوتفريغها حسب الطلب
-الكتابة(التفريغ أوالشحن) يتم على مستوى الخلية أي بالتدريج جميع مرة بايت واحد مما يجعلها بطيئة جداً
كيفية استخدام الـEEPROM في المعالجات
تستعمل لحفظ المعلومات الهامة كحفظ معلومات البرامج أوحفظ اعدادات البيوس حيث أنها تحتفظ بمعلوماتها عند بتر التيار الكهربائي
يوجد في الـPIC أربع مسجِّلات تستخدم في الوصول إلى ذاكرة الـ EEPROM، هذه المسجلات هي :
مسجل EEDATA
يستخدَم كمسجِّل مؤقَّت لتخزين المعطيات التي نريد إيصالها إلى EEPROM.
مسجل EEADR
يستخدم لتخزين عنوان لموقِع في الـ EEPROM والذي نريد القراءة منه أوالكتابة فيه.
مسجل EECON1
يحوي هذا المسجل على جميع خانات التحكم اللازمة للكتابة أوالقراءة في الـ EEPROM.
مسجل EECON2
هومسجِّل خاص يمكِّنكَ من كتابة المعطيات.
12121212121212
مثال توضيحيّ
عملية القراءة
حتى تتم عملية القراءة من الـ EEPROM بكل بساطة يجب عليك حتى تجعل PIC يعهد أيَّ موقِع ترغب القراءة منه، لأنَّه يوجد 64 منها يمكن للمعالِج حتى يخزِّنَ فيها.! إذاً، أوّلُ شيء لا بُدَّ حتى تقوم بهِ هوكتابة عنوان الموقِع الذي تُريد القراءة منه، وذلك في المسجِّل EEADR ؛ على سبيل المثال أنت ترغب القراءة من المسقط الثالث، في هذه الحالة استخدم التعليمات التالية :
MOVLW 2h
movwf EEADR
ولكِّن لحظة !.. كُنت ترغب القراءة من المسقط الثالث، لما إذن وضعنا القيمة H2 ،يا ترى؟ … إذن تذكّر، العنوان 0 (0h) هوالموقِع الأوّل، والعنوان 63 (3Fh)هوالمسقط الـ 64.. إذن هذه الذاكرة تبدأ مواقعها من 0 وليس من 1.
والآن حتى تعهد الـ PIC أنّكَ ترغب عملاً قراءة قيمة من الـ EEPROM فلا بُدَّ من تفعيل واحدة من خانات التحكُّم الخاصة بالمسجِّل EECON1، هذه الخانة الخاصة هي : RD (الخانة رقم 0) وهي اختصار لحدثة READ (قراءة). المسجِّل EECON1 موجود في الصفحة 1 من الـ RAM وبالتالي قبل الوصول إليه لا بُدَّ من تفعيل الخانة RP0 في مسجِّل الـ STATUS (مسجِّل الحالة) :
bsf status، RP0
وللقراءة من الموقِع قم بتفعيل الخانة RD إلى القيمة 1 :
bsf EECON1، RD
عندما نقوم بجعل قيمة RD مساوية لـ 1 فإنّ الـ PIC ترى آلياً القيمة الموجودة في EEADR وتستخدمها كعنوان لذاكرة EEPROM التي ستقوم بالقراءة منها، وبعد قراءة المسقط توضع المعطيات في المسجِّل EEDATA وعندما يتُّم ذلكَ يتم إرجاع الخانة RD إلى 0 مجدداً. كل ما تجاوز يتُّم أثناء تطبيق التعليمة :
bsf EECON1، RD
المعطيات الآن موجودة في EEDATA ويمكننا حتى نعمل بها ما نشاء، هذا المسجِّل موجود في الصفحة 0 من ذاكرة RAM وبالتالي لا بُدَّ حتى نمحي الخانة RP0 في STATUS قبل الوصول إليه :
bcf STATUS، RP0
movf EEDATA، W
فيما يلي مجموعة التعليمات اللازمة للقراءة من EEPROM :
h1 movlw
EEADR movwf
STATUS، RP0 bsf
EECON1، RD bsf
STATUS، RP0 bcf
EEDATA، W movf
نضع هذه التعليمات في إجرائية SUBROUTINE بمنتهى السهولة، وكل ما نحتاجه لاستخدامها هووضع عنوان الـ EEPROM في المسجِّل W، وبعد تطبيق هذه الإجرائية فإنَّ القيمة التي سترجعها يفترض أن يتم وضعها في المسجِّل W :
EEADR movwf EepRead
STATUS، RP0 bsf
EECON1، RD bsf
STATUS، RP0 bcf
EEDATA، W movf
return
لاستخدام هذه الإجرائية قم بشحن المسجِّل W بالعنوان ثم قم باستنادىئها.. بفرض أنك ترغب القراءة بشكل مستمر من EEPROM وكتابة المعطيات على الـ PORT B فهناك كيفية تمكنِّكَ من فِعل ذلك :
EEADR clrf
EepRead call EEloop
PORTB movwf
EEADR incf
d'64' movlw
EEADR، W xorwf
STATUS، Z btfss
EEloop goto
إن إجرائية EepRead قد لا تُنَفَّذ بشكل جيد إذا لم تكُن حذِراً..هل يُمكنِكَ تخمين سبب ذلك ؟،يا ترى؟ ما الذي يجري عندما تكون الخانة RP0 في المسجِّل STATUS لها قيمة '1 ' في الوقت الذي يتُّم فيه استنادىء الإجرائية ؟؟.. الإجابة على هذين التساؤلين كالتالي : لن يتُّم الوصول إلى المسجِّل EEADR، والمسجِّل EECON1 سيكون في البرنامج الذي نستخدم فيه كلا صفحتي RAM، وبالتالي يجب حتى نعهد جيداً أننّا في الصفحة السليمة.. إذا لم تكُن واثقاً في أي صفحة أنت تعمل عند استنادىء الإجرائيّة EepRead، فقم قبل أي شيء بتصفير الخانة RP0 داخل الإجرائية كالتالي :
STATUS، RP0 bcf EepRead
EEADR movwf
STATUS، RP0 bsf
EECON1، RD bsf
STATUS، RP0 bcf
EEDATA، W movf
return
هذا بالفِعل مثال رائِع لتوضيح دور الخانة RP0 في العملية.. يُمكِنُكَ من خلاله ملاحظة عدد مرات استخدامها، وإنَّ هذه الإجرائية لن تعمل بدونها..
عملية الكتابة
إن الكتابة في الـ EEPROM أمر أصعب قليلاً، هنا يُفترَض بكَ كتابة سِلسلة من التعليمات الخاصة في كُلِّ مرة تريدُ فيها كتابة معطيات في تلك الذاكرة، وإذا لم تُفلِح في ذلك، فإنَّكَ لن تكون قادراً على كتابة أي مُعطيات على الإطلاق..! أولُ شيء ستقومُ بهِ هوشحن المسجِّل EEADR بعنوان الموقِع الذي ترغب الكتابة فيه، كذلك لا بُدَّ حتى تشحن المسجِّل EEDATA بقيمة المعطيات التي تُريدُ تخزينها.. بفرض أنَّك ترغب كتابة القيمة 0x45 في الموقِع الأوَّل.. إذَن قم بكتابة ما يلي :
0h movlw
EEADR movwf
0x45 movlw
EEDATA movwf
الترتيب غير ضروري في كتابة التعليمات السابقة (شحن المسجِّلات). الآن حتى نُعلِمَ الـ PIC أننّا نريد كتابة قيمة في الـ EEPROM، فإننا نحتاج لتفعيل بعض الخانات الخاصّة في المسجِّل EECON1، أحد هذه الخانات الخاصة هي WT (الخانة 1) وهي اختصار لـ WRITE (كتابة). والخانة الأُخرى هي WREN (الخانة 2) وهي اختصار لـ WRITE ENABLE (تأهيل القراءة)، تبدوهاتان الخانتان متشابهتين، ولكِّن في الحقيقة لهما وظيفتان مختلفتان قليلاً.
قبل حتى تتُّم الكتابة يجب تأهيل WREN أي جعلها'1'، طالما كانَت 0 فإنّ الـ PIC لن تكتُبَ شيئاً من المعطيات حتى لوطُلِبَ مِنها ذلِك. المسجِّل EECON1 متوضِّع في الصفحة 1 من ذاكرة الـ RAM وبالتالي للوصول إليه يفترض أن نضع الخانةRP0 في المسجِّل STATUS على الوضع '1' كالتالي :
STATUS، RP0 bsf
ولتفعيل الكتابة قم فقط بتأهيل WREN أي جعله'1' :
EECON1، WREN bsf
لجعل الـ PIC تبدأ بالكتابة في الـ EEPROM لا بُدَّ من استخدام التعليمات السابقة، بل لا بُدَّ من كتابتها بنفس الشكل الذي ورَدَت فيه تماماً، وبنفس الترتيب حتماً.. إضافة للخانة WREN فإنَّ هذه السلسلة من التعليمات تعتبر عامِل أمان ضد أخطاء القراءة. إذا المسجِّل EECON2 هوأيضاً في الصفحة 1 من الـ RAM، والخانة RP0 قد تمَّ وضعها على 1 مسبقاً، أي لا داعي لإعادة ذلك مرةً أُخرى..
0x55 movlw
EECON2 movwf
0xAA movlw
EECON2 movwf
EECON1، WT bsf
بعد تطبيق هذه التعليمات، وبِجعلِكَ الخانة WT مساوية '1'، فإنَّ الـ PIC يفترض أن ترى القيمة المخزَّنة في EEADR على أنَّها عنوان مسقط الـ EEPROM الذي ستكتُب فيه، كما أنَّها ترى القيمة المخزَّنة في EEDATA على أنَّها المعطيات التي ستخطها. إنَّ عملية الكتابة التي تقوم بِها الـPIC في الـ EEPROM تأخُذُ وقتاً، وذلِكَ بسبب طبيعة هذه الذاكرة. إنَّ سرعة القراءة من الـ EEPROM من مرِتبة سرعة القراءة من الـ RAM الاعتيادية ولكِن الذي يأخُذ وقتاً هوالحاجة لتخزين المعطيات بشكل مؤقت إلى حتى تُكتَب مِن جديد. بعد حتى تُنهي الـ PIC كتابة المعطيات في الموقِع المعتبر، فإنَّ الخانة WT تعود آلياً لتأخُذ الوضع'0' والعَلَم EEIF يأخذ القيمة'1'.
إن الزمن الذي تستغرقه عمليّة الكتابة عادة ماقد يكون 10ms (أيعشرة أجزاء من ألف من الثانية) هذا لا يظهر كثيراً، إلا أنه زمن طويل نسبياً في أبجدية المعالِجات الصِغَريّة.. إنَّ الـPIC التي تعمل على ساعة بسُرعة 4 MHz قادرة على تطبيق 10.000 تعليمة بنفس الزمن الذي تستغرقه عملية كتابة واحِدة. لاحِظ أنَّه ليس بإمكانِك كتابة بايت (BYTE) آخر في EEPROM حتى تنتهي الـ PIC من كتابة الحدثة الأخيرة، ولنفرِض جدلاً أنَّك حاولت ذلك فأُؤكِد لك إنَّك لن تجني إلا الأخطاء ؛ ولفهم هل أنهى المعالِج دورة الكتابة أم لا.. لدينا طريقتين.. الأولى تتمثَّل بفحص الخانة WR هل هي '1'.. والطريقة الثانية هي باستخدام المقاطَعات
المراجع:
http://en.wikipedia.org/wiki/EEPROM
http://searchsmb.techtarget.com/sDefinition/0,,sid44_gci213928,00.html
http://www.wisegeek.com/what-is-eeprom.htm
مراجع
- ^ "Seeq Technology » AntiqueTech". مؤرشف من الأصل في 03 يوليو2018.
- ^ "Frequently Asked Questions -ROHM Semiconductor". مؤرشف من الأصل في 20 مارس 2012.
- ^ "Electrically erasable non-volatile semiconductor memory" (PDF). مؤرشف من الأصل (PDF) في 11 أغسطس 2017.
التصنيفات: اختراعات يابانية, ذاكرة الحاسوب, ذاكرة مستديمة, صفحات بها وصلات إنترويكي, بوابة ألعاب فيديو/مقالات متعلقة, بوابة إلكترونيات/مقالات متعلقة, بوابة تقنية المعلومات/مقالات متعلقة, بوابة علم الحاسوب/مقالات متعلقة, جميع المقالات التي تستخدم شريط بوابات, قالب تصنيف كومنز بوصلة كما في ويكي بيانات, صفحات تستخدم خاصية P227