Лекция № 4++
“Flash-память”.
Flash-память - электрически перепрограммируемое интеллектуальное ПЗУ, которое может быть перепрограммировано непосредственно в работающей системе.
Flash-технология была анонсирована фирмой Intel в 1989 году. Flash-память имеет внутри себя встроенный управляющий микроконтроллер. В обычном режиме чтения, в который Flash-память переходит сразу после включения питания, она ничем не отличается от обычного ПЗУ. Для того, чтобы очистить блок памяти или записать байт необходимо сначала задать последовательность команд внутреннему контроллеру. Процедуры очистки и записи внутренний контроллер осуществляет самостоятельно.
Примером микросхемы Flash-памяти может служить микросхема 28F200BV-T/B из семейства Boot Block Flash Memory фирмы Intel.
Характеристики микросхемы:
Выводы микросхемы имеют следующее функциональное назначение:
- вход выбора разрядности (8 или 16 бит).
Микросхема может работать в режимах с разрядностью 8 или 16 бит
в зависимости от уровня сигнала на входе . Если на этом выводе
единичный уровень сигнала, то микросхема работает с разрядностью 16 бит. Данные,
в этом случае, передаются и принимаются через выводы DQ0 - DQ15. Если на выводе
нулевой уровень сигнала, то микросхема работает с разрядностью 8 бит. В
этом случае данные передаются и принимаются через вывода DQ0 - DQ7, выводы DQ8 -
DQ14 находятся в высокоимпедансном состоянии, а вывод DQ15/A-1 используется как
вход дополнительного младшего адресного разряда (т.к. при разрядности 8 бит
объем адресуемых ячеек микросхемы возрастает в два раза).
Организационно весь объем памяти микросхемы разбит на пять блоков:
Адресное пространство распределено среди указанных блоков следующим образом.
28F200BV-T |
Блок |
28F200BV-B |
1FFFFH (3FFFFH) ... 1E000H (3C000H) |
Boot Block 16 KB |
00000H ... 01FFFH (03FFFH) |
1DFFFH (3BFFFH) ... 1D000H (3A000H) |
Parameter Block 8 KB |
02000H (04000H) ... 02FFFH (05FFFH) |
1CFFFH (39FFFH) ... 1C000H (38000H) |
Parameter Block 8 KB |
03000H (06000H) ... 03FFFH (07FFFH) |
1BFFFH (37FFFH) ... 10000H (20000H) |
Main Block 96 KB |
04000H (08000H) ... 0FFFFH (1FFFFH) |
0FFFFH (1FFFFH) ... 00000H |
Main Block 128 KB |
10000H (20000H) ... 1FFFFH (3FFFFH) |
Микросхема может работать в режимах с разрядностью 8 и 16 бит. В скобках указаны адреса для режима с разрядностью 8 бит. У микросхем с индексом B Boot Block расположен в области младших адресов, а у микросхем с индексом T - в области старших адресов. Это позволяет использовать микросхемы в системах с микропроцессорами, начинающими работу в области старших и младших адресов.
Интерфейс между процессором и внутренним контроллером Flash-памяти называется Command User Interface (CUI). Взаимодействие между процессором и внутренним контроллером осуществляется путем записи в CUI определенного набора команд и чтения регистра состояния микросхемы. Текущий режим работы микросхемы определяется записью соответствующей команды в CUI. Возможны следующие команды:
Возможные режимы работы микросхемы представлены в следующей таблице.
Режим |
1-й цикл шины |
2-й цикл шины | |||||
|
Цикл |
Адрес |
Данные |
Цикл |
Адрес |
Данные | |
Чтение массива |
Запись |
x |
0FFH |
|
|
| |
Чтение регистра состояния |
Запись |
x |
70H |
Чтение |
x |
SRD | |
Очистка регистра состояния |
Запись |
x |
50H |
|
|
| |
Запись байта или слова |
Запись |
WA |
40H |
Запись |
WA |
WD | |
Очистка блока |
Запись |
BA |
20H |
Запись |
BA |
0D0H | |
Приостановка/Возобновление очистки |
Запись |
x |
0B0H |
Запись |
x |
0D0H |
где:
SRD - содержимое регистра состояния;
WA - адрес записываемой ячейки;
WD - записываемые данные;
BA - любой адрес внутри стираемого блока.
Регистр состояния это внутренний регистр микросхемы, биты которого определяют текущее состояние микросхемы. Регистр состояния микросхемы имеет следующую структуру.
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
WSMS |
ESS |
ES |
PS |
VPPS |
R |
R |
R |
Отдельные биты регистра состояния имеют следующее значение:
- WSMS (Write State Machine Status) - статус операции:
1 - готово;
0 - занято;
- ESS (Erase Suspend Status) - статус приостановки очистки:
1 - очистка приостановлена;
0 - очистка продолжается/завершена;
- ES (Erase Status) - статус очистки:
1 - очистка при очистки блока;
0 - блок очищен успешно;
- PS (Program Status) - статус программирования:
1 - ошибка при записи слова/байта;
0 - байт/слово записан успешно;
- VPPS - статус напряжения программирования:
1 - пониженное напряжение программирования, операция прервана;
0 - напряжение программирования в норме;
- R - зарезервировано.
Рассмотрим отдельные режимы работы микросхемы.
Режим чтения массива.
Микросхема переходит в этот режим после включения питания и
выхода из состояния сброса (положительный перепад сигнала на входе ) без дополнительных команд. В этом режиме микросхема подобна обычному
ПЗУ.
Если микросхема не находится в режиме чтения массива, то перейти в него можно записав в CUI команду “Чтение массива” (0FFH) по любому адресу.
Режим чтения регистра состояния.
Для того, чтобы прочитать регистр состояния необходимо записать команду “Чтение регистра состояния” (70H) в CUI по любому адресу. После этого цикл чтения по любому адресу приведет к считыванию содержимого регистра состояния. Содержимое регистра состояния выдается всегда на выводы Q0 - Q7. В 16-разрядном режиме выводы Q8 - Q14 при этом находятся в высокоимпедансном состоянии, а вывод Q15/A-1 используется как дополнительный адресный вход. Для возврата в режим чтения массива после чтения регистра состояния необходимо записать команду “Чтение массива” (0FFH) в CUI по любому адресу.
Режим очистки регистра состояния.
Для очистки регистра состояния необходимо записать команду “Очистка регистра Состояния” (50H) в CUI по любому адресу. После этого все биты регистра состояния устанавливаются в 0. Для перехода в режим чтения массива после этого необходимо записать команду “Чтение массива” (0FFH) в CUI по любому адресу.
Режим очистки блока.
Для того, чтобы очистить любой из блоков, входящих в состав микросхемы необходимо последовательно записать команду “Предустановка очистки” (20H) и “Подтверждение очистки” (0D0H) в CUI по любому адресу, входящему в очищаемый блок. При очистке блока все биты во всех байтах, входящих в очищаемый блок устанавливаются в 1. В течение выполнения операции очистки бит D7 регистра состояния микросхемы равен 0, что свидетельствует о продолжении операции. После окончания операции очистки D7 становится равным 1. Бит D5 регистра состояния индицирует результат выполнения операции. Во время операции очистки уровень напряжения программирования на выводе VPP должен быть на уровне 5В. Если уровень напряжения VPP понижен, то операция выполняться не будет и бит D3 регистра состояния будет установлен в 1. После завершения операции необходимо очистить регистр состояния. Т.о. алгоритм операции очистки блока имеет следующий вид.
Для перехода в режим чтения массива после этого необходимо записать команду “Чтение массива” (0FFH) в CUI по любому адресу. Одновременно можно очистить только один блок. Очистить можно только весь блок целиком. Время очистки Boot Block - 0.3с, Parameter Block и Main Block - 0.6с.
Режим приостановки - возобновления очистки.
Т.к. операция очистки блока требует большого количества времени, ее можно приостановить с целью считать информацию из другого блока микросхемы. Если операция очистки блока была запущена, то запись команды “Приостановка очистки” (0B0H) в CUI по любому адресу приостанавливает ее. При этом текущее состояние микросхемы запоминается. Бит D6 регистра состояния индицирует приостановку процесса очистки. После этого в CUI может быть записана команда “Чтение массива” для чтения информации из любого другого блока микросхемы. Можно, также записать команду “Чтение регистра состояния” для считывания информации о состоянии микросхемы. Для продолжения процесса очистки блока с того места, где он был прерван необходимо записать команду “Возобновление очистки” (0D0H) в CUI по любому адресу.
Режим программирования байта/слова.
Для записи информации по определенному адресу в предварительно очищенную ячейку необходимо сначала записать в CUI по этому адресу команду “Предустановка программирования” (40H), а затем записать по этому адресу требуемую информацию. В процессе выполнения операции бит D7 регистра состояния равен 0. Во время процесса программирования можно задавать лишь команду “Чтение регистра состояния”. После окончания процесса программирования бит D4 регистра состояния показывает успешно ли она была завершена. В процессе программирования любой бит можно лишь изменить из 1 в 0. Т.о. алгоритм программирования байта/слова имеет следующий вид.
При попытке записать 1 в ячейку, в которой до этого был записан 0, информация в ячейке не изменится и ошибка не будет зафиксирована. Если во время процесса программирования напряжения программирования на выводе VPP будет ниже нормы (5В), то операция не будет произведена и бит D3 регистра состояния будет установлен в 1. Время записи байта/слова - 6мкс. Для перехода в режим чтения массива после операции программирования необходимо записать команду “Чтение массива” (0FFH) в CUI по любому адресу.
Защита блоков от стирания информации.
Блоки могут быть защищены от стирания и записи новой информации во избежание случайной потери информации. Существуют несколько режимов защиты блоков, которые отражены в следующей таблице.
VPP |
|
|
Статус защиты |
“0” |
x |
x |
Все блоки открыты. |
>“0” |
“0” |
x |
Все блоки защищены (“Сброс”). |
>“0” |
12В |
x |
Все блоки открыты. |
>“0” |
“1” |
“0” |
Boot Block защищен, остальные открыты. |
>“0” |
“1” |
“1” |
Все блоки открыты. |
Т.о. в активном состоянии для защиты всех блоков необходимо
выполнение условия VPP=0. Если напряжение на выводе VPP>0, а на выводе - меньше 12В, то может быть защищен только Boot Block если напряжение
на выводе
равно 0. Если
напряжение на выводе
равно 12В, то эта
защита не действует. Если блок защищен, то при попытке очистить его или записать
в него информацию эти операции выполняться не будут и будет индицироваться
соответствующая ошибка в регистре состояния.
Режим пониженного энергопотребления Deep Power Down Mode.
Для уменьшения потребления энергии предусмотрен режим
пониженного энергопотребления, в который микросхема входит при =0. При этом
все выходы микросхемы переходят в высокоимпедансное состояние. Микросхема
потребляет в этом режиме ток от источника питания около 0.2 мкА. Для выхода из
этого состояния необходимо установить единичный уровень сигнала на выводе
. после этого микросхема возвращается в активное состояние в режим
“Чтение Массива”, но только через 0.5 мкс.