Постоянное запоминающее устройство (ПЗУ).
Постоянным запоминающим устройством называют энергонезависимую память, т.е. память, не зависящую от наличия напряжения питания на устройстве. В таком устройстве информация может храниться длительное время без подключения его к источнику питания.
Данный тип памяти предназначен для хранения информации, которая не должна быть уничтожена при пропадании питания на устройстве. К таким данным можно отнести программу для микроконтроллера, данные о настройке этой программы, различные файлы. К файлам могут относиться графические изображения, данные, снятые с датчиков и т.д.
Существует множество различных реализаций ПЗУ. В микроконтроллерах наибольшую популярность получили две технологии. Это – EEPROM (ElectronicallyErasableProgrammableROM – электрическистираемаяпрограммируемая энергонезависимая память) иflash (FlashEraseEEPROM).
EEPROMбыла разработана в 1979 году фирмой Intel. Эта память имеет возможность перепрограммирования при подключении её к стандартной шине процессора. Причём стирание любой ячейки памяти происходит автоматически при записи в неё новых данных. Т.о. в этом типе памяти существует возможность изменить информацию в одной ячейке без затрагивания соседних ячеек.
Flashпамять является дальнейшим развитием EEPROM. В ней используется несколько отличный от EEPROMтип ячейки-транзистора.И другая организация доступа к ячейкам памяти. В результате чего доступ к ячейкам стал быстрее. Но стирание в flashпамяти производится только для определённого блока данных, либо для всей микросхемы в целом. Стереть один элемент в ней невозможно. А так как запись в этом типе микросхемы (для типа памяти NAND) производится поэлементным «И» текущего состояния ячейки с данными которые надо записать, то верные данные будут записаны в ячейку только в том случае, если в ней будут записаны только одни единицы. Установить в ячейке единицу можно только функцией стирания. Никакой записью данных этого сделать нельзя. Следовательно, для того, чтобы записать данные в одну ячейку памяти, надо скопировать в стороннюю память весь блок, который будет стёрт, стереть его. В памяти поменять значение нужной ячейки и уже изменённый блок записать обратно.
Как можно видеть работа с отдельными ячейками данных медленная из-за необходимости каждый раз копировать и стирать целый блок данных. Но работа сразу со всем блоком на много быстрее чем в EEPROM.
Т.о. во Flashимеет смысл хранить информацию, которая будет изменяться редко (или никогда). А в EEPROMможно записывать настройки программы, которые должны сохраниться после отключения устройства от питания.
Flashпамять бывает двух типов – это NORи NAND.NOR (NotOR) имеет быстрый произвольный доступ к ячейкам памяти и возможность побайтовой записи. NAND (NotAND) позволяет производить быструю запись и стирание данных, но имеет несколько большее время произвольного доступа к данным по сравнению с NOR.
Исходя из особенностей структур памяти, NANDобычно используется для хранения информации, считываемой потоком, такой как видео, музыка и т.д. NORже используется для хранения программы, благодаря высокой скорости чтения произвольного байта данных.
ПЗУ имеет относительно низкое быстродействие и не может быть использован для хранения информации, к которой нужен быстрый доступ, такой как переменные.
Память программы начального запускавсегда выполняется на ПЗУ. Именно с этой области процессор начинает работу после включения питания и после сброса его с помощью сигнала RESET. При наличии у микроконтроллера нескольких типов ПЗУ, зачастую существует выбор с какой из них стартовать программу. Для этого наружу выводится несколько ножек, комбинация сигналов на которых идентифицирует ту или иную ПЗУ.
Рис 8.1
Адресация в NAND.
Для примера работы с ПЗУ рассмотрим организацию памяти и обращение к ней на примере микросхемы памяти NAND.
Структура памяти NANDпредставлена на рис 8.2.
Рис 8.2
Память в микросхеме делится на блоки, которые в свою очередь делятся на страницы, состоящие из байт. Т.о. для полной адресации байта памяти требуется знать номер блока, номер страницы и сам адрес байта в этой странице.
Общая ёмкость памяти в этом случае равна произведению ёмкости страницы на количество страниц в блоке и на количество блоков в микросхеме памяти. Если у нас, как показано на рис 8.2, микросхема состоит из 2000 блоков, содержащих 128 страниц каждый. В странице содержится 8192 байта памяти. В итоге получаем: 8192*128*2000 = 2 Гбайта памяти. Обычно размер памяти указывают в битах. Т.е. размер рассматриваемой микросхемы составляет 16Гбит, что и будет указано у неё в документации.
Соответственно, для получения одного байта информации на выводе R/W, отвечающем за чтение запись, устанавливается сигнал, говорящий, что будет чтение. Отправляется команда запроса на чтение байта данных. Затем формируется пакет вида, как показано на рис 8.3.
Рис 8.3
В этом пакете А13-А0 – это адрес байта в странице, А20-А14 – это номер страницы, А32-А21 – это номер блока.
В ответ на этот запрос микросхема должна выдать запрошенный байт. При этом, если требуется считать несколько байт подряд, то достаточно просто продолжать считывать данные, не обновляя адрес. Микросхема автоматически увеличивает адрес на единицу при каждом чтении. Т.е. при использовании данной микросхемы выгодно читать данные сразу страницами (в нашем примере по 8192 байта).
Дата добавления: 2017-01-16; просмотров: 1628;