Пам'ять мікроконтролерів. реєстрова пам'ять

  1. Пам'ять програм.
  2. Масочная пам'ять.
  3. Лише один раз програмована пам'ять.
  4. Репрограмміруемом пам'ять з електричним стиранням.
  5. Пам'ять типу FLASH.
  6. Програмування ПЗУ.
  7. Пам'ять даних.
  8. Особливості стека.
  9. Про зовнішній пам'яті.

Можна виділити три основні види пам'яті, використовуваної в мікроконтролерах:   ● пам'ять програм, яка представляє собою постійну пам'ять, призначену для зберігання програмного коду і констант

Можна виділити три основні види пам'яті, використовуваної в мікроконтролерах:

● пам'ять програм, яка представляє собою постійну пам'ять, призначену для зберігання програмного коду і констант. Ця пам'ять не зраджує свого вмісту в процесі виконання програми;

● пам'ять даних, призначена для зберігання змінних (результатів) в ході виконання програми;

реєстрова пам'ять, що складається з внутрішніх регістрів мікроконтролера. Розглянемо особливості кожного з перерахованих видів пам'яті.

Пам'ять програм.

Необхідність такої пам'яті викликана тим, що мікроконтролер не містить таких пристроїв пам'яті, як вінчестер в комп'ютері, з якого завантажується програма, що виконується. Тому код програми повинен постійно зберігатися в мікроконтролері.

Всі типи пам'яті програм відносяться до незалежної пам'яті, або постійної пам'яті (ПЗУ), вміст якої зберігається після вимкнення живлення мікроконтролера.

В процесі виконання програма зчитується з цієї пам'яті, а блок управління (дешифратор команд) забезпечує її декодування і виконання необхідних операцій. Вміст пам'яті програм не може змінюватися (перепрограмувати) під час виконання програми. Тому функціональне призначення мікроконтролера не може змінитися, поки вміст його пам'яті програм не буде стерто (якщо це можливо) і перепрограмовано (заповнене новими командами).

Слід звернути увагу, що розрядність мікроконтролера (8, 16 або 32 біт) вказується відповідно до розрядністю його шини даних.

Коли йдеться про те, що пристрій є 8-розрядним, це означає розрядність даних, які здатний обробляти мікроконтролер.

В Гарвардської архітектури команди можуть мати велику розрядність, ніж дані, щоб дати можливість зчитувати за один такт цілу команду. Наприклад, мікроконтролери PIC в залежності від моделі використовують команди з розрядністю 12, 14 або 16 біт. У мікроконтролерах AVR команда завжди має розрядність 16 біт. Однак всі ці мікроконтролери мають шину даних розрядністю 8 біт.

У пристроях з Принстонской архітектурою розрядність даних зазвичай визначає розрядність (число ліній) використовуваної шини. У мікроконтролерах Motorola 68НС05 24-розрядна команда размешается в трьох 8-розрядних комірках пам'яті програм. Для повної вибірки такої команди необхідно зробити три цикли зчитування цієї пам'яті.

Виділимо і розглянемо п'ять типів незалежної резидентної пам'яті, або постійних запам'ятовуючих пристроїв (ПЗУ), використовуваних для зберігання програм.

Масочная пам'ять.

Масочний ПЗУ (Mask-ROMілі просто ROM) виготовляються на етапі виробництва мікроконтролерів для повністю налагодженої програми. На скляному фотошаблонах при використанні програми створюється малюнок маски. Отриманий фотошаблон з маскою використовується для формування з'єднань між елементами, з яких складається пам'ять програм.

Перші масочний ПЗУ з'явилися на початку 1960-х років і знаходять застосування до теперішнього часу завдяки таким достоїнств як низька вартість при масовому виробництві виробів і висока надійність зберігання програм.

Недоліки масочний ПЗУ - будь-яка зміна прикладної програми пов'язано зі значними витратами коштів і часу на створення нового комплекту фотошаблонів і їх впровадження у виробництво.

Лише один раз програмована пам'ять.

Ця пам'ять (One-Time Program mable ROM - OTPROM) програмується користувачем і в початковому стані складається з ячейок з одиничними бітами. Програмування підлягають тільки ті осередки пам'яті, вміст яких має прийняти значення 0. Для цього на осередок пам'яті подають послідовність імпульсів підвищеної напруги.

Рівень напруги, число імпульсів і їх тимчасові параметри повинні строго відповідати технічним умовам. Після запису нуля відновити середнє арифметичне значення неможливо. З цієї причини пам'ять отримала назву одноразово програмованих ПЗУ. Однак слід вказати на можливість допрограммірованія (не займаних) осередків з одиничними бітами.

Мікроконтролери з однократно програмованим ПЗУ використовуються у виробах, що випускаються невеликими партіями.

Репрограмміруемом пам'ять з ультрафіолетовим стиранням.

Осередок пам'яті з ультрафіолетовим стиранням (Erasable Programmable ROM - EPROM) являє собою ЛІПЗМОП (лавинно-інжекційні з плаваючим затвором) транзистор. У початковому стані (до запису) при зверненні до осередку зчитується логічна одиниця. Програмування пам'яті зводиться до запису у відповідні комірки логічних нулів. Пам'ять ЕР ROM допускають багаторазове програмування, технологія якого подібна технології одноразово програмованих ПЗУ.

Перед кожним сеансом програмування виконується операція стирання для відновлення вихідного стану елементів пам'яті. Для цього в корпусі мікроконтролера передбачено спеціальне вікно, яке опромінюється ультрафіолетовими променями. Число сеансів стирання / програмування ПЗУ становить 25-100 разів при дотриманні технології програмування (задані значення напруги живлення, число і тривалість імпульсів) і технології стирання (хвильової діапазон джерела ультрафіолетового випромінювання).

Мікроконтролери з пам'яттю EPROM через високу вартість застосовуються в дослідних зразках розробляються.

Для зменшення ціни мікросхеми EPROM укладають в корпус без віконця (версія EPROM з одноразовим програмуванням). Завдяки зниженню вартості версії EPROM часто використовуються замість масковий-програмованих ROM.

Репрограмміруемом пам'ять з електричним стиранням.

В якості елемента пам'яті з електричним стиранням (Electrically Erasable Pro grammable ROM - EEPROM або E2 PROM) використовується транзистор зі структурою МНОП (Метал, Нітрид кремнію, Оксид кремнію, Напівпровідник), завдяки чому ПЗУ має порівняно низьку вартість (по відношенню до EPROM) і допускає максимальне число циклів стирання / програмування 104-106. Крім того, технологія програмування пам'яті EEPROM дозволяє реалізувати побайтное стирання і побайтное програмування, не знімаючи контролер з плати, що дозволяє періодично оновлювати його програмне забезпечення.

Незважаючи на зазначені гідності, цей тип пам'яті не отримав широкого поширення для зберігання програм з двох причин:

● ПЗУ типу EEPROM мають обмежену ємність;

● з'явилися ПЗУ типу FLASH, які мають близькі призначені для користувача характеристики, але нижчу вартість.

Пам'ять типу FLASH.

Електрично програмована і електрично стирається пам'ять типу FLASH (FLASH ROM) створювалася як альтернатива між дешевими одноразово програмованими ПЗУ великої місткості і дорогими EEPROM ПЗУ малої місткості. Пам'ять FLASH (як і EEPROM) зберегла можливість багаторазового стирання і програмування.

Зі схеми ПЗУ вилучено транзистор адресації кожного осередку, що, з одного боку, позбавило можливості програмувати кожен біт пам'яті окремо, з іншого боку, дозволило збільшити обсяг пам'яті. Тому пам'ять типу FLASH стирається і програмується сторінками або блоками.

Таким чином, функціонально FLASH-пам'ять мало відрізняється від EEPROM. Основна відмінність полягає в способі стирання записаної інформації: якщо в EEPROM-пам'яті стирання проводиться окремо для кожного осередку, то у FLASH-пам'яті - цілими блоками. У мікроконтролерах з пам'яттю EEPROM доводиться змінювати окремі ділянки програми без необхідності перепрограмування всього пристрій.

В даний час МК з FLASH починають витісняти МК з однократно програмованим (і навіть масковим) ПЗУ.

Програмування ПЗУ.

Відзначимо, що Mask ROM-пам'ять програмується тільки в заводських умовах при виготовленні МК. Пам'ять типу OTPROM і EPROM надає розробнику можливості програмування з використанням програматора і джерела підвищеної напруги, які підключаються до відповідних висновків МК.

Пам'ять EEPROM і FLASH відноситься до багаторазово програмованої, або репрограмміруемом, пам'яті. Необхідна для стирання / програмування підвищений напруга харчування створюється в модулях EEPROM і FLASH-пам'яті сучасних контролерів за допомогою вбудованих схем посилення напруги, званих генераторами накачування. Завдяки реалізації програмного керування включенням і відключенням генератора накачування з'явилася принципова можливість здійснити програмування або стирання осередків пам'яті FLASH і EEPROM в складі розроблюваної системи. Така технологія програмування отримала назву програмування в системі (In System Programming - ISP).

Вона не вимагає спеціального устаткування (программаторов), завдяки чому скорочуються витрати на програмування. Мікроконтролери з ISP-пам'яттю можуть бути запрограмовані після їх установки на плату кінцевого виробу.

Розглянемо, як реалізується (і використовується) можливість програмування EEPROM-пам'яті під управлінням прикладної програми. Якщо програму з алгоритмом програмування зберігати в окремому модулі пам'яті з номінальною годує напругою, а EEPROM-пам'ять забезпечити генераторами накачування, то можна зробити ISP-програмування EEPROM-пам'яті. Дана обставина робить EEPROM-пам'ять ідеальним енергонезалежною запам'ятовуючим пристроєм для зберігання змінюваних в процесі експлуатації виробу налаштувань користувача. Як приклад можна привести сучасний телевізор, настройки каналів якого зберігаються при відключенні харчування.

Тому однією з тенденцій удосконалення резидентної пам'яті 8-розрядних МК стала інтеграція на кристал МК двох модулів незалежній пам'яті: FLASH (або OTP) - для зберігання програм і EEPROM - для зберігання перепрограмованих констант.

Розглянемо технологію (ре) програмування FLASH-пам'яті з вбудованим генератором накачування під управлінням прикладної програми. Перш за все, відзначимо дві обставини:

● якщо для зберігання перепрограмованих констант в МК вбудована пам'ять EEPROM, то попрограммірованіе декількох біт FLASH-пам'яті при експлуатації готового виробу не має сенсу. При необхідності краще відразу використовувати режим репрограммірованія;

● не слід програму програмування FLASH-пам'яті зберігати в самій FLASH-пам'яті, так як перехід в режим програмування призведе до неможливості подальшого її зчитування. Програма програмування повинна розташовуватися в іншому модулі пам'яті.

Для реалізації технології програмування в системі вибирається один з оследовательних портів МК, обслуговування якого здійснює спеціальна програма монітора зв'язку, розташована в резидентном масочном ПЗУ МК. Через послідовний порт персональний комп'ютер завантажує в ОЗУ МК програму програмування і прикладну програму, яка потім заноситься в пам'ять FLASH. Так як резидентное ОЗУ МК має незначний обсяг, то прикладна програма завантажується окремими блоками (порціями). Якщо в МК встановлено модуль масочной пам'яті з програмою програмування, в ОЗУ завантажується тільки прикладна програма.

Мікроконтролери, що реалізують технологію програмування в системі, часто мають в своєму складі чотири типи пам'яті:

FLASH-пам'ять програм, Mask ROM-пам'ять монітора зв'язку, EEPROM-пам'ять для зберігання змінюваних констант і ОЗУ проміжних даних.

Технологія програмування в системі в даний час все ширше використовується для занесення прикладних програм в мікроконтролери, розташовані на платі кінцевого виробу. Її перевага - відсутність програматора і висока надійність програмування, обумовлена стабільністю заданих внутрішніх режимів МК.

Як приклад наведемо показники резидентної FLASH-пам'яті МК сімейства НС08 фірми Motorola:

● гарантоване число циклів стирання / програмування - 105;

● гарантований час зберігання записаної інформації - 10 років, що практично становить життєвий цикл вироби; модулі FLASH-пам'яті працюють і програмуються при напрузі живлення МК від 1,8 до 2,7 В;

● еквівалентну час програмування 1 байта пам'яті - 60 мкс.

Пам'ять даних.

Як резидентної пам'яті даних використовується статичне оперативний пристрій (ОЗУ), що дозволяють зменшувати частоту тактирования до як завгодно малих значень. Вміст осередків ОЗУ (на відміну від динамічної пам'яті) зберігається аж до нульової частоти. Ще однією особливістю статичного ОЗУ є можливість зменшення напруги живлення до деякого мінімально допустимого рівня, при якому програма управління мікро контролером виконуватися, але вміст в ОЗУ зберігається.

рівень напруги зберігання має значення порядку одного вольта, що дозволяє для збереження даних у разі потреби привести МК на харчування від автономного джерела (батарейки або акумулятора). Деякі МК (наприклад, DS5000 фірми Dallas Semiconductor) мають в корпусі автономне джерело живлення, що гарантує збереження даних в ОЗУ протягом 10 років.

Характерною особливістю мікроконтролерів є порівняльною невеликий обсяг (сотні байт) оперативної пам'яті (ОЗУ), що використовується для зберігання змінних. Це можна пояснити декількома факторами:

● прагненням до спрощення апаратних засобів МК;

● використанням при написанні програм деяких правил, спрямованих на скорочення обсягу пам'яті ОЗУ (наприклад, константи зберігаються як змінні);

● розподілом ресурсів пам'яті таким чином, щоб замість розміщення даних в ОЗУ максимально використовувати апаратні засоби (таймери, індексні регістри і ін.);

● орієнтацією прикладних програми на роботу без використання великих масивів даних.

Особливості стека.

У мікроконтролерах для організації виклику підпрограм і обробки переривань виділяється частина пам'яті ОЗУ, іменована стеком. При цих операціях вміст програмного лічильника і основних регістрів (акумулятора, регістра стану, індексних і інших регістрів) зберігається, а при поверненні до основної програми відновлюється. Нагадаємо, що стек працює за принципом: останній прийшов - перший пішов (Last In, First Out-LIFO).

У Принстонской архітектурі ОЗУ використовується для реалізації багатьох апаратних функцій, включаючи функції стека. В адресному просторі пам'яті виділені окремі області для команд, регістрів загального призначення, регістрів спеціальних функцій і ін. Це знижує продуктивність контролера, так як звернення до різних областей пам'яті не можуть виконуватися одночасно.

Мікропроцесори з Гарвардської архітектурою можуть паралельно (одночасно) адресувати пам'ять програм, пам'ять даних (що включає простір введення-виведення) і стек.

Наприклад, при активізації команди виклику підпрограми CALL виконується кілька дій одночасно.

У Принстонской архітектурі при виконанні команди CALL наступна команда вибирається тільки після того, як в стек буде поміщено вміст програмного лічильника.

Через невеликої ємності ОЗУ в мікроконтролерах обох архітектур можуть виникнути проблеми при виконанні програми:

● якщо виділений окремий стек, то після його заповнення відбувається циклічна зміна вмісту покажчика стека, в результаті чого покажчик стека починає посилатися на раніше заповнену комірку стека. Тому після занадто великої кількості команд CALL в стеці виявиться неправильний адресу повернення, який був записаний замість правильної адреси;

● якщо мікропроцесор використовує загальну область пам'яті для розміщення даних і стека, то при переповненні стека відбудеться затирання даних. Розглянемо особливості збереження в стеці вмісту регістрів, обумовлені відсутністю команд завантаження в стек (PUSH) та вилучення з стека (POP). У таких мікроконтролерах замість команди PUSH і POP використовуються дві команди і індексний регістр, який явно вказує на область стека. Послідовність команд повинна бути такою, щоб переривання між першою і другою командою не привело до втрати даних. Нижче приведена імітація команд PUSH і POP з урахуванням зазначеної вимоги.

PUSH; Завантажити дані в стек decrement index; Перейти до наступної комірки стека move [index], асі; Зберегти вміст акумулятора в стеці POP; Витягти дані з стека move асі, [index]; Помістити значення стека в акумулятор increment index; Перейти до попередньої комірки стека

Якщо після першої команди програма буде перервана, то після виконання обробки переривання вміст стека НЕ ​​буде втрачено.

Мікроконтролери (як і комп'ютерні системи) мають безліч регістрів, які використовуються для управління різними внутрішніми вузлами і зовнішніми пристроями. До них відносяться:

● регістри процесорного ядра (акумулятор, регістри стану, індексні регістри);

● регістри управління (регістри управління переривань, регістри управління таймером);

● регістри введення / виводу даних (регістри даних і регістри управління паралельним, послідовним або аналоговим вводом / виводом).

За способом розміщення регістрів в адресному просторі можна виділити:

● Мікроконтролери, в якіх всі регістрі и пам'ять Даних розташовуються в одному адресному пространстве, т. Е Регістрі суміщені з пам'яттю Даних. В цьому випадку пристрої введення-виведення відображаються на пам'ять;

● мікроконтролери, в яких пристрої введення / виведення відокремлені від загального адресного простору пам'яті. Основна перевага способу розміщення регістрів введення-виведення в окремому просторі адрес - спрощується схема підключення пам'яті програм і даних до загальної шині. Окремий простір введення-виведення дає додаткову перевагу процесорам з Гарвардської архітектурою, забезпечуючи можливість зчитувати команду під час звернення до регістру введення-виведення.

Способи звернення до регістрів істотно впливають на їх продуктивність. У процесорах з RISC-архітектурою все регістри (часто й акумулятор) розташовуються по явно заданим адресами, що забезпечує більш високу гнучкість при організації роботи процесора.

Про зовнішній пам'яті.

У тих випадках, коли для розробляються не вистачає резидентної пам'яті програм і пам'яті даних, до мікроконтролеру підключається додаткова зовнішня пам'ять. Відомі два основних способи:

● підключення зовнішньої пам'яті з використанням шинного інтерфейсу (як в мікропроцесорних системах). Для такого підключення багато мікроконтролери мають спеціальні апаратні засоби;

● підключення пам'яті до пристроїв введення-виведення, При цьому звернення до пам'яті здійснюється через ці пристрої програмними засобами. Такий спосіб дозволяє використовувати прості пристрої введення / виводу без реалізації складних шинних інтерфейсів. Вибір способу залежить від конкретного додатка.

© 2008 — 2012 offroad.net.ua . All rights reserved. by nucleart.net 2008