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