Аппаратные интерфейсы ПК — страница 28 из 52

Статическая память — SRAM (Static Random Access Memory), как и следует из ее названия, способна хранить информацию в статическом режиме — то есть сколь угодно долго при отсутствии обращений (но при наличии питающего напряжения). Ячейки статической памяти реализуются на триггерах — элементах с двумя устойчивыми состояниями. По сравнению с динамической памятью эти ячейки более сложные и занимают больше места на кристалле, однако они проще в управлении и не требуют регенерации. Быстродействие и энергопотребление статической памяти определяется технологией изготовления и схемотехникой запоминающих ячеек.

Асинхронная статическая память (Asynchronous SRAM, Async SRAM), она же обычная, или стандартная, подразумевается под термином SRAM по умолчанию, когда тип памяти не указан.

Микросхемы этого типа имеют простейший асинхронный интерфейс, включающий шину адреса, шину данных и сигналы управления

CS#
,
ОЕ#
и
WE#
. Микросхема выбирается низким уровнем сигнала
CS#
(Chip select), низкий уровень сигнала
ОЕ#
(Output Enable) открывает выходные буферы для считывания данных,
WE#
(Write Enable) низким уровнем разрешает запись. Временные диаграммы циклов обращения приведены на рис. 7.17. При операции записи управление выходными буферами может производиться как сигналом
ОЕ#
(цикл 1), так и сигналом
WE#
(цикл 2). Для удобства объединения микросхем внутренний сигнал
CS#
может собираться по схеме «И» из нескольких внешних, например
CS0#
,
CS1#
и
CS2#
— в таком случае микросхема будет выбрана при сочетании логических сигналов 0, 1, 0 на соответствующих входах.

Рис. 7.17. Временные диаграммы чтения и записи асинхронной статической памяти

Время доступа — задержка появления действительных данных на выходе относительно момента установления адреса — у стандартных микросхем SRAM составляет 12, 15 или 20 наносекунд, что позволяет процессору выполнять пакетный цикл чтения 2-1-1-1 (то есть без тактов ожидания) на частоте системной шины до 33 МГц. На более высоких частотах цикл будет не лучше 3-2-2-2.

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

CS#
,
OE#
и
WE#
), синхронная память использует сигнал
CLC
(Clock) для синхронизации с системной шиной и сигналы управления пакетным циклом
ADSP#
,
CADS#
и
ADV#
. Сигналы
CADS#
(Cache ADdress Strobe) и
ADSP#
(ADdress Status of Processor), которыми процессор или кэш-контроллер отмечает фазу адреса очередного цикла, являются стробами записи начального адреса цикла во внутренний регистр адреса. Любой из этих сигналов инициирует цикл обращения, одиночный (single) или пакетный (burst), а сигнал
ADV#
(ADVance) используется для перехода к следующему адресу пакетного цикла. Все сигналы, кроме сигнала управления выходными буферами
ОЕ#
, синхронизируются по положительному перепаду сигнала
CLK
. Это означает, что значение входных сигналов должно установиться до перепада и удерживаться после него еще некоторое время. Выходные данные при считывании будут также действительны во время этого перепада. Микросхемы синхронной статической памяти, как и SDRAM, обычно имеют сигнал, выбирающий режим счета адреса: чередование (для процессоров Intel) или последовательный счет (для Power PC).

Конвейерно-пакетная статическая память, PB SRAM (Pipelined Burst SRAM), — усовершенствование синхронной памяти (слово «синхронная» из ее названия для краткости изъяли, но оно обязательно подразумевается). Конвейером является дополнительный внутренний регистр данных, который, требуя дополнительного такта в первой пересылке цикла, позволяет остальные данные получать без тактов ожидания даже на частотах выше 75 МГц. Задержка данных относительно синхронизирующего перепада у современных микросхем PB SRAM составляет 4,5–8 нс! Но, как и в случае Sync Burst SRAM, этот параметр не является временем доступа в чистом виде (не следует забывать о двух-трех тактах в первой передаче), а отражает появление действительных данных относительно очередного перепада сигнала синхронизации. Интерфейс PB SRAM аналогичен интерфейсу Sync Burst SRAM.

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 практически не деградируют в процессе записи — гарантируется до 1010 циклов перезаписи. Провозглашается замена на 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 бод) за счет длительной процедуры копирования данных в буфер программатора.

Интерфейс микросхем постоянной памяти в режиме чтения совпадает с интерфейсом статической памяти. Для программирования (записи) требуется приложение ко входу VPP напряжения программирования, которое для различных типов EPROM лежит в диапазоне 12–26 В (обычно указывается на корпусе микросхемы). Комбинации управляющих сигналов, формирующие импульсы записи для EPROM разной емкости, различны. При напряжении на входе VPP 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 К×8DIP-247.18, а20 = ОЕ#; 21 = Vpp
2732 — 4 К×8DIP-247.18, а20 = OE#/Vpp, 21=A11
2764 — 8 К×8DIP-287.18, б1 = Vpp, 22 = OE#; 26 = NC, 27 = PGM#
27128 — 16 К×8DIP-287.18, б1 = Vpp, 22 = OE#; 26 = A13, 27 = PGM#
27256 — 32 К×8DIP-287.18, б1 = Vpp, 22 = OE#; 26 = A13, 27 = A14
27512 — 64 К×8DIP-287.18, б1 = A15, 22 = OE#/Vpp, 26 = A13, 27 = A14
27010 — 128 К×8DIP-327.18, б30 = NC
27010 — 128 К×8TSOP-327.19, а6 = NC
27010 — 128 К×8PLCC-327.19, б30 = NC
27020 — 256 К×8DIP-327.18, в-
27020 — 256 К×8TSOP-327.19, а-
27020 — 256 К×8PLCC-327.19, б-

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


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

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

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

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

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

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

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

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

Электрически стираемая (и перезаписываемая) память EEPROM, или E²PROM (Electrical Erasable PROM), отличается простотой выполнения записи. В простейшем (для пользователя) случае программирование сводится к записи байта по требуемому адресу, после чего некоторое время микросхема не способна выполнять операции чтения/записи и по другим адресам, вплоть до окончания выполнения внутренней операции программирования (со встроенным стиранием). Микросхемы могут поддерживать и режим страничной записи (Page Write), в котором они принимают поток байт записи смежных ячеек в страничный буфер на нормальной скорости интерфейса, после чего вся страница записывается в энергонезависимую память. Страничная запись экономит время (запись страницы выполняется за то же время, что и одной ячейки), но размер страничного буфера, как правило, небольшой (4-32 байт для микросхем небольшого объема и до 128–256 байт — большого). Более сложный интерфейс записи использует систему команд, в которую могут входить команды разрешения/запрета стирания и записи, стирание (отдельной ячейки или всей памяти), запись. Микросхема может иметь и специальные внутренние регистры, например регистр состояния, определяющий готовность микросхемы к обмену данными и возможные режимы защиты от модификации ячеек. Некоторые старые микросхемы для стирания требуют подачи сравнительно высокого (12 В) напряжения на определенные выводы. По процедуре программирования некоторые микросхемы EEPROM схожи с флэш-памятью. В настоящее время EEPROM применяются наряду с флэш-памятью, причем они могут соседствовать даже в одной микросхеме (например, микроконтроллере). Это объясняется очень большим гарантированным числом циклов перезаписи (106 и более) 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 В, а для программирования и стирания требовали дополнительное питание VPP = +12 В. Затем появились микросхемы всего с одним напряжением питания +5 В. Дальнейшее развитие технологии позволило снизить напряжение питания до 2,7–3,3 В и 1,65-2,2 В, a VPP — до 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# на фоне низкого уровня СЕ#, так и наоборот. Минимальная длительность импульса записи совпадает со временем доступа
DQxData Input/Output — двунаправленные линии шины данных. Время доступа при чтении отсчитывается от установки действительного адреса или сигнала СЕ# (в зависимости от того, что происходит позднее). Фиксация данных при записи происходит по положительному перепаду WE# или СЕ# в зависимости оттого, что происходит раньше
BYTE#Управляющий сигнал для выбора режима обращения к микросхемам с 8/16-битной организацией. Они имеют два 8-битных банка, и их ячейки памяти адресуются 16-битными словами. Низкий уровень сигнала BYTE# задает восьмибитный режим обмена по линиям DQ[0:7], при этом линия DQ15/A-1 становится самой младшей линией адреса, переключающей банки, а линии DQ[8:14] переходят в высокоимпедансное состояние
Ах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. Популярные микросхемы флэш-памяти

ОбозначениеОрганизация¹
25632 К×8 BE
51264 К×8 BE
010128 К×8 BE
020256 К×8 BE
001128 К×8 BB
002256 К×8 BB
004512 К×8 BB, SA
0081 М×8 BB, SA
0162 М×8 BB, SA
200256 К×8/128 К×16 BB
400512 К×8/256 К×16 BB
8001024 К×8/512 К×16 BB
1602 М×8/1 M×16 SA, BB
3204 M×8/2 M×16 SA
6408 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 В;

♦ Am29LV — 3 B;

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

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

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

♦ Am30LV — 3 В, UltraNAND;

♦ Am29F — 5 В.

Далее следует трехзначный код объема, за ним символ технологии изготовления (В, С или D), за которым следует символ архитектуры:

♦ 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). Стирание и программирование флэш-памяти возможны только при подаче на вход VPP напряжения 12 В по командам, записываемым во внутренний регистр в шинном цикле записи по сигналу WE#.

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

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


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

КомандаЧисло циклов шиныПервый цикл шины¹Второй (третий) цикл шины¹
R/WАдресДанныеR/WАдресДанные
Read Memory1WX00h---
Read ID3WX90hR0(1)M_Id (D_Id)
Set-up Erase/Erase2WX20hWX20h
Erase Verify2WEAA0hRXEVD
Set-up Program/Program 22WX40hWPAPD
Program Verify2WXC0hRXPVD
Reset2WXFFhWXFFh

¹ Здесь 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 аналогичной емкости. При подаче на вход VPP низкого напряжения (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
(VPP Status) — состояние VPP во время программирования или стирания:

 • 0 — напряжение было в норме;

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

SR[2:0]
— зарезервированы.


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

КомандаЧисло циклов шиныПервый цикл шины¹Второй (третий) цикл шины¹
R/WАдресДанныеR/WАдресДанные
Read Array/Reset1WXFFh--_
Read ID (D_Id)3WX90hR0(1)M_Id
Read Status Register2WX70hRXSRD
Clear Status Register1WX50h---
Erase Setup/Erase Confirm2WBA20hWBAD0h
Erase Suspend/Erase Resume2WXB0hWXD0h
Program Setup/Program2WPA40hWPAPD
Alternate Program Setup/Program²2WPA10hWPAPD

¹ Здесь 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). Во время этих операций микросхема следит за уровнем напряжения VPP, и, если оно понижается до порога VPPLK) этот факт регистрируется в регистре состояния и операция прерывается. Также операция прерывается при понижении напряжения питания VCC до 2,5 В.

При считывании регистра состояния его мгновенное значение фиксируется по спаду сигнала

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

Программирование и стирание Boot-блока отличаются от операций с другими блоками тем, что для них требуется подача высокого потенциала VHH (не ТТЛ, а +12 В) на вход

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

Микросхемы Flash-file организованы в виде набора одинаковых блоков, равноправных (симметричных) по защите (Symmetrical Architecture, SA), Защита от модификации для 28F008SA может осуществляться только для всей микросхемы подачей низкого напряжения на вход VPP. По интерфейсу и командам микросхемы совпадают с микросхемами 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 — операция завершена безуспешно;

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

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

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

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

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

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

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

BSR.2
VPPS
(VPP Status) — состояние VPP:

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

 • 0 — VPP в норме.

BSR[1:0]
— зарезервированы.

Глобальный регистр состояния

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 (чтение дополнительных регистров)WXxx71hRRAGSRD BSRD---
Page Buffer Swap (смена буфера)WXxx72h------
Read Page Buffer (чтение буфера)WXxx75hRРВАPBD---
Single Load to Page Buffer (одиночная запись в буфер)WXxx74hWРВАPBD---
Sequential Load to Page Buffer x8/x16 (последовательная запись в буфер)WXxxE0hWXBCL/WCL³WXBCH/WCH³
Page Buffer Write to Flash x8/х16 (перепись буфера в массив)WXxx0ChWA0BC(LH)/WCL³WXBC(HL)/WCH³
Two-Byte Write x8 (двухбайтное программирование в режиме x8)WXxxFBhWA0WD(L,H)³WWAWD(H,L)³
Lock Block/Confirm (защита блока)WXxx77hWBAxxD0h---
Upload Status Bits/Confirm (выгрузка состояния блока в GSR)WXxx97hWXxxD0h---
Upload Device Information (выгрузка информации об устройстве)WXxx99hWXxxD0h---
Erase All Unlocked Blocks/Confirm (стирание всех незащищенных блоков)WXxxA7hWXxx00h---
RY/BY# Enable to Level-Mode (разрешение отображения GSR.7 потенциалом)WXxx96hWXxx01h---
RY/BY# Pulse-On-Write (импульс по окончании программирования)WXxx96hWXxx02h---
RY/BY# Pulse-On-Erase (импульс по окончании стирания)WXxx96hWXxx03h---
RY/BY# Disable (запрет сигнала RY/BY#)WXxx96hWXxx04h---
Sleep (режим ожидания)WXxxF0h------
Abort (отмена операции)WXxx80h------

¹ 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, допускают стирание и программирование при напряжении VPP как 12 В, так и 5 В. В последнем случае эти операции занимают больше времени. Кроме того, операции чтения возможны при пониженном (3,3 и даже 2,7 В) напряжении питания VCC, при этом снижается потребление, но увеличивается время доступа.

Для управления защитой данных введен логический сигнал

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

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

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

Флэш-память фирмы 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/ReadAutoselectByte ProgramChip EraseSector Erase
Количество циклов33466
1-й циклAddr5555h5555h5555h5555h5555h
DataAAhAAhAAhAAhAAh
2-й циклAddr2AAAh2AAAh2AAAh2AAAh2AAAh
Data55h55h55h55h55h
3-й циклAddr5555h5555h5555h5555h5555h
DataF0h90hA0h80h80h
4-й циклAddr-XX00h/XX01hPA¹5555h5555h
Data-01h/20hPD²AAhAAh
5-й циклAddr---2AAAh2AAAh
Data---55h55h
6-й циклAddr---5555hSA³
Data---10h30h

¹ 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 лет, 104 циклов безошибочного программирования, более 106 циклов программирования с коррекцией ошибок. Применение — «твердые диски», цифровые камеры, диктофоны и т. п.

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

Микросхемы флэш-памяти выпускаются многими фирмами. Они различаются по организации, интерфейсу, напряжению питания и программирования, методам защиты и другим параметрам. Лидеры в области разработки и производства флэш-памяти — фирмы 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-совместимые, выполнение одной инструкции, VCC = 5 В;

LE — то же, что и ЕЕ, VCC = 3 В;

VE — то же, что и ЕЕ, VCC = 2,7 В;

SF — операции Super Flash Command Register, VCC = 5 В;

LF — то же, что и SF, VCC = 3 В;

VF — то же, что и SF, VCC = 2,7 В;

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

LM — то же, что и DM, VCC = 3 В;

VM — то же, что и DM, VCC = 2,7 B;

PC — PCMCIA (интерфейс и протоколы), VCC = 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. Для выбора микросхемы используются либо входы задания внутреннего адреса
А[0:2]
, либо сигнал выборки
CS#
, с помощью которого контроллер может обратиться к одному из требуемых устройств. Для упрощения внешних схем могут использоваться и несколько сигналов выборки
S[0:2]
, один из которых (
S1
) иногда инвертирован.

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

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


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

МикросхемаОрганизацияРисунокПримечание
24С001, 24С0116×8, 128×87.23, аI²C. Выводы 1, 2, 3, 7 = NC
24С02, 24С164256×8, 2 К×87.23, аI²C
24F0162 К×87.23, бI²C
24F12816 К×87.23, вI²C
X76F041512×87.23, гI²C
FM24C04, FM24C16, FM24C64, FM24C256512×8, 2 К×8, 8 К×8, 32 К×87.24, аI²C
FM25040, FM25160, FM25256512×8, 2 К×8, 64 К×87.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 имеют регистр состояния, доступ к которому обеспечивается специальными командами. В этом регистре отражается состояние управляющего автомата записи (занят/свободен), в нем же могут присутствовать и биты управления защитой записи (в регистр состояния возможна и запись). Состав регистров и набор команд зависит от модели устройства.

Глава 8