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