Выполнение команд инициируется записью кодов команд во внутренний регистр, для чего процессор должен выполнить команду записи в память по адресу, принадлежащему области программируемой микросхемы флэш-памяти. На микросхему при этом должны прийти сигналы СЕ# (выбор) и 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 мкс.
♦ Set-up Program/Program — подготовка и собственно программирование. Команда выполняется аналогично стиранию, но во втором шинном цикле передается адрес и данные программируемой ячейки, а последующая выдержка должна составлять не менее 10 мкс.
♦ Program Verify — верификация программирования (аналогично верификации стирания), обычно следующая после команды программирования. Между шинными циклами команды верификации должна быть пауза не менее 6 мкс.