Энергонезависимая память применяемая для хранения данных которые. Энергонезависимая память. История технологии $CMOS$

Классификация оперативной памяти

Типы реальной памяти и их основные характеристики

Одним из важнейших устройств компьютера является память, или запоминающее устройство (ЗУ). По определœению, данном в книге "Информатика в понятиях и терминах", ЗУ - "функциональная часть цифровой вычислительной машины, предназначенной для записи, хранения и выдачи информации, представленных в цифровом виде." При этом под это определœение попадает как собственно память, так и внешние запоминающие устройства (типа накопителœей на жестких и гибких дисках, магнитной ленты, CD-ROM), которые лучше отнести к устройствам ввода/вывода информации. Таким образом под компьютерной памятью в дальнейшем будет пониматься только "внутренняя память компьютера: ОЗУ, ПЗУ, кэш память и флэш-память". Итак, рассмотрим классификацию внутренней памяти компьютера.

Оперативное запоминающее устройство является, пожалуй, одним из самых первых устройств вычислительной машины. Она присутствовала уже в первом поколении ЭВМ по архитектуре, созданных в в начале сороковых -пятидесятых годов двадцатого века. За эти пятьдесят лет сменилось не одно поколение элементной базы, на которых была построена память. По этой причине приведем классификацию ОЗУ по элементной базе и конструктивным особенностям. С некоторой натяжкой к ОЗУ можно отнести и ПЗУ, в случае если рассматривать его как быстрое ЗУ только для чтения.

Схема данной классификации приведена на рисунке.

Рис. Классификация ОЗУ.

Как видно из схемы исходя из сохранности данных при отключении питания ОЗУ делится на энергозависимое и энергонезависимое.

К энергонезависимым ЗУ, в первую очередь, относится класс всœевозможных ферритовых ЗУ. Далее, условно энергонезависимыми можно назвать ППЗУ стираемые УФ и электрически стираемые (перепрограммируемые – флэш-память). Условность состоит в достаточно долгом (десятки тысяч часов) но не бесконечном сроке хранения записанной информации в данных ЗУ. Следующий класс энергонезависимых ЗУ составляют однократно программируемые ПЗУ. Данные ПЗУ могут поставляться чистыми (вся память записана нулями или единицами) с последующим электрическим однократным программированием, либо программироваться в процессе изготовления (заказные ПЗУ).

Энергозависимая память - ϶ᴛᴏ всœевозможные виды ОЗУ для быстрого чтения/записи. При отключении питания такая память полностью теряет информацию, но обладает высоким быстродействием. Данный класс реальных ЗУ делится на динамические (с крайне важно стью регенерации информации) и статические (не требующие регенерации информации). Теперь рассмотрим более подробно каждый класс ЗУ.

ЭВМ первого поколения по элементной базе были крайне ненадежными. Так, среднее время работы до отказа для ЭВМ “ENIAC” составляла 30 минут. Скорость счета при этом была не сравнима со скоростью счета современных компьютеров. По этой причине требования к сохранению данных в памяти компьютера при отказе ЭВМ были строже, чем требования к быстродействию оперативной памяти. Вследствие этого в этих ЭВМ использовалась энергонезависимая память.

Энергонезависимая память позволяла хранить введенные в нее данные продолжительное время (до одного месяца) при отключении питания. Чаще всœего в качестве энергонезависимой памяти использовались ферритовые сердечники. Οʜᴎ представляют из себятор, изготовленных из специальных материалов - ферритов. Ферриты характеризуются тем, что петля гистерезиса зависимости их намагниченности от внешнего магнитного поля носит практически прямоугольный характер.

Рис. B.1. Диаграмма намагниченности ферритов.

Вследствие этого намагниченность этого сердечника меняется скачками (положение двоичного 0 или 1, смотри рисунок B.1.) По этой причине, собрав схему, показанную на рисунке B.2, практически собран простейший элемент памяти емкостью в 1 бит. Память на ферритовых сердечниках работала медленно и неэффективно: ведь на перемагничивание сердечника требовалось время и затрачивалось много электрической энергии. По этой причине с улучшением надежности элементной базы ЭВМ энергонезависимая память стала вытесняться энергозависимой - более быстрой, экономной и дешевой. Тем не менее, ученые разных стран по-прежнему ведут работы по поиску быстрой энергозависимой памяти, которая могла бы работать в ЭВМ для критически важных приложений, прежде всœего военных.

Рис. B.2. Схема элемента памяти на ферритовых сердечниках.

Энергонезависимая память - временная оперативная память (RAM) на компьютере.Этот тип памяти хранит программы и файлы ,с которыми пользователь уже работает,но это не мешает её содержимому,когда пользователь выключает компьютер.Оперативная память значительно быстрее,чем постоянные запоминающие устройства компьютера,так что она хорошо работает для своих целей.

Временный характер энергонезависимой памяти,является недостатком,однако,того,что пользователь потеряет все несохранённые данные,если его или её компьютер теряет неожиданно питание или, если компьютер перезагрузился.Все компьютеры и другие устройства используют энергонезависимую память,потому что она полезна для быстрого хранения и доступа к операционной системе,файлам и программам,и хранит информацию в памяти,пока компьютер включен. Когда пользователь открывает программу и начинает искать тип документа,программа и её данные запускаются в оперативной памяти компьютера до тех пор,пока пользователь хранит файл на жёстком диске или CD/DVD для постоянного хранения.Это описывает противоположную энергонезависимую память,которая называется энергонезависимой памятью. Энергонезависимая память включает в себя жесткие диски,флэш-память и используется только для чтения. Энергозависимая и энергонезависимая памяти работают вместе, чтобы сыграть решающую роль в хранении компьютерных данных.

Энергонезависимая память поставляется в различных форм-факторах и с различными скоростями,которая используются как для настольных,так и для портативных компьютеров. Большая память Memory Stick используются в настольных компьютерах,в то время как более компактный объем памяти резервируется для портативных компьютеров,а для некоторых моделях компьютерных систем- всё-в-одном.Double data rate (DDR) память относительно быстрая, поддерживается большинством новых материнских плат и выпускается в форм-факторе,который подходят для ноутбуков и настольных компьютеров.Некоторые системы используют двухканальные технологии,что заметно улучшает скорость и производительность работы компьютера.В этом типе конфигурации,набор состоит из двух планок одного и того же вида памяти DDR установленных как ОЗУ,поэтому эти планки могут эффективно работать вместе.

Есть некоторые минусы временной памяти,но её преимущества перевешивают отрицательные стороны.Серьезной проблемой является потеря данных,которая может произойти,если будет сбой питания, неожиданная перезагрузка системы или источник питания вышел из строя,но существуют источники бесперебойного питания, которые могут быть использованы для уменьшения этой угрозы. Другой способ предотвращения потери данных,когда Вы работаете с документами, сохранять документ как можно чаще,или использовать программу, которая автоматически сохраняет изменения на жесткий диск.

Классификация оперативной памяти

Типы реальной памяти и их основные характеристики

Одним из важнейших устройств компьютера является память, или запоминающее устройство (ЗУ). По определению, данном в книге "Информатика в понятиях и терминах", ЗУ - "функциональная часть цифровой вычислительной машины, предназначенной для записи, хранения и выдачи информации, представленных в цифровом виде." Однако под это определение попадает как собственно память, так и внешние запоминающие устройства (типа накопителей на жестких и гибких дисках, магнитной ленты, CD-ROM), которые лучше отнести к устройствам ввода/вывода информации. Таким образом под компьютерной памятью в дальнейшем будет пониматься только "внутренняя память компьютера: ОЗУ, ПЗУ, кэш память и флэш-память". Итак, рассмотрим классификацию внутренней памяти компьютера.

Оперативное запоминающее устройство является, пожалуй, одним из самых первых устройств вычислительной машины. Она присутствовала уже в первом поколении ЭВМ по архитектуре, созданных в в начале сороковых -пятидесятых годов двадцатого века. За эти пятьдесят лет сменилось не одно поколение элементной базы, на которых была построена память. Поэтому приведем классификацию ОЗУ по элементной базе и конструктивным особенностям. С некоторой натяжкой к ОЗУ можно отнести и ПЗУ, если рассматривать его как быстрое ЗУ только для чтения.

Схема данной классификации приведена на рисунке.

Рис. Классификация ОЗУ.

Как видно из схемы в зависимости от сохранности данных при отключении питания ОЗУ делится на энергозависимое и энергонезависимое.

К энергонезависимым ЗУ, в первую очередь, относится класс всевозможных ферритовых ЗУ. Далее, условно энергонезависимыми можно назвать ППЗУ стираемые УФ и электрически стираемые (перепрограммируемые – флэш-память). Условность заключается в достаточно долгом (десятки тысяч часов) но не бесконечном сроке хранения записанной информации в данных ЗУ. Следующий класс энергонезависимых ЗУ составляют однократно программируемые ПЗУ. Данные ПЗУ могут поставляться чистыми (вся память записана нулями или единицами) с последующим электрическим однократным программированием, либо программироваться в процессе изготовления (заказные ПЗУ).

Энергозависимая память – это всевозможные виды ОЗУ для быстрого чтения/записи. При отключении питания такая память полностью теряет информацию, но обладает высоким быстродействием. Данный класс реальных ЗУ делится на динамические (с необходимостью регенерации информации) и статические (не требующие регенерации информации). Теперь рассмотрим более подробно каждый класс ЗУ.


ЭВМ первого поколения по элементной базе были крайне ненадежными. Так, среднее время работы до отказа для ЭВМ “ENIAC” составляла 30 минут. Скорость счета при этом была не сравнима со скоростью счета современных компьютеров. Поэтому требования к сохранению данных в памяти компьютера при отказе ЭВМ были строже, чем требования к быстродействию оперативной памяти. Вследствие этого в этих ЭВМ использовалась энергонезависимая память.

Энергонезависимая память позволяла хранить введенные в нее данные продолжительное время (до одного месяца) при отключении питания. Чаще всего в качестве энергонезависимой памяти использовались ферритовые сердечники. Они представляют собой тор, изготовленных из специальных материалов - ферритов. Ферриты характеризуются тем, что петля гистерезиса зависимости их намагниченности от внешнего магнитного поля носит практически прямоугольный характер.

Рис. B.1. Диаграмма намагниченности ферритов.

Вследствие этого намагниченность этого сердечника меняется скачками (положение двоичного 0 или 1, смотри рисунок B.1.) Поэтому, собрав схему, показанную на рисунке B.2, практически собран простейший элемент памяти емкостью в 1 бит. Память на ферритовых сердечниках работала медленно и неэффективно: ведь на перемагничивание сердечника требовалось время и затрачивалось много электрической энергии. Поэтому с улучшением надежности элементной базы ЭВМ энергонезависимая память стала вытесняться энергозависимой - более быстрой, экономной и дешевой. Тем не менее, ученые разных стран по-прежнему ведут работы по поиску быстрой энергозависимой памяти, которая могла бы работать в ЭВМ для критически важных приложений, прежде всего военных.

Рис. B.2. Схема элемента памяти на ферритовых сердечниках.

О компонентах памяти написано достаточно много (и даже более). Но прогресс не стоит на месте, в том числе и память. Поэтому, учитывая современные тенденции развития информационных технологий, рассмотрим память для мобильных систем, одними из важнейших параметров которой являются надежность и быстродействие.

Надежность любой микросхемы памяти - способность сохранять данные, причем не только в рабочем режиме, но и в критических ситуациях (броски питания, шумы и т.п.). Существенную роль в этом играет также технология производства (об этом чуть ниже). Очевидно, что максимальную надежность может дать только энергонезависимая память. Выбрав из энергонезависимой памяти самую быструю, получим то, что необходимо. Но это решение "в лоб" не всегда дает необходимый результат. К этому следует добавить стоимость, организацию записи и чтения и т.д.

Сейчас выбор ИС энергонезависимой памяти достаточно широк: nvSRAM со встроенной батареей (Dallas Semiconductor), flash (Intel, AMD), EEPROM (Atmel, ST), FRAM (Ramtron), nvSRAM (Simtek). Каждый тип памяти имеет свои достоинства, но и свои недостатки. Например, в некоторых электронных изделиях нельзя применять память со встроенным источником питания, поблочная запись данных во flash ограничивает быстродействие (и, соответственно, степень надежности сохранности данных). Технология плавающего затвора, на основе которой изготавливаются flash и EEPROM, также налагает ограничения на надежность. Использование FRAM ограничено скоростью записи и ценой. Для наглядности можно обратиться к таблице 1, где приведены все виды памяти.

Таблица 1. Сравнительные характеристики памяти

ROM PROM EPROM Flash EEPROM DRAM SRAM FRAM nvSRAM
Энергонезависимость + + + + + + +
Неограниченный срок службы + + +
Произвольный доступ + + + +
Необходимость регенерации +
Запись менее 35 нс + + +
Чтение мениее 35 нс + + +
Возможность перепрограммирования в системе + + + + + +
Побайтное программирование + + + + +

В энергонезависимой памяти nvSRAM (Simtek) (в дальнейшем - просто nvSRAM) устранены все (или почти все) проблемы, свойственные другим типам памяти, в том числе и на технологическом уровне. Главное достоинство nvSRAM - высочайшая надежность (рекламное сравнение с надежностью стального капкана вполне оправдано), которая достигнута, с одной стороны, за счет схемотехнического решения, и, с другой стороны, - применением технологии QuantumTrap™ ("квантовый капкан").

Технология Quantum Trap™ используется при формировании элементов EEPROM вместо технологии плавающего затвора и является важным фактором, определяющим высокую надежность nvSRAM.

Технология плавающего затвора - основа производства flash-памяти и традиционных EEPROM. Общим для всех вариантов этой технологии является перенос заряда через оксидный слой на проводящий плавающий затвор, где и происходит его запоминание. Относительно большие локальные токи или электрические поля, используемые при стирании/программировании, приводят к деградации оксидного слоя. Это приводит, в зависимости от варианта технологии, или к "залипанию" битов в состоянии "1" или - утечке электронов с плавающего затвора на подложку через деградировавший слой оксида.

Эти проблемы устранены в технологии QuantumTrap™, где для хранения заряда применяются значительно меньшие токи и электрические поля. Такое стало возможно благодаря очень тонкому слою окисла для накачки заряда и изолирующему слою для хранения заряда. Как следствие, в приборах на базе технологии QuantumTrap™ нет утечки электронов на подложку. Пробой слоя оксида в таком приборе приведет только к небольшой локальной утечке.

Что такое nvSRAM?

Это высокоскоростная энергонезависимая память с произвольным доступом (по ГОСТУ - запоминающее устройство с произвольной выборкой ЗУПВ), созданная на основе стандартной SRAM, в которую интегрированы элементы EEPROM, выполненные по технологии QuantumTrap™. Реально nvSRAM работает как две независимые памяти - SRAM и EEPROM. Статическая память идентична обычному ЗУПВ,

А параллельный доступ к EEPROM возможен только через SRAM (структурная блок-схема - на рис. 1).

Рис. 1. Блок-схема NV SRAM STK14C88-3

Таблица 2. Семейство энергонезависимой памяти STK

Организация памяти Вид сохранения данных Число выводов Корпус Обозначение
512x8 Аппаратное 28 W STK20C04
2 Kx8 Аппаратное 28 N,P,S STK10C48
2 Kx8 Программное 28 N,P,S STK11C48
2 Kx8 AutoStore 28 N,P,S,W STK22C48
2 Kx8 AutoStore 28 W STK25C48
8 Kx8 Аппаратное 28 C,L,P,S STK10C68
8 Kx8 Программное 28 C,L,P,S STK11C68
8 Kx8 AutoStore 28 C,L,P,S,W STK12C68
8 Kx8 AutoStore 28 P,S,W STK15C68
8 Kx8 AutoStorePlus 28 W STK16C68
32 Kx8 Программное 28 N,P,S,W STK11C88
32 Kx8 AutoStore 32 C,L,N,W STK14C88
32 Kx8 AutoStore 28 N,P,S,W STK15C88
32 Kx8 AutoStore 28 W STK16C88
128 Kx8 AutoStore 32 D STK25CA8
C=керамический DIP (300 мил); P=пластиковый DIP (300 мил); D=SOIC (350 мил); S=SOIC (350 мил); L=LLC; N=SOIC (300 мил); W=пластиковый DIP (600 мил).

При включении питания автоматически запускается режим восстановления данных RECALL, при котором все данные передаются из EEPROM в статическую память при достижении напряжения питания определенного уровня. Запись и чтение SRAM никак не затрагивают содержимое EEPROM (отличное ПЗУ с перезаписью!). Восстановление данных из EEPROM в SRAM можно инициировать и по команде. Максимальное время параллельной передачи всех данных из EEPROM в статическую память не превышает 20 мкс.

При сохранении данных (режим STORE) данные передаются из SRAM в EEPROM. Режим STORE может быть реализован (в зависимости от вида ИС, см. таблицу 2) автоматически (при пропадании питания), программным путем или аппаратным способом. Чтобы сохранить все данные (из SRAM в EEPROM) требуется всего 10 мс.

В некоторых приборах реализована функция AutoStore™, при которой сохранение данных происходит в фоновом режиме при падении напряжения питания. В ИС семейств STK15Схх и STK25Схх для выполнения режима AutoStore™ используется системный конденсатор. В тех случаях, когда скорость падения напряжения питания велика или неопределенна, в семействах STK12Схх, STK14Схх и STK22Схх необходим внешний конденсатор небольшой емкости для гарантированного сохранения данных. В серии STK16Схх AutoStorePlus во внешнем конденсаторе нет необходимости - он уже встроен в ИС.

Программное сохранение данных (STORE) и восстановление данных (RECALL) реализуется чтением последовательности из шести определенных адресов, тактируемых сигналом с вывода доступа кристалла. Эти функции могут быть использованы для хранения определенного кода и данных или программного перезапуска системы после записи в SRAM. Режимы программных STORE и RECALL имеются в STK11Схх и в большинстве приборов с функцией AutoStore.

Аппаратное сохранение данных реализовано в семействах STK10Схх, STK12Схх, STK14Схх.

Архитектура nvSRAM

Как уже отмечалось выше, она идентична асинхронной статической памяти с произвольной выборкой (рис. 1). При обычном режиме работы нет никаких различий между статической памятью и nvSRAM. Различие появляется при передаче данных из матрицы SRAM в матрицу EEPROM (режим STORE) и обратно (RECALL). Реально, две матрицы физически объединены в одну.

При подаче питания аналоговая схема управления питанием Power Control отслеживает уровень питания и запускает автоматический самосинхронизирующийся режим восстановления данных RECALL. Данные, таким образом, сразу доступны пользователю. Программное восстановление данных реализуется схемой Software Detect на основе ПЛМ, которая постоянно проверяет адреса, тактируемые сигналом на выводе Е. Когда определяется заданная последовательность адресов, то статическая память изолируется от системы, данные в ней стираются и записываются данные из EEPROM. Массив данных объемом 256К переносится из EEPROM в SRAM за 20 мкс (пропускная способность – 13 Гбит/с).

Режим STORE запускается схемой управления питанием Power Control при сбое питания (параллельная передача данных со скоростью 26 Мбит/с) или схемой Software Detect при определенной последовательности адресов.

Восстановление дефектных битов с помощью встроенной схемы резервирования позволяет увеличить выход годных кристаллов.

Основное отличие энергонезависимой памяти Simtek от других энергонезависимых элементов памяти заключается в том, что высоковольтная часть схемы ограничена только блоком управления STORE/RECALL Control c одним ключом. Этот единственный высоковольтный узел – шина из поликремния второго уровня, которая подключается к транзисторам, обеспечивающим энергонезависимый режим. Никакие другие транзисторы матрицы памяти к высокому напряжению не подключены, что никак не отражается на работе стандартных элементов nvSRAM. Результатом такой архитектуры является дополнительная надежность всей памяти в целом, а ограниченное число высоковольтных элементов привлекательно с точки зрения экономии места на кристалле. Существующую схему памяти не потребуется перерабатывать при внедрении технологии Simtek.

В качестве примера рассмотрим микросхему STK14C88. Память STK14C88-3 – быстрое статическое ОЗУ 32Кх8 с энергонезависимым элементом в каждой ячейке памяти (блок-схема приведена на рис. 1). Количество циклов чтения/записи неограниченно, при этом данные в энергонезависимых элементах сохраняются достаточно долго (100 лет).

STK14C88-3 работает в двух различных режимах: режиме памяти и энергонезависимом режиме. В режиме памяти микросхема функционирует как обычное быстродействующее статическое ОЗУ. В энергонезависимом режиме данные передаются из памяти в энергонезависимые элементы (режим хранения STORE) или из энергонезависимых элементов в память (режим восстановления RECALL). При этом все функции памяти заблокированы.

Устранение помех. Поскольку STK14C88-3 является быстродействующей памятью, то для надежной работы необходим ВЧ-конденсатор порядка 0,1 мкФ между V cap и V ss , причем выводы конденсатора и дорожки печати должны быть максимально короткими. Требования к разводке питания, «земли», и сигналов те же, что и для всех быстрых КМОП ИС.

Чтение памяти. Цикл чтения READ для STK выполняется, когда на E и G низкий уровень, а на W и HSB – высокий. Доступ к конкретному байту данных из 32768 определяется адресом на выводах А0-14. Если чтение инициализируется адресным переходом (цикл чтения READ#1, рис. 2), то действительное значение появится на выходе через t AVQV . При инициализации чтения E или G (цикл чтения READ#2, рис. 3), данные появятся на выходе с задержкой t ELQV или t GLQV (с большей задержкой из двух). Состояние на выходе будет сохраняться до тех пор, пока не произойдет изменение адреса или на выводах E или G не установится высокий уровень или на W или HSB – низкий.


Рис. 2. Временная диаграмма записи данных READ#2


Рис. 3. Временная диаграмма записи данных READ#2

Запись в память. Если на E и W низкий уровень, а на HSB – высокий, то при этих условиях выполняется запись данных в память (WRITE). Адрес должен быть установлен до начала и оставаться неизменным до конца цикла записи или пока на E или W не установиться высокий уровень. Данные на выводах входа/выхода DQ0-7 будут записаны в память при условии, что они остаются неизменными на этих выводах t DVWH (если запись управляется W, рис.4) или tDVEH (для управления по E, рис.5).


Рис. 4. Временная диаграмма записи данных (управление по W)


Рис. 5. Временная диаграмма записи данных (управление по Е)

Чтобы на шине данных не возникало эффекта «состязания», рекомендуется удерживать на выводе G высокий уровень во время записи. Если на G будет низкий уровень, то встроенная схема отключит выходные буферы через tWLQZ после перехода W в низкий уровень (со всеми вытекающими отсюда последствиями).


Рис. 6. Временная диаграмма программной записи/восстановления данных в энергонезависимую память

Программная запись в энергонезависимую память STORE

Кроме автоматической записи данных в энергонезависимую память при сбое питания, в STK14C88-3 предусмотрена возможность программной записи данных (STORE) (в любой момент времени) при помощи шести циклов чтения из специальных адресных ячеек (временная диаграмма на рис.6). Во время этой записи в первую очередь стираются данные предыдущей записи, а затем выполняется программа копирования данных из ОЗУ в энергонезависимую память. При инициализации программной записи операции ввода/вывода запрещаются до окончания цикла. Поскольку при инициализации STORE используется последовательность операций чтения специальных адресов, то важно, чтобы никакие другие операции чтения или записи не вклинились в этот процесс. В противном случае программная запись данных в энергонезависимую память не состоится. Последовательность команд чтения для запуска STORE приведена в таблице 3.

Как только считывается шестой адрес этой последовательности, внешний доступ к ИС блокируется и происходит сохранение данных. Важным моментом такого сохранения данных является использование только операций чтения (какая-либо запись при этом отсутствует, требуется лишь удержание низкого уровня на G). Программный цикл записи завершается через tSTORE, после чего оперативная память снова готова к записи и чтению.

Программное восстановление данных из энергонезависимой памяти RECALL аналогично программной записи: для инициализации выполняется чтение определенных адресов (таблица 4).

Таблица 3. Инициализация программной записи данных

Считываемый адрес Действие
1 0E38 (hex) Чтение адреса
2 31C7 (hex) Чтение адреса
3 03E0 (hex) Чтение адреса
4 3C1F (hex) Чтение адреса
5 303F (hex) Чтение адреса
6 0FC0 (hex) Запуск STORE

Таблица 4. Инициализация программного восстановления данных

Считываемый адрес Действие
1 0E38 (hex) Чтение адреса
2 31C7 (hex) Чтение адреса
3 03E0 (hex) Чтение адреса
4 3C1F (hex) Чтение адреса
5 303F (hex) Чтение адреса
6 0C63 (hex) Запуск RECALL

Операция RECALL выполняется за два шага. Сначала очищается ОЗУ, а затем происходит перенос информации из энергонезависимой памяти в ячейки оперативной памяти за время t RECALL , после чего можно снова читать и писать. Учитывая, что при восстановлении данные в энергонезависимой памяти не изменяются, то их можно восстанавливать неограниченное число раз (как вариант ПЗУ со 100-летним сроком хранения).

Режим автосохранения данных AutoStore

В режиме нормального автосохранения данных происходит заряд конденсатора, подсоединенного к выводу VCAP, который используется для выполнения однократной записи данных в энергонезависимую память. Если напряжение на V CAP станет ниже V SWITCH , то схема управления автоматически отключит вывод V CAP от питания V CCX и запустит режим сохранения данных (рис.7). На рис. 8 показана схема подключения конденсаторов для автоматического сохранения данных, емкость накопительного конденсатора должна быть в пределах 68-220 мкФ.


Рис. 7. Временная диаграмма режима автосохрания данных Autostore


Рис. 8. Схема подключения накопительного конденсатора в режиме автосохрания данных Autostore

Чтобы избежать нежелательных записей в энергонезависимую память, вывод HSB устанавливается в низкий уровень (подключается к V CAP через внешний резистор), при этом будет игнорироваться команда записи WRITE. Это, кстати, является для системы сигналом, что работает AutoStore. Наличие или отсутствие команды записи на программное сохранение данных никак не влияет.

В случае, если напряжение питания падает быстрее, чем 20 В/мкс, то между выводом V CCX и источником питания необходимо установить резистор 1 Ом для устранения броска тока между V CCX и V CAP .

Аппаратная запись в энергонезависимую память

Для аппаратной записи данных в энергонезависимую память используется вывод HSB (рис.9). Помимо этого, этот вывод работает как индикатор активного режима сохранения данных (независимо от вида этого режима).

Если при включении нескольких STK14C88-3 применяется один конденсатор большой емкости, то вывод HSB используется для их синхронизации.


Рис. 9. Временная диаграмма аппаратной записи в эенргонезависимую память

Память NvSRAM «едина в трех лицах»: заменяет память со встроенным питанием, flash и EEPROM.

Использование nvSRAM вместо памяти со встроенным питанием позволяет:

  • избавиться от контактных сбоев; потери данных при коротком замыкании или электрических помехах;
  • головной боли, связанной с установкой (не нужны специальные контакты) ИС и контролем питания;
  • быстрее читать/записывать данные;
  • устанавливать микросхему прямо на плату;
  • иметь память, не только совместимую по выводам со стандартной batRAM, но и в корпусе miniDIP и SMD.

При замене Flash-памяти:

    легкое и быстрое сохранение данных; побайтная запись и чтение; отсутствие проблем плавающего затвора; однополярное питание; все программы и данные сохраняются за один цикл STORE пльзователем или автоматически при сбое питания; память пограмм, память данных и статическое ЗУПВ в одном корпусе.

В сравнении с EEPROM:

  • не имеет ограничений на число циклов записи;
  • обладает симметричным циклом чтение/запись 20 нс;
  • может сохранить всю матрицу данных при сбое питания с использованием нулевого системного времени;
  • нет проблем плавающего затвора;
  • 100% контроль при сохранении данных (недоступно при технологии плавающего затвора).

7.3. Энергонезависимая память

Обобщенное понятие энергонезависимой памяти (NV Storage) означает любое устройство, хранящее записанные данные даже при отсутствии питающего напряжения (в отличие от статической и динамической полупроводниковой памяти). В данном разделе рассматриваются только электронные устройства энергонезависимой памяти, хотя к энергонезависимой памяти относятся и устройства с подвижным магнитным или оптическим носителем. Существует множество типов энергонезависимой памяти: ROM, PROM, EPROM, EEPROM, Flash Memory, FRAM, различающихся по своим потребительским свойствам, обусловленным способом построения запоминающих ячеек, и сферам применения. Запись информации в энергонезависимую память, называемая программированием , обычно существенно сложнее и требует больших затрат времени и энергии, чем считывание. Программирование ячейки (или блока) - это целая процедура, в которую может входить подача специальных команд записи и верификации. Основным режимом работы такой памяти является считывание данных, а некоторые типы после программирования допускают только считывание, что и обусловливает их общее название ROM (Read Only Memory - память только для чтения) или ПЗУ (постоянное запоминающее устройство).

Запоминающие ячейки энергонезависимой памяти по своей природе обычно асимметричны и, как правило, позволяют записывать только нули в нужные биты предварительно стертых (чистых) ячеек, содержащие единицы. Для некоторых типов памяти чистым считается нулевое состояние ячеек. Однократно программируемые микросхемы позволяют изменять только исходное (после изготовления) состояние ячеек. Для стирания (если оно возможно) требуются значительные затраты энергии (мощности и времени), и процедура стирания обычно существенно дольше записи. Стирание ячеек выполняется либо для всей микросхемы, либо для определенного блока, либо для одной ячейки (байта). Стирание приводит все биты стираемой области в одно состояние (обычно во все единицы, реже - во все нули).

Процедура программирования многих старых типов памяти требует относительно высокого напряжения программирования (12–26 В), а для однократно программируемых (прожигаемых) микросхем и специального (не ТТЛ) интерфейса управления. После программирования требуется верификация - сравнение записанной информации с оригиналом, причем некачественное управление программированием (или брак микросхемы) может приводить к «зарастанию» записанной ячейки, что потребует повторного (возможно, и неудачного) ее программирования. Возможен и обратный вариант, когда «пробиваются» соседние ячейки, что требует повторного стирания (тоже, возможно, неудачного). Стирание и программирование микросхем может выполняться либо в специальном устройстве - программаторе, либо в самом целевом устройстве, если у него предусмотрены соответствующие средства. Микросхемы различают по способу программирования.

Микросхемы, программируемые при изготовлении, - масочные ПЗУ, содержимое которых определяется рисунком технологического шаблона. Такие микросхемы используют лишь при выпуске большой партии устройств с одной и той же прошивкой.

Микросхемы, программируемые однократно после изготовления перед установкой в целевое устройство, - ППЗУ (программируемые ПЗУ) или PROM (Programmable ROM). Программирование осуществляется прожиганием определенных хранящих элементов на специальных устройствах-программаторах.

Микросхемы, стираемые и программируемые многократно, - РПЗУ (репрограммируемые ПЗУ) или EPROM (Erasable PROM - стираемые ПЗУ). Для стирания и программирования требуется специальное оборудование. Микросхемы программируются в программаторе. Иногда возможно программирование микросхем прямо в целевом устройстве, подключая внешний программатор, - так называемый метод OBP (On-Board Programming). Наиболее распространены микросхемы УФРПЗУ, стираемые ультрафиолетовым облучением, - их обычно называют просто EPROM или UV-EPROM (Ultra-Violet EPROM). В этом классе имеются и электрически стираемые ПЗУ (ЭСПЗУ) или EEPROM (Electrical Erasable PROM).

Микросхемы, перепрограммируемые многократно в целевом устройстве, используя программу его процессора, - так называемый метод ISP или ISW (In-System Programming или In-System Write). К этому классу относятся чисто электрически перепрограммируемые микросхемы NVRAM и FRAM, но наибольшее распространение получила флэш-память и современные модели EEPROM.

NVRAM (Non-Volatile Random Access Memory) - энергонезависимая память с произвольным доступом. Это название подразумевает возможность произвольной смены информации не только во всей ее области или блоке, но и в отдельной ячейке, причем не процедурой, а обычным шинным циклом. К этому классу относятся микросхемы FRAM и, с некоторой натяжкой, EEPROM. У последних время выполнения внутренней операции записи обычно довольно большое, и после интерфейсной операции записи ячейки память недоступна ни для каких операций в течение нескольких мс (а то и десятков мс). Флэш-память к этому классу относить нельзя, поскольку изменение информации, недаром называемое программированием, в этой памяти осуществляется специальной программной процедурой.

Ферроэлектрическая память FRAM (Ferroelectric RAM) - энергонезависимая память с истинно произвольным доступом, запись и чтение ее осуществляются как в обычных микросхемах статической памяти. При ее изготовлении используется железо - ее можно считать эхом старинной памяти больших машин на магнитных сердечниках. Ячейки FRAM по структуре напоминают DRAM, но информация хранится не в виде заряда конденсатора (который нужно поддерживать регенерацией), а виде направления поляризации кристаллов. Запись производится непосредственно, предварительного стирания не требуется. Как и флэш-память, она используется в самых портативных системах класса PDA (personal digital assistants - персональный цифровой ассистент). Над этими устройствами активно работает фирма Hitachi совместно с фирмой Ramtron (www.ramtron.com) и фирма Matsushita совместно с фирмой Symetrix. В настоящее время выпускаются микросхемы емкостью 4-256 Кбит (технология 0,35 мкм) с параллельным интерфейсом (как SRAM) и временем доступа 70-120 нс, а также с последовательным интерфейсом I?C. Кроме массивов памяти FRAM используется и в специальных энергонезависимых регистрах - есть, например, микросхемы FM573 и FM574, которые при включенном питании ведут себя аналогично стандартным 8-битным регистрам "573 и "574, но при выключении питания помнят свое состояние. Микросхемы FRAM имеют интерфейс КМОП, питание 5 В, но имеются изделия и на 2,7 В. В отличие от флэш-памяти, у которой число циклов перезаписи принципиально ограничено (хотя и очень велико), ячейки FRAM практически не деградируют в процессе записи - гарантируется до 10 10 циклов перезаписи. Провозглашается замена на FRAM даже динамической памяти, однако в PC память FRAM автору пока встречать не доводилось.

7.3.1. Постоянная и полупостоянная память - ROM, PROM, EPROM

Масочные постоянные запоминающие устройства - ПЗУ или ROM - имеют самое высокое быстродействие (время доступа 30–70 нс). Эти микросхемы в PC широкого применения не получили ввиду сложности модификации содержимого (только путем изготовления новых микросхем); они иногда применялись в качестве знакогенераторов в некоторых моделях графических адаптеров CGA, MDA, HGC.

Однократно программируемые постоянные запоминающие устройства - ППЗУ или PROM - имеют аналогичные параметры и благодаря возможности программирования изготовителем оборудования (а не микросхем) находят более широкое применение для хранения кодов BIOS и в графических адаптерах. Программирование этих микросхем осуществляется только с помощью специальных программаторов, в целевых устройствах они устанавливаются в «кроватки» или запаиваются. Как и масочные, эти микросхемы практически нечувствительны к электромагнитным полям (в том числе и к рентгеновскому облучению), и несанкционированное изменение их содержимого в устройстве исключено (конечно, не считая отказа).

Репрограммируемые постоянные запоминающие устройства - РПЗУ или EPROM - до недавних пор были самыми распространенными носителями BIOS как на системных платах, так и в адаптерах, а также использовались в качестве знакогенераторов. Наиболее популярные микросхемы имеют восьмибитную организацию и обозначение вида 27xx-tt или 27Cxx-tt для микросхем CMOS. Здесь xx определяет емкость в килобитах: 2708 - 1 К?8 - родоначальник семейства, 2716/32/64/128/256/512 имеют емкость 2/4/8/16/32/64 Кбайт соответственно, 27010 и 27020 - 128 и 256 Кбайт. Время доступа tt лежит в диапазоне 50–250 нс. Шестнадцатибитные микросхемы (например, 27001 или 27002 емкостью 64 К или 128 К 16-битных слов) в PC применяются редко.

Микросхемы EPROM тоже программируются на программаторах, но относительно простой интерфейс записи позволяет их программировать и в устройстве (но не в штатном его режиме работы, а при подключении внешнего программатора). Стирание микросхем осуществляется ультрафиолетовым облучением в течение нескольких минут. Специально для стирания микросхемы имеют стеклянные окошки. После программирования эти окошки заклеивают, предотвращая стирание под действием солнечного или люминесцентного облучения. Время стирания зависит от расстояния до источника облучения, его мощности и объема микросхемы (более емкие микросхемы стираются быстрее). Вместо штатных стирающих устройств можно пользоваться и обычной медицинской ультрафиолетовой лампой с расстояния порядка 10 см. Для микросхем 2764 ориентировочное время стирания составляет 5 минут. Стирание переводит все биты в единичное состояние. «Недостертые» микросхемы при программировании могут давать ошибки, передержка при стирании снижает количество возможных циклов перепрограммирования (в пределе - до нуля).

Некоторые микросхемы, похожие по виду и обозначению на стираемые ультрафиолетом, не имеют окна (они упакованы в дешевый пластмассовый корпус). Эти микросхемы либо стираются рентгеновским облучением (что не совсем удобно), либо допускают лишь однократно программирование, которое может выполняться и по заказу фирмой-производителем микросхем. Их интерфейс полностью совпадает с интерфейсом обычных микросхем EPROM 27хх.

С программированием ПЗУ приходится сталкиваться при русификации графических адаптеров (CGA, MDA, HGC) и принтеров с незагружаемыми знакогенераторами, а также при замене (или восстановлении) системной микросхемы BIOS или микросхемы Boot ROM - микросхемы удаленной загрузки для адаптера локальной сети. Распространенные программаторы EPROM имеют интерфейс подключения к СОМ- или LPT-порту PC или подключаются через собственную карту расширения (обычно с шиной ISA). Время программирования зависит от типа и объема микросхемы и применяемого алгоритма программирования. Классический алгоритм с 50-миллисекундными импульсами записи каждой ячейки для современных микросхем практически не используется. Более быстрые «интеллигентные» алгоритмы позволяют записывать 8 килобайт (2764) менее чем за минуту. Вся процедура программирования может затягиваться при использовании медленного интерфейса связи программатора с PC (например, СОМ-порт на скорости 2400 бод) за счет длительной процедуры копирования данных в буфер программатора.

Интерфейс микросхем постоянной памяти в режиме чтения совпадает с интерфейсом статической памяти. Для программирования (записи) требуется приложение ко входу V PP напряжения программирования, которое для различных типов EPROM лежит в диапазоне 12–26 В (обычно указывается на корпусе микросхемы). Комбинации управляющих сигналов, формирующие импульсы записи для EPROM разной емкости, различны. При напряжении на входе V PP 5 В и ниже модификация памяти (запись) невозможна ни при каких комбинациях управляющих сигналов, и микросхемы работают строго в режиме ROM. Этот режим и используется для микросхем BIOS, так что никакой вирус им не страшен.

В PC чаще всего применяют микросхемы EPROM в корпусах DIP и PLCC (табл. 7.21), расположение выводов популярных микросхем приведено на рис. 7.18 и 7.19.

Рис. 7.18 . Расположение выводов микросхем EPROM в корпусах DIP: a - DIP-24, б - DIP-28, в - DIP-32

Рис. 7.19 . Расположение выводов микросхем EPROM в корпусах TSOP и PLCC: а - TSOP-32, б - PLCC-32

Таблица 7.21 . Популярные микросхемы EPROM

Микросхема и организация Корпус Рисунок Примечание
2716 - 2 К?8 DIP-24 7.18, а 20 = ОЕ#; 21 = V pp
2732 - 4 К?8 DIP-24 7.18, а 20 = OE#/V pp , 21=A11
2764 - 8 К?8 DIP-28 7.18, б 1 = V pp , 22 = OE#; 26 = NC, 27 = PGM#
27128 - 16 К?8 DIP-28 7.18, б 1 = V pp , 22 = OE#; 26 = A13, 27 = PGM#
27256 - 32 К?8 DIP-28 7.18, б 1 = V pp , 22 = OE#; 26 = A13, 27 = A14
27512 - 64 К?8 DIP-28 7.18, б 1 = A15, 22 = OE#/V pp , 26 = A13, 27 = A14
27010 - 128 К?8 DIP-32 7.18, б 30 = NC
27010 - 128 К?8 TSOP-32 7.19, а 6 = NC
27010 - 128 К?8 PLCC-32 7.19, б 30 = NC
27020 - 256 К?8 DIP-32 7.18, в -
27020 - 256 К?8 TSOP-32 7.19, а -
27020 - 256 К?8 PLCC-32 7.19, б -

Назначение выводов микросхем EPROM приведено в табл. 7.22.

Таблица 7.22 . Назначение выводов микросхем EPROM

Сигнал Назначение
СЕ# Chip Enable - разрешение доступа. Низкий уровень разрешает обращение
к микросхеме, высокий уровень переводит микросхему в режим пониженного потребления
ОЕ# Output Enable - разрешение выходных буферов. Низкий уровень при низком уровне СЕ# разрешает чтение данных из микросхемы. У некоторых типов микросхем на этот же вывод в режиме программирования подается напряжение V PP
DQx Data Input/Output - двунаправленные линии шины данных. Время доступа при чтении отсчитывается от установки действительного адреса или сигнала СЕ# (в зависимости от того, что происходит позднее)
Ах Address - входные линии шины адреса. Линия А9 допускает подачу высокого (12В) напряжения для чтения кода производителя (А0 = 0) и устройства (А0 = 1), при этом на остальные адресные линии подается логический ноль
PGM# Programm - импульс программирования (некоторые микросхемы не имеют этого сигнала, их программирование осуществляется по сигналу СЕ# при высоком уровне V PP)
V PP Программирующее напряжение питания (для некоторых типов - импульс)
V CC Питание (+5 В)

Отметим основные свойства EPROM .

Стирание информации происходит сразу для всей микросхемы под воздействием облучения и занимает несколько минут. Стертые ячейки имеют единичные значения всех бит.

Запись может производиться в любую часть микросхемы побайтно, в пределах байта можно маскировать запись отдельных бит, устанавливая им единичные значения данных.

Защита от записи осуществляется подачей низкого (5 В) напряжения на вход V PP в рабочем режиме (только чтение).

Защита от стирания производится заклейкой окна.

7.3.2. EEPROM и флэш-память

Электрически стираемая (и перезаписываемая) память EEPROM, или E?PROM (Electrical Erasable PROM), отличается простотой выполнения записи. В простейшем (для пользователя) случае программирование сводится к записи байта по требуемому адресу, после чего некоторое время микросхема не способна выполнять операции чтения/записи и по другим адресам, вплоть до окончания выполнения внутренней операции программирования (со встроенным стиранием). Микросхемы могут поддерживать и режим страничной записи (Page Write), в котором они принимают поток байт записи смежных ячеек в страничный буфер на нормальной скорости интерфейса, после чего вся страница записывается в энергонезависимую память. Страничная запись экономит время (запись страницы выполняется за то же время, что и одной ячейки), но размер страничного буфера, как правило, небольшой (4-32 байт для микросхем небольшого объема и до 128–256 байт - большого). Более сложный интерфейс записи использует систему команд, в которую могут входить команды разрешения/запрета стирания и записи, стирание (отдельной ячейки или всей памяти), запись. Микросхема может иметь и специальные внутренние регистры, например регистр состояния, определяющий готовность микросхемы к обмену данными и возможные режимы защиты от модификации ячеек. Некоторые старые микросхемы для стирания требуют подачи сравнительно высокого (12 В) напряжения на определенные выводы. По процедуре программирования некоторые микросхемы EEPROM схожи с флэш-памятью. В настоящее время EEPROM применяются наряду с флэш-памятью, причем они могут соседствовать даже в одной микросхеме (например, микроконтроллере). Это объясняется очень большим гарантированным числом циклов перезаписи (10 6 и более) EEPROM, но меньшим достижимым объемом. Также EEPROM обычно имеет и большее гарантированное время сохранности информации (до 100 лет). Флэш-память при большем объеме и более производительных способах записи и стирания допускает меньшее число циклов перезаписи, и время сохранения информации у нее меньше (может быть и всего 10 лет). Микросхемы EEPROM выпускаются с различными интерфейсами, последовательными (Serial EEPROM) с интерфейсами I?C, SPI и иными и параллельными (Parallel EEPROM) с интерфейсами статической памяти (и EPROM).

Флэш-память по определению относится к классу EEPROM (электрическое стирание), но использует особую технологию построения запоминающих ячеек. Стирание во флэш-памяти производится сразу для целой области ячеек (блоками или полностью всей микросхемы). Это позволило существенно повысить производительность в режиме записи (программирования). Флэш-память обладает сочетанием высокой плотности упаковки (ее ячейки на 30 % меньше ячеек DRAM), энергонезависимого хранения, электрического стирания и записи, низкого потребления, высокой надежности и невысокой стоимости. Первые микросхемы флэш-памяти были предложены фирмой Intel в 1988 году и с тех пор претерпели существенные изменения по архитектуре, интерфейсу и напряжению питания.

Каждая ячейка флэш-памяти состоит всего из одного униполярного (полевого) транзистора. Ячейки организованы в матрицу; разрядность данных внешнего интерфейса - 8 или 16 бит (ряд микросхем имеет переключаемую разрядность). Чистые (стертые) ячейки содержат единицу во всех битах; при записи (программировании) нужные биты обнуляются. Возможно последующее программирование и уже записанных ячеек, но при этом можно только обнулять единичные биты, но не наоборот. В единичное состояние ячейки переводятся только при стирании. Стирание выполняется для всей матрицы ячеек; стирание одиночной ячейки невозможно. Чтение флэш-памяти ничем не отличается от чтения любой другой памяти - подается адрес ячейки, и через некоторое время доступа (десятки-сотни не) на выходе появляются данные. Запись выглядит несколько сложнее - для программирования каждого байта (слова) приходится выполнять процедуру, состоящую из операций записи и считывания, адресованных к микросхеме флэш-памяти. Однако при этом шинные циклы обращения к микросхеме являются нормальными для процессора, а не растянутыми, как для EPROM и EEPROM. Таким образом, в устройстве с флэш-памятью легко реализуется возможность перепрограммирования без извлечения микросхем из устройства. Большинство микросхем флэш-памяти имеют интерфейс, аналогичный асинхронной статической памяти (SRAM), а при чтении он упрощается до интерфейса ROM/PROM/EPROM. Существуют версии с интерфейсом динамической памяти, асинхронным и синхронным, а также и со специальными интерфейсами, в том числе и I?С. Первые микросхемы работали только при напряжении питания 5 В, а для программирования и стирания требовали дополнительное питание V PP = +12 В. Затем появились микросхемы всего с одним напряжением питания +5 В. Дальнейшее развитие технологии позволило снизить напряжение питания до 2,7–3,3 В и 1,65-2,2 В, a V PP - до 5, 3,3, 2,7 и даже 1,65 В. В производстве микросхем используется технологические процессы с разрешением 0,3, 0,22, 0,18 мкм (чем мельче ячейки, тем они экономичнее). Микросхемы первых выпусков (1990 г.) имели гарантированное число циклов стирания-программирования 10 000, современные - 100 000.

Флэш-память имеет время доступа при чтении 35-200 нс. Стирание информации (поблочное или во всей микросхеме) у микросхем середины 90-х годов занимает 1–2 секунды, программирование (запись) байта - порядка 10 мкс. У современных микросхем время стирания и записи заметно сократилось. Процедура записи от поколения к поколению упрощается (см. ниже). От ошибочного стирания (записи) применяются различные методы программной и аппаратной защиты. Программной защитой является ключевая последовательность команд, нарушение которой не позволяет начать операции стирания и записи. Аппаратная защита не позволяет выполнять стирание и запись, если на определенные входы не поданы требуемые уровни напряжения. Аппаратная защита может защищать как весь массив целиком, так и отдельные блоки.

По организации массива в плане стирания групп ячеек различают следующие архитектуры:

Bulk Erase (BE) - все ячейки памяти образуют единый массив; запись возможна в произвольную ячейку; стирание возможно только для всего объема сразу;

Boot Block (BB) - массив разделен на несколько блоков разного размера, стираемых независимо, причем один из блоков имеет дополнительные средства защиты от стирания и записи;

Flash File - массив разделен на несколько равноправных независимо стираемых блоков обычно одинакового размера, что позволяет их называть микросхемами с симметричной архитектурой (Symmetrical Architecture, SA).

Организация BE применялась только в микросхемах первого поколения, ее недостатки вполне очевидны (получается просто аналог EEPROM с более удобным способом стирания и интерфейсом программирования). Все современные микросхемы секторированы (разбиты на отдельно стираемые блоки), так что остается лишь деление на симметричную и несимметричную архитектуру.

В симметричной архитектуре (SA), как правило, используется разбиение на блоки по 64 Кбайт; один из крайних блоков (с самым большим или самым маленьким адресом) может иметь дополнительные средства защиты.

В асимметричной архитектуре один из 64-килобайтных блоков разбивается на 8 блоков по 8 Кбайт. Один из блоков имеет дополнительные аппаратные средства защиты от модификации и предназначается для хранения жизненно важных данных, не изменяемых при запланированных модификациях остальных областей. Эти микросхемы специально предназначены для хранения системного программного обеспечения (BIOS), а привилегированный блок (Boot Block ) хранит минимальный загрузчик, позволяющий загрузить (например, с дискеты) и выполнить утилиту программирования основного блока флэш-памяти. В обозначении этих микросхем присутствует суффикс T (Тор) или В (Bottom), определяющий положение Boot-блока либо в старших, либо в младших адресах соответственно. Первые предназначены для процессоров, стартующих со старших адресов (в том числе, х86, Pentium), вторые - для стартующих с нулевого адреса, хотя возможны и противоположные варианты, когда некоторые биты шины адреса перед подачей на микросхему памяти инвертируются. Старые микросхемы BB малого объема имели немного другое распределение, например микросхема 28F001ВХ-Т (28F001BN-Т ), часто применяемая для флэш-BIOS в PC, содержит:

Основной блок (Main Block) объемом 112 Кбайт (00000h-1BFFFh);

Два блока параметров (Parameter Block) объемом по 4 Кбайт (1C000h-1CFFFh и 1D000h-1DFFFh);

Загрузочный блок (Boot Block) объемом 8 Кбайт (1E000h-1FFFFh), стирание и программирование которого возможны лишь при особых условиях.

Основной блок и блоки параметров по защите равноправны; выделение небольших блоков параметров позволяет в них хранить часто сменяемую информацию, например ESCD технологии PnP.

Выпускают и комбинированные микросхемы, например MT28C3214P2FL представляет собой комбинацию флэш-памяти 2 М?16 и SRAM 256 К?16.

По организации матрицы ячеек различают архитектуры NOR и NAND. В традиционной организации NOR транзисторы на одном проводе объединяются своими стоками параллельно, как бы образуя логический элемент ИЛИ-НЕ (NOR - Not OR). Эта организация обеспечивает высокое быстродействие произвольного считывания, что позволяет исполнять программы прямо из флэш-памяти (не копируя в ОЗУ) без потери производительности. В организации NAND несколько транзисторов разных ячеек соединяются последовательно, образуя логический элемент И-НЕ (NAND - Not AND), что дает высокую скорость последовательных обращений.

В первых микросхемах флэш-памяти каждая ячейка (всего один транзистор) предназначалась для хранения одного бита информации (1 - стерта, 0 - «прошита»). Позже появилась технология хранения двух битов в одной ячейке - благодаря совершенствованию технологии удалось надежно различать 4 состояния ячейки, что и требуется для хранения двух битов. Два бита в ячейке хранит память Intel StrataFlash, емкость одной такой микросхемы уже достигла 128 Мбит (16 Мбайт).

Флэш-память постоянно развивается как в плане повышения емкости и снижения потребления, так и в плане расширения возможностей и повышения производительности. Так, например, в ряде микросхем AMD имеется возможность чтения одновременно с записью других блоков (чтение во время стирания стало возможным еще со второго поколения флэш-памяти).

Некоторые микросхемы обеспечивают быстрый обмен в страничном режиме (Page Mode ). Страницей являются 4 или 8 смежных ячеек; первое чтение в странице выполняется со временем доступа 70 нс. Если микросхема остается выбранной, то другие ячейки этой страницы (отличающиеся значением младших битов адреса) можно считывать циклами длительностью по 20 нс. Доступ к одиночным ячейкам не отличается от обычного. Микросхемы с пакетным режимом (Burst Mode) вдобавок к одиночному и страничному режимам (асинхронным) могут работать и в синхронном режиме. Для этого они имеют вход синхронизации CLK . Адрес начала пакета передается вместе с сигналом ADV# (фиксируются по положительному перепаду CLK). Первые данные на выходе появятся через 3 такта, после чего в каждом следующем такте будут выдаваться очередные данные.

Синхронная флэш-память имеет интерфейс (и даже упаковку в корпуса), совпадающий с SDRAM. В настоящее время выпускаются микросхемы с частотой 66 МГц (например, MT28S4M16LC - 1 М?16?4 банка), ожидаются микросхемы и на 133 МГц. Такая память удобна для встраиваемых компьютеров для хранения ПО, исполняемого прямо на месте (без копирования в ОЗУ).

Микросхемы флэш-памяти с симметричной архитектурой выпускаются и с интерфейсом DRAM (динамической памяти) - с мультиплексированной шиной памяти, стробируемой сигналами RAS# и CAS# . Они предназначены для применения в модулях SIMM или DIMM, устанавливаемых в гнезда для обычной динамической памяти. Таким образом реализуются, например, модули PostScript для лазерных принтеров и любые резидентные программные модули. Эти модули, естественно, не будут определяться системой как основная память - на попытку обычной записи и считывания, предпринимаемую в тесте POST при определении установленной памяти, они ответят весьма своеобразно. Также они не будут восприниматься и как модули дополнительной системы BIOS, поскольку займут неподходящие для этого физические адреса. Использоваться эти модули смогут только с помощью специального драйвера, который «объяснит» чипсету, какому диапазону адресов пространства памяти соответствуют сигналы выборки банков флэш-памяти. Поскольку интерфейс модулей SIMM и DIMM не предполагает сигналов защиты записи, системного сброса и дополнительного питания +12 В, все вопросы, связанные с программированием и защитой, решаются дополнительными элементами, устанавливаемыми на модулях. При использовании 16-битных микросхем такие модули непосредственно не обеспечивают независимую побайтную запись, но она может обеспечиваться программно, маскированием (записью 0FFh) немодифицируемых байт.

Для хранения BIOS появились микросхемы флэш-памяти с интерфейсом LPC , называемые хабами (firmware hub).

Для некоторых сфер применения требуются специальные меры по блокированию изменения информации пользователем. Так, Intel в некоторые микросхемы вводит однократно записываемые регистры OTP (One-Time-Programmable). Один 64-битный регистр содержит уникальный заводской номер, другой может программироваться пользователем (изготовителем устройства) только однажды.

Фирма Intel выпускает микросхемы «Wireless Flash Memory» - за интригующим названием скрывается, конечно же, «нормальный» электрический интерфейс с проводами (wireless - без проводов). Однако они ориентированы на применение в средствах беспроводной связи (сотовые телефоны с доступом к Интернету): питание 1,85 В, наличие регистров OTP для защиты от мошенничества и т.п.

Корпуса, интерфейс и обозначение микросхем флэш-памяти

Микросхемы флэш-памяти упаковывают в корпуса со стандартизованным назначением выводов. Первые микросхемы выпускались в корпусах DIP, что обеспечивало легкость замены микросхем (E)EPROM на флэш-память. Далее в целях миниатюризации перешли к корпусам PLCC, TSOP и TSOP-II. Применение корпусов FBGA (Fine Pitch Ball Grid Array) - матрицы 6?8 шариковых выводов с шагом 0,8 мм - позволяет уменьшить размер корпуса до минимума, требуемого для упаковки кристалла. Для микросхем, используемых в картах SmartMedia, применяют и оригинальную упаковку KGD (Known Good Die).

На рис. 7.20-7.22 приведено расположение выводов распространенных микросхем флэш-памяти (основной вариант цоколевки). Многие микросхемы имеют два варианта цоколевки для корпусов поверхностного монтажа - основной и зеркальный (реверсный). Это позволяет существенно упростить разводку печатных проводников (серпантином) при объединении большого количества микросхем в массивы флэш-памяти.

Рис. 7.20 . Расположение выводов микросхем флэш-памяти с 8-битной организацией в корпусах DIP и PLCC: а - DIP-32, б - PLCC-32

Рис. 7.21 . Расположение выводов микросхем флэш-памяти с 8-битной организацией в корпусах TSOP: а - TSOP-32, б - TSOP-40

Рис. 7.22 . Расположение выводов микросхем флэш-памяти с 8/16-битной организацией в корпусах TSOP-44: а - TSOP-44, б - TSOP-48, в - TSOP-56

Назначение сигналов микросхем флэш-памяти приведено в табл. 7.23; микросхемы разных изготовителей и моделей могут иметь не все из приведенных управляющих сигналов.

Таблица 7.23 . Назначение сигналов микросхем флэш-памяти

Сигнал Назначение
СЕ# Chip Enable - разрешение доступа. Низкий уровень разрешает обращение к микросхеме, высокий уровень переводит микросхему в режим пониженного потребления. Доступ к микросхеме, имеющей два входа (СЕ1# и СЕ2#), возможен при низком уровне на обоих входах
ОЕ# Output Enable - разрешение выходных буферов. Низкий уровень при низком уровне сигнала СЕ# разрешает чтение данных из микросхемы. Подача высокого (12В) напряжения во время подачи команды стирания или программирования позволяет модифицировать и Boot-блок (этот метод используется редко, поскольку требует не-ТТЛ сигнала)
WE# Write Enable - разрешение записи. Низкий уровень при низком уровне сигнала СЕ# разрешает запись и переводит выходные буферы в высокоимпедансное состояние независимо от сигнала ОЕ#. Временные диаграммы шинного цикла записи аналогичны обычной статической памяти, что позволяет подключать флэш-память непосредственно к системной шине процессора. Допустимы оба способа управления - как с помощью сигнала WE# на фоне низкого уровня СЕ#, так и наоборот. Минимальная длительность импульса записи совпадает со временем доступа
DQx Data Input/Output - двунаправленные линии шины данных. Время доступа при чтении отсчитывается от установки действительного адреса или сигнала СЕ# (в зависимости от того, что происходит позднее). Фиксация данных при записи происходит по положительному перепаду WE# или СЕ# в зависимости оттого, что происходит раньше
BYTE# Управляющий сигнал для выбора режима обращения к микросхемам с 8/16-битной организацией. Они имеют два 8-битных банка, и их ячейки памяти адресуются 16-битными словами. Низкий уровень сигнала BYTE# задает восьмибитный режим обмена по линиям DQ, при этом линия DQ15/A-1 становится самой младшей линией адреса, переключающей банки, а линии DQ переходят в высокоимпедансное состояние
Ах Address - входные линии шины адреса. Линия А9 допускает подачу высокого (12В) напряжения (как и EPROM) для чтения кода производителя (А0=0) и устройства (А0=1), при этом на остальные адресные линии подается логический «0»
RP# (PWD#) Reset/Power Down, раньше обозначался PWD# (PowerDown). Низкий уровень сбрасывает регистр команд и переводит микросхемы в режим «глубокого сна» (Deep Powerdown) с минимальным (доли микроампера) потреблением питания. Перевод сигнала в высокий логический уровень «пробуждает» микросхему (примерно за 0,3–0,8 мкс), после чего она переходит в режим чтения данных. Подача высокого (12В) напряжения разрешает программирование даже защищенного Boot-блока
WP# Write Protect - защита записи. При низком уровне WP# модификация Boot-блока или других блоков с установленным битом защиты возможна только при наличии высокого (12В) напряжения на входе RP#. При высоком уровне защита блоков игнорируется
RY/BY# Ready/Busy# - сигнал готовности (высокий уровень) микросхемы к очередной операции программирования или стирания. Низкий уровень указывает на занятость управляющего автомата (WSM) выполнением операции стирания или программирования. Выход обычно не управляется сигналами ОЕ# и СЕ#. В микросхемах 28F016SA и выше выход имеет тип «открытый коллектор», запираемый по команде, и программируемое назначение
3/5# Сигнал, переключающий режим работы микросхемы в зависимости от питающего напряжения, введен для оптимизации быстродействия или потребления

Интерфейс микросхем флэш-памяти хорошо сочетается со стандартными сигналами, используемыми в микропроцессорных системах. Внутренние циклы стирания, записи и верификации выполняются автономно от шинных циклов внешнего интерфейса, что является существенным преимуществом перед микросхемами EPROM и EEPROM. В режиме чтения они полностью совместимы с EPROM, совпадая с ними и по расположению основных выводов.

Обозначение микросхем для изделий лидеров в области разработки и производства флэш-памяти - фирм Intel и AMD - несколько отличаются. Остальные производители для своих изделий, по свойствам аналогичных, в основном придерживаются системы обозначений лидеров.

Обозначение микросхем флэш-памяти Intel начинается с признака 28F, за которым следует трехзначный код объема (табл. 7.24), а за ними - два символа технологии и архитектуры:

B5, ВС, BX, BR - Boot Block с питанием 5 В;

C3 - Boot Block с питанием 3 В;

F3 - Boot Block с питанием 3 В, повышенное быстродействие;

J3 и J5 - StrataFlash (SA) с питанием 3 и 5 В соответственно;

S3 и S5 - Flash File (SA) с питанием 3 и 5 В соответственно.

Таблица 7.24 . Популярные микросхемы флэш-памяти

Обозначение Организация?
256 32 К?8 BE
512 64 К?8 BE
010 128 К?8 BE
020 256 К?8 BE
001 128 К?8 BB
002 256 К?8 BB
004 512 К?8 BB, SA
008 1 М?8 BB, SA
016 2 М?8 BB, SA
200 256 К?8/128 К?16 BB
400 512 К?8/256 К?16 BB
800 1024 К?8/512 К?16 BB
160 2 М?8/1 M?16 SA, BB
320 4 M?8/2 M?16 SA
640 8 M?8/4 M?16 SA

BE - Bulk Erase (стираемые целиком), BB - Boot Block (несимметричные блоки), SA - Symmetric Architecture (симметричные блоки). Через косую черту указана организация для микросхем с переключаемой разрядностью данных.

Для флэш-памяти AMD первая часть обозначения определяет тип и характеристики микросхем:

Am29BDS - 1,8 В, считывание одновременно с записью, пакетный режим чтения;

Am29DS - 1,8 В, считывание одновременно с записью;

Am29SL - 1,8 В;

Am29DL - 3 В, считывание одновременно с записью;

Am29BL - 3 В, пакетный режим чтения;

Am29PL - 3 В, страничный режим чтения;

T - boot sector, верхний;

В - boot sector, нижний;

H - симметричная, защищен со старшим адресом;

L - симметричная, защищен с младшим адресом;

U (нет символа) - симметричная;

J40 - число 100%-годных блоков (только для UltraNAND).

Оставшаяся часть определяет параметры питания, быстродействие, тип корпуса, температурный диапазон и некоторые особенности.

Флэш-память с интерфейсом PCMCIA (PC Card) оптимизирована для построения внешней памяти миниатюрных PC. Модуль флэш-памяти в формате PC Card имеет интерфейс дисков IDE (ATA) как на уровне электрических сигналов, так и по системе команд. Кроме собственно микросхем накопителя этот модуль обычно содержит управляющую микросхему программируемой логики. Флэш-память в стандарте PC Card логически является устройством внешней памяти. Ее не следует путать с похожей по виду памятью в формате Credit Card, которая является оперативной и вставляется в специальный (не PCMCIA) слот компьютера. Внешнюю память, в отличие от оперативной, в принципе можно вставлять и вынимать без перезагрузки ОС.

Организация и программирование флэш-памяти Intel

По организации и программированию можно выделить три поколения флэш-памяти Intel.

Микросхемы первого поколения (28F256, 28F512, 28F010, 28F020 ) представляют собой единый массив памяти, стираемый целиком (bulk erase). Для выполнения стирания и записи микросхемы имеют внутренний регистр команд и управляющий автомат WSM (Write State Machine). Стирание и программирование флэш-памяти возможны только при подаче на вход V PP напряжения 12 В по командам, записываемым во внутренний регистр в шинном цикле записи по сигналу WE#.

Выполнение команд инициируется записью кодов команд во внутренний регистр, для чего процессор должен выполнить команду записи в память по адресу, принадлежащему области программируемой микросхемы флэш-памяти. На микросхему при этом должны прийти сигналы СЕ# (выбор) и WE# (запись). Последующие обращения к этой области как по записи (W), так и по чтению (R) должны соответствовать исполняемой команде (табл. 7.25). В шинном цикле записи адрес (если он требуется для данной команды) фиксируется по спаду сигнала WE# , фиксация данных выполнения команды происходит по фронту WE# . Большинство команд подается безадресно (по любому адресу, принадлежащему данной микросхеме); команда верификации стирания и второй цикл команды программирования подаются по адресу требуемой ячейки. Результаты стирания и программирования считываются по адресу конкретной интересующей ячейки.

Таблица 7.25 . Команды микросхем флэш-памяти Intel первого поколения

Команда Число циклов шины Первый цикл шины? Второй (третий) цикл шины?
R/W Адрес Данные R/W Адрес Данные
Read Memory 1 W X 00h - - -
Read ID 3 W X 90h R 0(1) M_Id (D_Id)
Set-up Erase/Erase 2 W X 20h W X 20h
Erase Verify 2 W EA A0h R X EVD
Set-up Program/Program 2 2 W X 40h W PA PD
Program Verify 2 W X C0h R X PVD
Reset 2 W X FFh W X FFh

Здесь X обозначает несущественный адрес, M_Id и D_Id - идентификаторы производителя и устройства, EA - адрес ячейки, в которой контролируется стирание, EVD - данные, считанные при верификации стирания (должны быть FFh), PA и PD - адрес и данные программируемой ячейки, PVD - данные, считанные при верификации программирования.

Read Memory - команда чтения данных, переводящая микросхему в режим чтения, совместимый по интерфейсу с EPROM.

Read ID - команда чтения идентификаторов. В последующих шинных циклах чтения по адресу 0 считывается M_Id (Manufacturer Identifier - идентификатор производителя, 89h), по адресу 1 - D_Id (Device Identifier - идентификатор устройства, для микросхем 8F256, 28F512, 28F010, 28F020 это B9h, B8h, B4h и BDh соответственно). Из этого режима микросхема выходит по записи любой другой действительной команды. Идентификаторы можно читать и путем подачи высокого напряжения на А9 (как и для EPROM).

Set-up Erase / Erase - подготовка и собственно стирание. Внутренний цикл стирания начинается по подъему сигнала WE# во втором шинном цикле и завершается по последующему шинному циклу записи или по внутреннему таймеру (Stop Timer). Последующей командой обычно является верификация стирания. Два шинных цикла записи, необходимые для выполнения команды, Снижают вероятность случайного стирания и позволяют отказаться от выполнения стирания посылкой команды Reset . Наличие внутреннего таймера позволяет не заботиться о точной выдержке времени для стирания, необходимо только выдержать минимальный интервал (около 10 мс). Перед стиранием все биты микросхемы должны быть предварительно запрограммированы в нули.

Erase Verify - верификация стирания. Отличается от обычного считывания тем, что проверяемая ячейка ставится в более жесткие условия считывания для повышения достоверности контроля стирания. Между шинными циклами команды верификации должна быть пауза не менее 6 мкс. Алгоритм быстрого стирания (Quick-Erase) предусматривает предварительное обнуление всех ячеек (командами программирования) и выполнение команды стирания, сопровождаемой верификацией. Команды верификации последовательно выполняются для каждой ячейки микросхемы. Если результат считывания отличается от FFh, производится повторное стирание (длительностью 10 мс), и последующая верификация может начинаться с первой ранее не стертой ячейки. Если количество повторов стирания превышает 3 000, фиксируется ошибка стирания и микросхема признается негодной. Алгоритм позволяет выполнить полное стирание микросхемы менее чем за секунду.

Set-up Program / Program - подготовка и собственно программирование. Команда выполняется аналогично стиранию, но во втором шинном цикле передается адрес и данные программируемой ячейки, а последующая выдержка должна составлять не менее 10 мкс.

Program Verify - верификация программирования (аналогично верификации стирания), обычно следующая после команды программирования. Между шинными циклами команды верификации должна быть пауза не менее 6 мкс. Алгоритм быстрого программирования (Quick-Pulse Programming) предусматривает формирование внутреннего цикла программирования длительностью 10 мкс с последующей верификацией. В случае несовпадения результата выполняется повторное программирование (до 25 раз для каждой ячейки), а если и это не помогает - фиксируется отказ микросхемы.

Reset - команда сброса, прерывающая команду программирования или стирания. Эта команда не меняет содержимое памяти; после нее требуется подача другой действительной команды.

По включении питания внутренний регистр команд обнуляется, что соответствует команде чтения, и микросхема работает как обычная микросхема PROM или EPROM. Это позволяет устанавливать микросхемы флэш-памяти вместо EPROM аналогичной емкости. При подаче на вход V PP низкого напряжения (0–6,5 В) стирание и программирование невозможны, и микросхема ведет себя как обычная EPROM.

Микросхемы второго поколения секторированы - ячейки группируются в блоки, допускающие независимое стирание (асимметричное разбиение - Boot Block и симметричное - Flash File ). Длительная операция стирания одного блока может прерываться для считывания данных других блоков, что значительно повышает гибкость и производительность устройства. Микросхемы имеют более сложный внутренний управляющий автомат и в них введен регистр состояния, что позволяет разгрузить внешний процессор и программу от забот по отслеживанию длительности операций программирования и стирания, а также упростить эти процедуры.

В отличие от микросхем первого поколения, в шинном цикле записи адрес и данные фиксируются по положительному перепаду WE# . Низкий уровень дополнительного управляющего сигнала RP# (в первых версиях обозначался как PWD#) предназначен для перевода микросхемы в режим с минимальным потреблением. В этом режиме модификация содержимого памяти невозможна. Соединение этого вывода в нормальном режиме (когда не требуется перезапись Boot-блока) с системным сигналом RESET# предохраняет микросхему от выполнения ложных команд, которые могут появиться в процессе подачи питания.

Внутренние операции стирания и программирования выполняются после посылки соответствующих кодов во внутренний регистр команд . Команды приведены в табл. 7.26. Как и в первом поколении, этот регистр для большинства команд безадресный, но команды программирования и стирания посылаются по требуемому адресу ячейки (блока). Отработка операций внутренним управляющим автоматом отображается соответствующими битами регистра состояния SR (Status Register), по значению которых внешняя программа может получить информацию о результате выполнения и возможности посылки следующих команд. Чтение регистра SR выполняется по специальной команде; есть и команда его очистки. Назначение бит регистра состояния описано ниже.

SR.7 - WSMS (Write State Machine Status) - состояние управляющего автомата:

0 - Busy (занят операцией стирания или программирования);

1 - Ready (свободен).

SR.6 - ESS (Erase Suspend Status) - состояние операции стирания:

0 - стирание завершено или выполняется;

1 - стирание приостановлено.

SR.5 - ES (Erase Status) - результат стирания блока:

0 - блок стерт успешно;

1 - ошибка стирания.

SR.4 - PS (Program Status) - результат программирования байта:

0 - байт записан успешно;

1 - ошибка записи.

SR.3 - VPPS (V PP Status) - состояние V PP во время программирования или стирания:

1 - зафиксировано понижение напряжения, и операция прервана.

SR - зарезервированы.

Таблица 7.26 . Команды микросхем флэш-памяти Intel второго поколения

Команда Число циклов шины Первый цикл шины? Второй (третий) цикл шины?
R/W Адрес Данные R/W Адрес Данные
Read Array/Reset 1 W X FFh - - _
Read ID (D_Id) 3 W X 90h R 0(1) M_Id
Read Status Register 2 W X 70h R X SRD
Clear Status Register 1 W X 50h - - -
Erase Setup/Erase Confirm 2 W BA 20h W BA D0h
Erase Suspend/Erase Resume 2 W X B0h W X D0h
Program Setup/Program 2 W PA 40h W PA PD
Alternate Program Setup/Program? 2 W PA 10h W PA PD

Здесь X обозначает несущественный адрес, M_Id и D_Id - идентификаторы производителя и устройства, SRD - данные, считанные из регистра состояния, PA и PD - адрес и данные программируемой ячейки, BA - адрес блока.

Альтернативный код команды программирования; доступен для микросхем емкостью 2, 4 и 8 Мбит.

Ниже описано назначение команд.

Read Array / Reset - чтение массива памяти (перевод в режим, совместимый с EPROM) и прерывание операций стирания и программирования.

Read ID - чтение идентификаторов производителя и устройства.

Read Status Register - чтение регистра состояния.

Clear Status Register - сброс регистра состояния.

Erase Setup/Erase Confirm - подготовка и стирание блока. В отличие от микросхем первого поколения, все внутренние операции, необходимые для стирания (обнуление ячеек блока, стирание и верификация), выполняются автоматически. При получении команды в регистре состояния устанавливается признак занятости (SR.7 =0) и любая шинная операция чтения микросхемы будет передавать данные этого регистра. Внешняя программа, периодически опрашивая регистр состояния, дожидается окончания выполнения стирания (когда SR.7 =1). Результат стирания определяется по значению бит 3, 4, 5 (их нулевое значение соответствует успешному выполнению операции).

Erase Suspend / Erase Resume - приостановка/продолжение стирания. Операцию стирания блока (как самую длительную) можно приостановить для чтения данных из других блоков. После выполнения команды Erase Suspend (код B0h) необходимо дождаться признака приостановки стирания (SR.6 =1), после чего, подав команду Read Array , можно считывать данные другого блока. По окончании считывания подается команда Erase Resume (код D0h), которая продолжает процесс стирания и снова переводит микросхему в режим чтения регистра состояния.

Program Setup / Program - подготовка и программирование ячейки. Эта команда выполняется аналогично подготовке и выполнению стирания, но не может быть приостановлена. Команда выполняет сразу и программирование, и верификацию.

Команды стирания блока и программирования можно подавать, только когда управляющий автомат свободен (бит SR.7 =1). Во время этих операций микросхема следит за уровнем напряжения V PP , и, если оно понижается до порога V PPLK) этот факт регистрируется в регистре состояния и операция прерывается. Также операция прерывается при понижении напряжения питания V CC до 2,5 В.

При считывании регистра состояния его мгновенное значение фиксируется по спаду сигнала СЕ# или ОЕ# (самого позднего из них в шинном цикле считывания).

Программирование и стирание Boot-блока отличаются от операций с другими блоками тем, что для них требуется подача высокого потенциала V HH (не ТТЛ, а +12 В) на вход PWD# перед выдачей команды стирания или программирования и удержание его до успешного завершения операции. Альтернативный способ - подача такого же потенциала, но на вход ОЕ# на время пар шинных циклов записи команд стирания или программирования. Попытка программирования Boot-блока без выполнения этих условий не удается, а в регистре состояния одновременно устанавливаются единичные значения бит ES и PS , что индицирует попытку модификации защищенного блока.

Микросхемы Flash-file организованы в виде набора одинаковых блоков, равноправных (симметричных) по защите (Symmetrical Architecture, SA ), Защита от модификации для 28F008SA может осуществляться только для всей микросхемы подачей низкого напряжения на вход V PP . По интерфейсу и командам микросхемы совпадают с микросхемами Boot Block (исключая специфику Boot-блока).

Архитектура микросхем 28F016SA существенно изменена, что значительно повышает производительность программирования (до 28,6 Мбайт/с в пакетном режиме) и обеспечивает поблочную защиту. Микросхема имеет два буфера данных для записи по 256 Кбайт. Флэш-память организована как 32 блока по 64 Кбайт, допускающих однобайтное или двухбайтное обращение. С каждым блоком связан собственный 8-битный регистр состояния блока BSRx (Block Status Register). Адреса регистров смещены относительно начального адреса блока на 2 или 1 для режимов обращения x8 или x16 соответственно. Назначение бит BSR описано ниже.

BSR.7 - BS (Block Status) - состояние блока:

1 - готов;

0 - занят.

B5R.6 - BLS (Block-Lock Status) - состояние защиты блока:

1 - программирование и стирание запрещены;

0 - блок не защищен.

BSR.5 - BOS (Block Operation Status) - состояние операции с блоком:

1 - операция завершена безуспешно;

BSR.4 - BOAS (Block Operation Abort Status) - состояние отмены операции с блоком:

1 - операция отменена;

0 - операция не отменялась.

BSR.3 - QS (Queue Status) - состояние очереди:

1 - очередь заполнена;

0 - очередь доступна.

BSR.2 - VPPS (V PP Status) - состояние V PP:

1 - обнаружен низкий уровень, операция прервана;

0 - V PP в норме.

BSR - зарезервированы.

Глобальный регистр состояния GSR (Global Status Register) несет информацию о состоянии микросхемы в целом. К GSR можно обращаться по адресу, смещенному относительно начального адреса любого блока на 4 или 2 для режимов обращения x8 или x16 соответственно. Назначение бит GSR описано ниже.

GSR.7 - WSMS (Write State Machine Status) - состояние автомата записи (и завершенности внутренних операций):

1 - занят;

0 - свободен.

GSR.6 - OSS (Operation Suspend Status) - состояние приостановки операции:

1 - операция приостановлена;

0 - операция выполняется или завершена.

GSR.5 - DOS (Device Operation Status) - состояние операции (копирует бит регистра состояния текущего блока):

1 - операция завершена неудачно;

0 - операция успешно завершена или выполняется.

GSR.4 - DSS (Device Sleep Status) - состояние ожидания:

1 - ожидание (Sleep);

0 - нормальный режим.

GSR.3 - QS (Queue Status) - состояние очереди:

1 - очередь заполнена;

0 - очередь доступна.

GSR.2 - PBAS (Page Buffer Available Status) - состояние буферов записи:

1 - есть свободный буфер;

0 - нет свободного буфера.

GSR.1 - PBS (Page Buffer Status) - состояние выбранного буфера записи:

1 - выбранный буфер свободен;

0 - буфер занят операцией с WSM.

GSR.0 - PBSS (Page Buffer Select Status) - номер выбранного буфера:

1 - выбран буфер 1;

0 - выбран буфер 0.

Для сохранения программной совместимости имеется безадресный регистр CSR (Compatible Status Register), полностью совпадающий с регистром состояния 28F008SA и микросхем с архитектурой Boot Block. Все команды этих микросхем доступны. Введены новые команды (табл. 7.27), обеспечивающие расширение функций. Ниже перечислены дополнительные возможности микросхем.

Буферированное страничное программирование. Кроме обычного побайтного или двухбайтного программирования возможно быстрое заполнение буфера шинными циклами записи. Далее переписывание его содержимого (всего или фрагмента) во флэш-память выполняется одной командой. Содержимое буфера может быть считано после подачи соответствующей команды.

Двухбайтное программирование при 8-битном использовании.

Поддержка очереди команд позволяет при наличии свободного места в очереди подавать последующие команды стирания или программирования, не дожидаясь освобождения автомата WSM . Признак готовности WSM установится только после выполнения всех команд очереди.

Автоматическая запись из буфера во флэш-массив во время стирания другого блока. Программная защита позволяет для любого блока установить бит защиты в специальную энергонезависимую область. Запись и стирание защищенного блока может осуществляться только после снятия общей защиты записи по сигналу WP# . Сброс бита защиты блока осуществляется только при его успешном стирании или перезаписи.

Стирание всех незащищенных блоков может выполняться одной командой.

Программирование использования сигнала RY/BY# . Возможно разрешение отображения бита готовности глобального регистра состояния, подачи импульсного сигнала по завершении программирования или стирания (на выбор), а также запрет его формирования.

Перевод микросхемы в режим ожидания (Sleep) с пониженным потреблением В этом режиме возможно считывание состояния и получение команд.

Таблица 7.27 . Дополнительные команды микросхем 28F016SA

Команда Первый цикл шины Второй цикл шины Третий цикл шины
R/W Адрес? Данные? R/W Адрес? Данные? R/W Адрес? Данные?
Read Extended Status Register (чтение дополнительных регистров) W X xx71h R RA GSRD BSRD - - -
Page Buffer Swap (смена буфера) W X xx72h - - - - - -
Read Page Buffer (чтение буфера) W X xx75h R РВА PBD - - -
Single Load to Page Buffer (одиночная запись в буфер) W X xx74h W РВА PBD - - -
Sequential Load to Page Buffer x8/x16 (последовательная запись в буфер) W X xxE0h W X BCL/WCL? W X BCH/WCH?
Page Buffer Write to Flash x8/х16 (перепись буфера в массив) W X xx0Ch W A0 BC(LH)/WCL? W X BC(HL)/WCH?
Two-Byte Write x8 (двухбайтное программирование в режиме x8) W X xxFBh W A0 WD(L,H)? W WA WD(H,L)?
Lock Block/Confirm (защита блока) W X xx77h W BA xxD0h - - -
Upload Status Bits/Confirm (выгрузка состояния блока в GSR) W X xx97h W X xxD0h - - -
Upload Device Information (выгрузка информации об устройстве) W X xx99h W X xxD0h - - -
Erase All Unlocked Blocks/Confirm (стирание всех незащищенных блоков) W X xxA7h W X xx00h - - -
RY/BY# Enable to Level-Mode (разрешение отображения GSR.7 потенциалом) W X xx96h W X xx01h - - -
RY/BY# Pulse-On-Write (импульс по окончании программирования) W X xx96h W X xx02h - - -
RY/BY# Pulse-On-Erase (импульс по окончании стирания) W X xx96h W X xx03h - - -
RY/BY# Disable (запрет сигнала RY/BY#) W X xx96h W X xx04h - - -
Sleep (режим ожидания) W X xxF0h - - - - - -
Abort (отмена операции) W X xx80h - - - - - -

BA = Block Address - адрес блока, РВА = Page Buffer Address - адрес внутри буфера, RA = Extended Register Address - адрес дополнительного регистра (BSRx или GSR), WA = Write Address - адрес во флэш-массиве. А0 указывает на порядок следования байт в режиме x8 (при низком уровне BYTE#): 0 = сначала младший, затем старший; 1 = наоборот.

AD = Array Data - данные из массива, PBD = Page Buffer Data - данные буфера, WD (L,H) = Write Data (Low, High) - данные для записи в массив, BSRD = BSR Data - информация регистра состояния блока, GSRD = GSR Data - информация глобального регистра состояния.

WC (L,H) = Word Count (Low, High) - счетчик слов. WCL=0 соответствует записи одного слова. Для буфера 256 байт WCH=0. BC (L,H) = Byte Count (Low, High) - счетчик байт. WCL=0 соответствует записи одного байта. Для буфера 256 байт WCH=0.

Микросхема 28F032SA представляет собой два параллельно соединенных кристалла 28F016SA в одном корпусе. Входы СЕ# одного из них соединены с выводами СЕ0# и СЕ1# , второго - с СЕ0# и СЕ2# .

Третье поколение - современные микросхемы, выполненные по технологии SmartVoltage , допускают стирание и программирование при напряжении V PP как 12 В, так и 5 В. В последнем случае эти операции занимают больше времени. Кроме того, операции чтения возможны при пониженном (3,3 и даже 2,7 В) напряжении питания V CC , при этом снижается потребление, но увеличивается время доступа.

Для управления защитой данных введен логический сигнал WP# (Write Protect). При его высоком уровне программирование и стирание защищенных блоков выполняются так же, как и остальных. При низком уровне WP# модификация защищенных блоков возможна только при наличии высокого (12 В) напряжения на входе RP# .

Для полной защиты от стирания и программирования на вход V PP должен подаваться низкий логический уровень (или 0 В), а не 5 В, как у микросхем с программированием напряжением 12 В.

Настройка (оптимизация потребления и быстродействия) происходит по уровню напряжения на выводе V CC по включении питания, переход на другое значение должен производиться через выключение питания.

Флэш-память фирмы AMD

Фирмой AMD выпускается несколько семейств микросхем флэш-памяти. Первые из них были близки по характеристикам к флэш-памяти Intel первого поколения(Bulk Erase, стирание и программирование 12 В): это Am28F256/512/010/020 . В отличие от аналогичных микросхем Intel, Am28F256/512 не имели стоп-таймера, что требовало точной выдержки при программировании и стирании. Следующим этапом были микросхемы Am28F256A/512A/010A/020A со встроенным алгоритмом программирования, отличающимся от алгоритма микросхем Intel второго поколения как последовательностью команд, так и способом определения момента окончания операций. Для защиты от случайного выполнения команды состоят из 3–6 шинных циклов, причем для них существенен и адрес (табл. 7.28). Состояние выполнения операций стирания или программирования определяется по результату данных, полученных в шинном цикле чтения по адресу ячейки, участвующей в операции (а не регистра состояния, как у Intel). Для определения окончания операций может использоваться метод Data# Polling или Toggle Bit . Метод Data# Polling основан на анализе бита D7 считанных данных. В начале выполнения внутреннего цикла он устанавливается инверсным по отношению к тому, что должно быть записано в ячейку. По успешном окончании операции он принимает желаемое значение (при стирании - 1). Метод Toggle Bit основан на анализе бита D6 , который при каждом шинном цикле считывания во время выполнения операции меняет свое значение на противоположное. По окончании операции он остановится в каком-либо состоянии, при этом об успешности можно судить по биту 7. Единичное значение бита D5 - Exceeded Timing Limits - указывает на превышение допустимого времени выполнения операции.

Таблица 7.28 . Команды флэш-памяти Am29F010

Команда Reset/Read Autoselect Byte Program Chip Erase Sector Erase
Количество циклов 3 3 4 6 6
1-й цикл Addr 5555h 5555h 5555h 5555h 5555h
Data AAh AAh AAh AAh AAh
2-й цикл Addr 2AAAh 2AAAh 2AAAh 2AAAh 2AAAh
Data 55h 55h 55h 55h 55h
3-й цикл Addr 5555h 5555h 5555h 5555h 5555h
Data F0h 90h A0h 80h 80h
4-й цикл Addr - XX00h/XX01h PA? 5555h 5555h
Data - 01h/20h PD? AAh AAh
5-й цикл Addr - - - 2AAAh 2AAAh
Data - - - 55h 55h
6-й цикл Addr - - - 5555h SA?
Data - - - 10h 30h

PA = адрес программируемой ячейки.

PD = данные для записи в программируемую ячейку.

SA = адрес стираемого сектора (значимы биты A16, A15 и А14).

Микросхемы семейства Am29Fxxx выполняют все операции при одном питающем напряжении 5 В и имеют секторированную структуру (Sector Erase), симметричную (аналогично Flash File) или несимметричную (Boot Block), с верхним (T) и нижним (В) положением Boot-блока. С помощью программатора каждый сектор может быть защищен от модификации в целевой системе (в отличие от Intel способ установки и снятия защиты фирмой AMD широко не раскрывается). По расположению выводов и интерфейсу микросхемы соответствуют стандарту JEDEC для флэш-памяти с одним питающим напряжением. Микросхемы позволяют выполнять одновременное стирание группы секторов. Все эти микросхемы, кроме Am29F010, имеют возможность приостановки стирания сектора (Erase Suspend) для выполнения чтения других секторов, a Am29F080/016 позволяют еще и программировать байты во время приостановки стирания.

В командах значение бит A15 , A16 существенно только при задании адреса ячейки. Ниже описано назначение команд.

Reset / Read - сброс и перевод в режим считывания массива. Производится автоматически по включении питания и при получении некорректной команды (или адреса) в цепочке.

Autоsеlесt - чтение кодов идентификации производителя (А =0), устройства (А =1) или состояния защиты сектора (биты A16 - А14 задают адрес сектора, A2 =1, остальные биты адреса - нулевые). Результат считывания состояния защищенного сектора - 01h, незащищенного - 00h. Идентификаторы и состояние защиты могут быть считаны и путем подачи высокого напряжения на вход А9 в шинном цикле считывания.

Byte Program - программирование байта. После четвертого цикла шины начинается внутреннее выполнение программирования, при этом чтение по адресу программируемой ячейки выводит биты состояния.

Chip Erase - стирание всех незащищенных секторов. На время выполнения стирания чтение по любому адресу (кроме адресов, принадлежащих защищенным секторам) выводит биты состояния.

Sector Erase - стирание сектора или группы секторов. Стирание начинается через 80 мкс после окончания последнего шинного цикла цепочки. До этого момента можно посылать цепочки команд стирания других секторов, выполнение начнется через 80 мкс после окончания последней цепочки. Если среди указанных секторов имеется защищенный, его стирание не выполняется. На время выполнения стирания чтение по адресу любого из стираемых секторов (кроме защищенных) выводит биты состояния. Бит DQ3 - Sector Erase Timer - указывает на начало выполнения стирания сектора (очередную последовательность команд стирания сектора можно начинать, пока бит 3=0).

Следующим этапом стала секторированная флэш-память Am29LVxxx с одним питающим напряжением (3,0 В) для всех операций. У этих микросхем защита любого сектора также устанавливается с помощью программатора стандартной микросхемы EPROM, а также возможно временное снятие защиты в целевой системе. Кроме программной индикации окончания операции (биты 5–7, считанные по адресу ячейки), имеется и аппаратная (сигнал RY / BY#). Также имеется сигнал аппаратного сброса, переводящий в режим чтения.

Вышеперечисленные микросхемы имеют традиционную архитектуру NOR. От них значительно отличается микросхема Am30LV0064D - 64 Мбит (8 М?8) с архитектурой UltraNAND, обеспечивающей быстрый последовательный доступ к данным выбранной страницы. Каждая страница имеет 512 байт данных и 16 дополнительных байт, используемых, например, для хранения ЕСС-кода. Для выбора страницы при чтении (загрузки во внутренний 528-байтный регистр) требуется около 7 мкс, после чего данные считываются последовательно со скоростью до 20 Мбайт/с (50 нс/байт). Таким образом, среднее время на чтение одного байта составляет всего 65 нс. Для записи данные (страница полностью или частично) загружаются в регистр с той же скоростью, после чего запись их в массив хранящих ячеек требует всего 200 мкс. Таким образом, среднее время на запись одного байта составляет всего 430 нс - в 20 раз быстрее обычной (NOR) флэш-памяти (скорость записи 2,3 Мбайт/с). Стирание выполняется блоками по 8 Кбайт за 2 мс (в обычной - 600 мс). Микросхема питается от 3 В. Планируется достижение объема микросхемы до 1 Гбит. Надежность хранения - 10 лет, 10 4 циклов безошибочного программирования, более 10 6 циклов программирования с коррекцией ошибок. Применение - «твердые диски», цифровые камеры, диктофоны и т. п.

Флэш-память других фирм

Микросхемы флэш-памяти выпускаются многими фирмами. Они различаются по организации, интерфейсу, напряжению питания и программирования, методам защиты и другим параметрам. Лидеры в области разработки и производства флэш-памяти - фирмы AMD, Fujitsu Corporation, Intel Corporation и Sharp Corporation летом 1996 года приняли спецификацию CFI (Common Flash Memory Interface Specification), обеспечивающую совместимость разрабатываемого программного обеспечения с существующими и разрабатываемыми моделями флэш-памяти. Эта спецификация определяет механизм получения информации о производителе, организации, параметрах и возможных алгоритмах программирования микросхем флэш-памяти. Для этого микросхемы флэш-памяти должны поддерживать команду опроса QUERY . В первом шинном цикле в микросхему по адресу 55h посылается код 98h (микросхема может и игнорировать адрес, «отзываясь» только на код данных 98h). Во втором шинном цикле, адресованном к этой микросхеме, выполняется чтение данных идентификационной структуры (на шину адреса микросхемы подается адрес интересующего байта структуры). Этими парами циклов структура может быть считана в произвольном порядке. Идентификационная структура содержит:

Ключ-признак наличия структуры - цепочка символов «QRY»;

Идентификатор (2 байта) первичного набора команд и интерфейса программирования;

Указатель на таблицу параметров для программирования (и саму таблицу);

Идентификатор, указатель и таблицу параметров альтернативного набора команд и интерфейса (если имеется);

Минимальные и максимальные значения напряжений питания (основного и программирующего);

Значение тайм-аутов для операций стирания (блока и всей микросхемы) и записи (байта, слова, буфера);

Объем памяти;

Максимальное число байтов для многобайтной записи;

Описания независимо стираемых блоков.

Для перевода в режим чтения массива микросхемы должны воспринимать команду чтения массива Read Array - запись кода FFh (F0h) по любому адресу в микросхеме.

Для большинства изделий справедливы тенденции, описанные при рассмотрении микросхем Intel и AMD, а именно - повышение объема, снижение напряжений питания и потребляемой мощности, повышение производительности и упрощение внешнего интерфейса для операций стирания и программирования. По интерфейсу программирования микросхемы, у которых в начальной части обозначения стоит число «28», как правило, близки к флэш- памяти Intel, а с числом «29» - к флэш-памяти AMD.

Микросхемы с буферированным программированием или страничной записью (Fast Page Write) могут не иметь в своей системе команд отдельной операции стирания сектора. Внутренняя операция стирания (и предварительного обнуления сектора) выполняется при страничном программировании.

Для защиты от случайного выполнения ключевые последовательности команд содержат от 2 до 6 шинных циклов, причем у них может быть важен и адрес (как в микросхемах AMD). Методы защиты секторов имеют различную как программную, так и аппаратную реализацию. Для временного снятия защиты используют различные способы, одним из которых является ключевая последовательность семи шинных циклов чтения.

Микросхемы флэш-памяти Micron совместимы с Intel и обозначаются аналогично, но начинаются с признака MT28F. Среди них есть и особенные, например: MT28F321P2FG - 2 М?16 Page Flash Memory, MT28F322D18FH - 2 М?16 Burst Flash Memory.

Фирма Silicon Storage Technology выпускает разнообразные микросхемы флэш-памяти с одним напряжением питания для всех операций. Их свойства можно определить по обозначению вида SST xx YY zzz - ttt , где xx - семейство:

28 - побайтное программирование, посекторное стирание;

29 - страничное программирование с прозрачным стиранием (команда стирания сектора отсутствует, внутренняя операция выполняется автоматически перед записью страницы в массив).

Элемент YY задает функциональный тип и напряжение питания:

ЕЕ - EEPROM-совместимые, выполнение одной инструкции, V CC = 5 В;

LE - то же, что и ЕЕ, V CC = 3 В;

VE - то же, что и ЕЕ, V CC = 2,7 В;

SF - операции Super Flash Command Register, V CC = 5 В;

LF - то же, что и SF, V CC = 3 В;

VF - то же, что и SF, V CC = 2,7 В;

DM - Disk Media (для флэш-дисков, требует внешнего контроллера), V CC = 5 В;

LM - то же, что и DM, V CC = 3 В;

VM - то же, что и DM, V CC = 2,7 B;

PC - PCMCIA (интерфейс и протоколы), V CC = 5 В.

Элемент zzz задает объем микросхемы:

512 - 512 Кбит (64 К?8);

010 - 1 Мбит (128 К?8);

040 - 4 Мбит (512 К?8);

080 - 8 Мбит (1 М?8);

016 - 16 Мбит (2 М?8);

032 - 32 Мбит (4 М?8).

Элемент ttt задает время доступа при чтении.

Микросхемы SST29EE010, 29LE010 и 29VE010 , часто применяемые в качестве носителя флэш-BIOS, организованы как 1024 страницы по 128 байт с программной и аппаратной защитой. Каждая страница может быть защищена независимо от других. Временные диаграммы стирания и программирования, а также необходимое напряжение программирования генерируются внутри микросхемы. Окончание операции определяется по алгоритму Toggle Bit или Data# Polling .

Аналогичные параметры имеют микросхемы 29ЕЕ011, 29LE011, 29VE011 фирмы Winbond.

7.3.3. Энергонезависимая память с последовательными интерфейсами

Для микросхем энергонезависимой памяти малого объема, от которых не требуется высокой производительности обмена данными, часто применяют последовательные интерфейсы. Это позволяет упаковывать микросхемы памяти любого объема в корпуса, имеющие минимальное число выводов (рис. 7.23, 7.24, табл. 7.29). С таким интерфейсом выпускаются микросхемы EEPROM, FRAM и флэш-памяти. Микросхемы EEPROM и флэш-памяти выполняют внутренние операции записи автономно; о завершении выполнения операции можно судить по результатам опроса ее состояния. Более сложные микросхемы имеют блочную организацию и средства управления доступом к каждому блоку с помощью программируемых регистров состояния и внешнего вывода управления записью (программированием). Микросхемы FRAM выполняют все операции на скорости интерфейса (на то они и RAM). Существуют модификации микросхем, позволяющие блокировать запись данных пользователем в определенную область (или всю микросхему, что превращает ее в ROM). Вывод управления защитой у разных типов микросхем функционирует и называется по-разному: WP# - Write Protect, WC - Write Control, PP - Programm Protect. Для выбора микросхемы используются либо входы задания внутреннего адреса А , либо сигнал выборки CS# , с помощью которого контроллер может обратиться к одному из требуемых устройств. Для упрощения внешних схем могут использоваться и несколько сигналов выборки S , один из которых (S1) иногда инвертирован.

Рис. 7.23 . Назначение выводов микросхем EEPROM с интерфейсом I?C: а - 24Схх, б - 24F016, в - 24F128, г - X76F041

Рис. 7.24 . Назначение выводов микросхем FRAM: а - FM24C256, б - FM25640

Таблица 7.29 . Популярные микросхемы памяти с последовательным интерфейсом

Микросхема Организация Рисунок Примечание
24С001, 24С01 16?8, 128?8 7.23, а I?C. Выводы 1, 2, 3, 7 = NC
24С02, 24С164 256?8, 2 К?8 7.23, а I?C
24F016 2 К?8 7.23, б I?C
24F128 16 К?8 7.23, в I?C
X76F041 512?8 7.23, г I?C
FM24C04, FM24C16, FM24C64, FM24C256 512?8, 2 К?8, 8 К?8, 32 К?8 7.24, а I?C
FM25040, FM25160, FM25256 512?8, 2 К?8, 64 К?8 7.24, б SPI

Микросхемы EEPROM 24C02 с интерфейсом I?C объемом 256 байт применяются для последовательной идентификации модулей DIMM-168 второго поколения, DIMM-184 и SODIMM-144.

Кроме обычных устройств энергонезависимой памяти с интерфейсом I?C выпускают и специализированные устройства защиты (Security Devices). Например, микросхема X76F041, представляющая собой 4 блока памяти по 128 байт, имеет 64-битный регистр пароля, доступный только по записи. Обращение к микросхеме возможно только при предъявлении правильного пароля (который считать невозможно в принципе). Программируемый управляющий регистр (тоже энергонезависимый) позволяет для каждого блока установить свой режим доступа (полный доступ, только чтение, возможность только обнуления бит при записи, доступ только по предъявлении пароля конфигурации). Кроме того, есть возможность включения режима саморазрушения после превышения количества попыток доступа с неверным паролем. Такие устройства могут применяться в аппаратных ключах, защищающих программные средства от несанкционированного исполнения и пиратского копирования.

Последовательные интерфейсы памяти имеются на специальных устройствах- программаторах и копировщиках; их имеют многие модели микроконтроллеров, а там, где нет специальных аппаратных средств, они могут быть легко реализованы программно, занимая несколько бит портов общего назначения. В IBM PC может присутствовать внутренний интерфейс I?C для считывания последовательных идентификаторов модулей памяти (в виде шины SMBus, см. п. 11.1.3). Последовательный интерфейс памяти используется во многих микросхемах программируемой логики (например, в популярных устройствах FPGA фирмы Altera), применяемых в различных устройствах, включая карты расширения PC. Эти микросхемы при инициализации (по включению питания, сбросу) сами «засасывают» описание своей конфигурации (или программное обеспечение) с рядом стоящей микросхемы энергонезависимой памяти. Внешние последовательные интерфейсы, в которых нуждаются разработчики и изготовители электронной аппаратуры с последовательной памятью, могут быть реализованы программно, с использованием несложных адаптеров для LPT-порта.

Для микросхем памяти часто применяют интерфейсы I?C, SPI (Microwire) и иные «безымянные», называемые просто 2-, 3- и 4-проводными (считаются только сигнальные линии, общий провод подразумевается). Некоторые из этих интерфейсов являются собственными изобретениями разработчиков микросхем памяти (необходимые сведения обычно имеются в информационных листках), здесь же остановимся на наиболее популярных.

Память с интерфейсом I?C

Широко распространенный двухпроводный интерфейс I?C (см. п. 11.1.1) обеспечивает невысокую скорость передачи (до 100 или 400 Мбит/с).

Диаграмма обмена данными с памятью по интерфейсу I?C приведена на рис. 7.25. Выполнив условие Start , ведущее устройство передает байт, содержащий адрес устройства, и признак операции RW и ожидает подтверждения. При операции записи следующей посылкой от ведущего устройства будет 8-битный адрес записываемой ячейки, а за ней - байт данных (для микросхем объемом памяти более 256 байт адрес ячейки посылается двумя байтами). Получив подтверждения, ведущее устройство завершает цикл условием Stop , а адресованное устройство может начать свой внутренний цикл записи, во время которого не реагирует на сигналы интерфейса. Ведущее устройство может проверять готовность устройства к следующей операции посылкой команды записи (байт адреса устройства) и анализом бита подтверждения, формируя затем условие Stop . Если устройство откликнулось битом подтверждения, значит, оно завершило внутренний цикл и готово к следующей операции.

Рис. 7.25 . Диаграмма обмена с памятью по интерфейсу I?C

Операция считывания инициируется так же, как и запись, но с признаком RW =1. Возможно чтение по заданному адресу, по текущему адресу или последовательное. Текущий адрес хранится во внутреннем счетчике микросхемы памяти; он содержит увеличенный на единицу адрес ячейки, участвовавшей в последней операции. Получив команду чтения, устройство дает бит подтверждения и посылает байт данных, соответствующий текущему адресу. Контроллер может ответить подтверждением, тогда устройство пошлет следующий байт (последовательное чтение). Если на принятый байт данных контроллер ответит условием Stop , операция чтения завершается. Начальный адрес для считывания контроллер задает фиктивной операцией записи, в которой передается адрес устройства и адрес ячейки, а после подтверждения приема адреса ячейки формируется повторный старт (Sr) и передается адрес устройства, но уже с указанием на операцию чтения. Так реализуется считывание произвольной ячейки (или последовательности ячеек). Отметим, что спецификация на интерфейс I?C не оговаривает правил модификации адреса данных при последовательных обращениях - их определяет разработчик устройства в соответствии с его функциями. Для памяти вышеописанный автоинкремент адреса упрощает последовательные обращения.

Заметим, что последовательная память малого объема может использовать и упрощенный вариант интерфейса, правда, и не называемого I?C. Так, например, память Atmel AT24C01 объемом 128 байт используют упрощенную систему адресации: адрес ячейки передается вместо 7-битного адреса устройства I?C, а в остальном операции записи и чтения выполняются по тем же правилам. При этом шина вырождается в двухточечный интерфейс, но в ряде случаев этого и достаточно. Специальные адреса здесь не требуются, так что все 128 значений 7-битного адреса доступны для адресации памяти. Микросхемы той же фирмы объемом 256 байт используют вышеприведенный механизм адресации устройств I?C с возможностью объединения до 8 устройств. А в микросхемах объемом 512, 1024 и 2048 байт 1, 2 или все 3 бита номера устройства в адресе отбираются под адрес 256-байтной страницы памяти. Память большего объема использует 7-битную адресацию устройств, обычную для I?C, а адрес ячейки задается последующими двумя байтами (сначала старшим, затем младшим).

Память с интерфейсом SPI

Трехпроводный интерфейс SPI (см. п. 11.3) обеспечивает скорость передачи до 5 Мбит/с. Обмен с микросхемой, выбранной сигналом CS# , начинается с подачи по линии SI 8-битного кода команды. В команде записи за кодом команды следует адрес ячейки, за которым следуют байты данных. Команда чтения начинается так же, но после приема адреса в следующем же такте по линии SO начинается вывод данных. Есть и специальные безадресные команды, например, разрешение/запрет записи и стирания. Микросхемы памяти с SPI имеют регистр состояния, доступ к которому обеспечивается специальными командами. В этом регистре отражается состояние управляющего автомата записи (занят/свободен), в нем же могут присутствовать и биты управления защитой записи (в регистр состояния возможна и запись). Состав регистров и набор команд зависит от модели устройства.