Научная статья на тему 'Подключение nand Flash памяти к процессорам ADSP BF53x Blackfin®'

Подключение nand Flash памяти к процессорам ADSP BF53x Blackfin® Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
871
190
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Зян Ke, Зяо Дэниэл

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Подключение nand Flash памяти к процессорам ADSP BF53x Blackfin®»

Ke ЗЯН Дэниэл ЗЯО

Введение

В ряде новых цифровых сигнальных процессоров, например, в анонсированных к выпуску в 2007 году процессорах семейств Blackfin ADSP-BF54x и ADSP-BF52x, эта возможность реализована на аппаратном уровне при помощи интегрированного контроллера. Предлагаемая статья ориентирована, в первую очередь, на разработчиков, которые применяют или планируют применять не имеющие такой аппаратной поддержки процессоры Blackfin предыдущего поколения ADSP-BF53x в своих устройствах и хотели бы добавить в них возможности записи и воспроизведения объемных файлов с изображениями, аудио-, видеоданными и др.

Технология NAND флэш-памяти зародилась как альтернатива накопителям на жестких дисках для портативных устройств, предъявляющих особые требования к потребляемой мощности. Сегодня в большинстве сотовых телефонов, «карманных» компьютеров (Personal Digital Assistant, PDA), цифровых камер, портативных медиаплееров (Portable Media Player, PMP) и других мобильных вычислительных, коммуникационных и бытовых устройств для хранения больших объемов данных и операционных систем применяется NAND флэш-память.

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

Подключение NAND флэш-памяти

к процессорам ADSP-BF53x Blackfin

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

В этой статье обсуждается подключение к процессорам ADSP BF53x Blackfin NAND флэш-памяти как MLC-, так и SLC-типа. Статья сопровождается примерами функций низкоуровневого драйвера, работоспособность которого была проверена на аппаратной платформе, состоящей из оценочной платы ADSP-BF533 EZ-KIT LITE (ревизия 1.6) и подключенной к ней дочерней платы NAND флэш-памяти в среде VisualDSP++ 4.0 (с обновлением от апреля 2006 года).

Для того чтобы разработчики систем имели большую свободу действий, в статье описываются два подхода к реализации интерфейса. В качестве примера использовались микросхемы NAND флэш-памяти SLC-типа K9F2G08U0M производства Samsung и MLC-типа TC58NVG3D4CTG производства Toshiba.

NAND и NOR флэш-память

Микросхемы NOR флэш-памяти широко применяются в электронной индустрии. Они имеют простой интерфейс и годятся для прямого исполнения кода, что позволяет применять их в устройствах, не требующих хранения данных. NOR память обладает высокой скоростью чтения, однако ее быстродействие при записи и стирании невелико. По мере усложнения современных устройств от них требуется хранение все больших объемов данных и кода программ при меньшем времени записи и стирания. Все эти возможности предоставляет NAND флэш-память. Емкость современных микросхем NAND флэш-памяти варьируется от 8 до 512 Мбайт (16 Гбит макс. по данным на 2007 г. — прим. редактора). NAND память

представляет собой устройство ввода/вывода, и для выполнения любой операции с ней необходим достаточно сложный драйвер.

Ячейки памяти, обращение к которым происходит чаще, становятся более подверженными возникновению ошибок. Поэтому устройства NAND флэш-памяти обычно имеют дополнительную память, которая может использоваться файловой системой для замещения плохих блоков хорошими без уменьшения доступного объема. Файловые системы для NAND флэш-памяти, такие как JFFS2, обычно стараются обеспечивать равномерный износ по всему объему памяти для увеличения срока действия устройства.

NAND флэш-память: SLC и MLC

Сегодня на рынке представлены два различных типа устройств NAND флэш-памяти: с одноуровневыми (Single-Level-Cell, SLC) и многоуровневыми ячейками (Multi-LevelCell, MLC). Микросхемы MLC-типа способны хранить в одной ячейке памяти два или более битов, а микросхемы SLC-типа — только один бит данных.

Микросхемы MLC-типа, в отличие от микросхем SLC-типа, обладают намного большей емкостью, однако скорость выполнения операций чтения и записи у них ниже. Кроме того, требования к кодам, исправляющим ошибки (Error Correcting Codes, ECC), для устройств MLC-типа жестче, поскольку они в большей степени подвержены возникновению ошибок. Стоимость MLC флэш-памяти в пересчете на один бит намного меньше аналогичного параметра у SLC. Сравнение ха-

Таблица 1. Сравнение характеристик технологий SLC и MLC

Параметр SLC MLC

Логическая емкость Малая Большая

Скорость Высокая Низкая

ECC 1 бит на 528 байтов 4 бита на 528 байтов

Количество циклов записи-стирания 100 000 10 000

Стоимость Высокая Низкая

рактеристик устройств NAND флэш-памяти двух типов приведено в таблице 1.

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

SLC NAND флэш-память больше подходит для нетривиальных задач, в которых предъявляются высокие требования к техническим характеристикам. Она имеет большое количество циклов записи-стирания, что обеспечивается за счет высокой износостойкости и надежности. Эти свойства SLC-памяти находят применение в твердотельных накопителях, устройствах, используемых для записи сейсмических данных, сетевом оборудовании, оборудовании HDTV, сканерах штрих-кодов, ударопрочных ПК, авиационных «черных ящиках», портативных устройствах хранения информации, а также «карманных» ПК и цифровых фотокамерах.

К типичным областям применения MLC NAND флэш-памяти относятся карты памяти цифровых видео- и фотокамер, USB флэш-накопители, МР3-плееры, мониторы для автомобильной диагностики, устройства GPS, аниматронные модели (роботы, имитирующие объекты живой природы), карты для видеоигр и различные электронные игрушки. Среди приложений, в которых могут использоваться микросхемы NAND памяти, изготовленные как по MLC, так и по SLC технологии — карты памяти для принтеров (хранение шрифтов), сотовые телефоны, телекоммуникационное оборудование, голосовая почта и телевизионные компьютерные приставки. Разделение областей применения SLC и MLC NAND флэш-памяти показано на рис. 1.

В NOR флэш-памяти и других традиционных SRAM-подобных устройствах используются раздельные шины адреса и данных и базовые управляющие сигналы. NAND флэш-память оптимизирована для пересылок больших блоков информации и имеет единый набор выводов I/O (ввода/вывода), который используется как для адреса, так и для данных.

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

HDD повышенной надежности Запись сейсмических данных Сетевое оборудование HDTV PDA

Цифровые фотоаппараты Сканеры штрих-кодов ПК повышенной надежности Авиационные «черные ящики» Портативные системы хранения информации

SLC

- скорость

- износостойкость

- надежность

Цифровое видео Карты для цифровых фотоаппаратов USB флэш-накопители MP3

Автомобильная диагностика GSM (карты) Аниматронные модели Карты для видеоигр Электронные игрушки

MLC

меньшая стоимость большая емкость

Рис. 1. Типичные приложения памяти SLC- и MLC-типа

Базовый интерфейс NAND флэш-памяти

В устройствах NAND флэш-памяти выводы I/O используются и для адреса, и для данных, а также для приема команд. Управляющие сигналы и слова команд у устройств NAND флэш-памяти SLC- и MLC-типа совпадают, поэтому интерфейс с микросхемами памяти обоих типов для всех процессоров Blackfin универсален.

Обращение к флэш-памяти осуществляется по столбцам, страницам и блокам. Чтение и программирование (запись) выполняются на уровне страниц, а операции стирания — на уровне блоков.

NAND флэш-память поддерживает базовые команды — стирание блока (block erase), программирование (запись) страницы (page program), чтение состояния (read status) и чтение страницы (page read). Для обращения к устройству необходимо выставить низкий уровень сигнала на выводе разрешения выборки кристалла (CE#). Во время активного сигнала CE# NAND флэш-память может принимать байты от хоста при низком уровне сигнала разрешения записи (WE#) или выдавать данные на хост при низком уровне сигнала разрешения чтения (RE#). При высоком уровне CE# микросхема игнорирует сигналы WE# и RE#, и линии I/O находятся в третьем состоянии. Для посылки команд в устройство при активном сигнале CE# выставляется сигнал разрешения фиксации команды (CLE).

Сигнал разрешения фиксации адреса (ALE) используется для фиксации адреса в регистре адреса флэш-памяти. В таблице 2 показано, к каким внутренним регистрам происходит обращение при различных комбинациях CLE и ALE.

Интерфейс Samsung K9F2G08U0M

Микросхема K9F2G08U0M производства Samsung имеет конфигурацию 256 Мх8 бит (2 Гбит) с резервной емкостью 64 Мбит. Это устройство памяти является оптимальным решением для больших энергонезависимых запоминающих систем, таких как полупроводниковые файловые запоминающие системы, а также для портативных устройств, требующих применения энергонезависимой памяти.

Микросхема может работать в диапазоне напряжений питания от 2,7 до 3,6 В. Типичное время, затрачиваемое на программирование 2112-байтной страницы, составляет 200 мкс, а операция стирания 128-килобайт-ного блока может быть выполнена за 2 мс. Чтение любого байта страницы данных может быть выполнено за 30 нс. Выводы I/O служат портами ввода/вывода адреса и данных, а также входами команд. Одна страница в K9F2G08U0M состоит из 2112 байтов, а один блок — из 64 страниц. Структура страниц и блоков микросхемы флэш-памяти K9F2G08U0M показана на рис. 2.

Интерфейс Toshiba TC58NVG3D4CTG10

Микросхема TC58NVG3D4CTG10 производства Toshiba — это единое NAND электрически стираемое и программируемое постоянное запоминающее устройство (NAND E2PROM) емкостью 8 Гбит с напряжением питания

Таблица 2. Комбинации ALE/CLE

ALE CLE Выбранный регистр

0 0 Регистр данных

0 1 Регистр команд

1 0 Регистр адреса

1 1 Зарезервированная комбинация

28

ЦСП

128 К страниц (2048 блоков)

1 блок = 64 страницы (128 К + 4 К) байтов

1 страница = (2 К + 64) байтов 1 блок = (2 К + 64) байтов х 64 страницы = = (128 К +4 К) байтов 1 м/сх = (2 К + 64) байтов х 64 страницы х х 2048 блоков = 2112 Мбит

8 бит

2 кбайта

I/00-I/07

2 кбайта

64 байта

Рис. 2. Внутренняя организация микросхемы флэш-памяти K9F2G08U0M

3,3 В. Она имеет внутреннюю организацию из 4160 (4096+64) блоков по 128 страниц, каждая из которых, в свою очередь, содержит 2112 (2048+64) байтов.

Микросхема имеет два 2112-байтных статических регистра, которые позволяют пересылать считываемые и программируемые данные между регистром и массивом ячеек памяти с инкрементом в 2112 байтов. Операция стирания выполняется целыми блоками.

Подключение ЫДЫй флэш-памяти к процессору ДйБР-БРБЗх

Поскольку процессоры А08Р-БЕ53х Б1аскйп не имеют интегрированного контроллера ЫАЫБ флэш-памяти, для управления и обращения к подобной памяти используется программный драйвер. При подключении устройств ЫАЫБ памяти к процессору Б1аскйп могут применяться два подхода: с использованием выводов СРЮ или выводов БВГО.

Использование выводов вРЮ для интерфейса с ЫДЫР флэш-памятью

Первый подход заключается в формировании всех необходимых сигналов управления при помощи выводов I/O общего назначения

PF8 ► ALE

PF9 ► CLE

PF7 ► RD#

PF6 ► WR#

PF10 < R/B#

PF11 ► CS#

D7:0 < ► 1/07:0

BF533 K9F2G08U0M

Рис. 3. Использование GPIO для интерфейса с NAND флэш-памятью

(GPIO). Этот подход требует внимательного согласования необходимых задержек для соблюдения требований к времени обращения памяти.

На рис. 3 показаны связи между процессором ADSP-BF533 Blackfin и микросхемой флэш-памяти Samsung K95G08U0M.

Использование выводов EBIU для интерфейса с NAND флэш-памятью

Второй подход заключается в использовании для связи с NAND флэш-памятью модуля интерфейса внешней шины (External Bus Interface Unit, EBIU) и одного вывода GPIO. Для стандартных устройств NAND флэш-памяти необходимо, чтобы сигнал CE# сохранял достоверное значение во время операции чтения. Поэтому для сохранения совместимости как со стандартной NAND флэш-памятью, так и с NAND флэш-памятью, в которой таких требований к сигналу CE# не предъявляется (CEDC NAND, Chip Enable Don't Care NAND), этот сигнал формируется при помощи вывода GPIO. Все остальные сигналы формируются непосредственно интерфейсом EBIU.

На рис. 4 показаны связи между процессором ADSP-BF533 Blackfin и микросхемой флэш-памяти Samsung K95G08U0M.

A1 ► ALE

A2 > CLE

AOE# > RD#

AWE# > WR#

PF10 < R/B#

PF11 > CS#

D7:0 < > 1/07:0

BF533 K9F2G08U0M

Рис. 4. Использование EBIU для интерфейса с NAND флэш-памятью

К EBIU может быть подключено до четырех банков устройств памяти с различными временными характеристиками. Каждый банк, независимо от размера используемого устройства, занимает сегмент размером 1 Мбайт, поэтому разрывов между банками не будет только в том случае, если все они полностью заполнены. Синхронизация EBIU осуществляется сигналом тактовой синхронизации системы (SCLK), на частоте которого работают все устройства синхронной памяти, подключенные к процессору. Поскольку управление EBIU осуществляется автоматически контроллером асинхронной памяти процессора Blackfin, такой способ подключения NAND флэш-памяти прост и позволяет достичь оптимальной скорости обращения.

Разработка драйвера NAND флэш-памяти

Выше рассматривались два варианта построения интерфейса с микросхемами NAND флэш-памяти K9F2G08U0M производства Samsung и TC58NVG3D4CTG производства Toshiba. Этот раздел посвящен описанию базового драйвера для второго варианта и сопровождается примерами временных диаграмм для каждой из команд. В листинге 1 дан пример реализации функции стирания блока.

bool _NF_Block_Erase(unsigned int Block_Address){ unsigned char NAND_Data = 0;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

NAND_Address_Table.Value = Block_Address << 12; Write_Command(0x60);

Write_Address

(NAND_Address_Table.NAND_Address.NAND_Address_A12_A19,

NAND_Address_Table.NAND_Address.NAND_Address_A20_A27,

NAND_Address_Table.NAND_Address.NAND_Address_A28,

NAND_Address_Table.NAND_Address.NAND_Address_A0_A7,

NAND_Address_Table.NAND_Address.NAND_Address_A8_A11,

0x03);

Write_Command(0xd0);

while(!Wait_NAND_RADY());

Write_Command(0x70);

delay(50000);

NAND_Data = *pNAND_DATA_REG;

NAND_Finish(); if(NAND_Data != 0xe0)//0xc0) return false; else return true;

}

Листинг 1. Функция стирания блока

В листинге 2 приведен пример реализации функции записи страницы.

В листинге 3 приведен пример реализации функции чтения страницы.

Базовые драйверы NAND флэш-памяти строятся на низкоуровневых операциях, таких как Write_Command(), Write_Address(), Wait_NAND_RDY() и Set_CE(). В этих операциях для манипуляции микросхемами флэш-памяти задействуются сигналы GPIO и линий адреса. В листинге 4 приведена реализация функции выдачи команды.

В листинге 5 приведена реализация функции управления сигналом CE#.

В листинге 6 приведена реализация функций записи регистров адреса и команд флэш-памяти.

ЦСП

29

Рис. 8. Команда чтения ID кристалла

bool _NF_Page_Write(unsigned int Block_Address,unsigned short Page_Address,unsigned char *psrc)

{

int i;

unsigned char NAND_Data; int NAND_Addr;

NAND_Addr = (Block_Address << 12) I Page_Address; NAND_Address_Table.Value = NAND_Addr; Write_Command(0x80);

Write_Address

(NAND_Address_Table.NAND_Address.NAND_Address_A0_A7,

NAND_Address_Table.NAND_Address.NAND_Address_A8_A11,

NAND_Address_Table.NAND_Address.NAND_Address_A12_A19,

NAND_Address_Table.NAND_Address.NAND_Address_A20_A27,

NAND_Address_Table.NAND_Address.NAND_Address_A28,

0x05);

delay(100);

for(i = 0;i<DATA_NUM;i++)

*pNAND_DATA_REG = *(psrc+i);

Write_Command(0x10);

while(!Wait_NAND_RADY());

Write_Command(0x70);

delay(5000);

NAND_Data = *pNAND_DATA_REG;

NAND_Finish(); if(NAND_Data != 0xe0) return false; else

return true;

}

Листинг 2. Функция записи страницы

Для чтения из устройства флэш-памяти и записи в него может использоваться механизм DMA. В данном случае программист должен гарантировать, что одновременно

bool _NF_Page_Read(unsigned int Block_Address,unsigned short Page_Address,unsigned char *pdes)

{

int i;

Write_Command(0x00);

Write_Address

(NAND_Address_Table.NAND_Address.NAND_Address_A0_A7,

NAND_Address_Table.NAND_Address.NAND_Address_A8_A11,

NAND_Address_Table.NAND_Address.NAND_Address_A12_A19,

NAND_Address_Table.NAND_Address.NAND_Address_A20_A27,

NAND_Address_Table.NAND_Address.NAND_Address_A28,

0x04);

Write_Command(0x30); while(!Wait_NAND_RADY()); for(i = 0;i<DATA_NUM;i++)

{

delay(600);

*(pdes+i) = *pNAND_DATA_REG;

}

NAND_Finish(); return true;

}

Листинг 3. Функция чтения страницы

с этим ни к одному из остальных банков внешней памяти не будет производиться обращений, инициируемых ядром или контроллером ЭМА. Любые подобные обращения могут вызывать выдачу на устройство флэш-памяти ложных импульсов ИБ# и/или WR#, что приведет к нарушению целостности реализуемого интерфейса и возникновению непредсказуемых результатов.

void Write_Command(unsigned char command)

{

Set_CE(0);

Write_NAND_FLASH_Com(command);

}

Листинг 4. Функция Write_Command

void Set_CE(bool state)

{

if(!state)

*pFIO_FLAG_D &= ~PF11; else

*pFIO_FLAG_D I= PF11;

}

Листинг 5. Функция Set_CE

void Write_NAND_FLASH_Com(unsigned char Write_Data)

{

*pNAND_COMMAND_REG = Write_Data;

}

void Write_NAND_FLASH_Addr(unsigned char Write_Data)

{

*pNAND_ADDRESS_REG = Write_Data;

}

Листинг 6. Функции Write_NAND_FLASH_Com и Write NAND FLASH Addr

На рис. 5-8 приведены временные диаграммы для описанного интерфейса, снятые с эк рана осциллографа.

Коды, исправляющие ошибки для NAND флэш-памяти

NAND флэш-память типа SLC и MLC для обнаружения и исправления ошибок в битах требует применения кодов, исправляющих ошибки (ECC). Для этих целей хорошо подходит алгоритм Рида-Соломона, который стал стандартным методом кодирования для обоих типов NAND флэш-памяти.

При разработке драйверов чтения-записи NAND флэш-памяти был реализован и интегрирован в драйверы кодер-декодер 72-разрядного кода Рида-Соломона (464,456,4).

Файловые системы NAND флэш-памяти

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

В отличие от NOR флэш-памяти NAND флэш-память требует наличия механизма учета плохих блоков, такого как TrueFFS.

Для NAND флэш-памяти подходят уже применяемые в компьютерной индустрии файловые системы, такие как JFFS, JFFS2, FAT и т. д. Кроме того, существует единственная в своем роде файловая система, которая предназначена специально для NAND флэш-памяти и может использоваться с любой операционной системой — YAFFS (Yet Another Flash File System). В YAFFS для повышения надежности используется протоколирование коррекции ошибок и методы верификации. Эта файловая система специально разработана для работы в условиях ограничений NAND флэш-памяти и учитывает ее особенности, что позволяет достигать максимальной производительности. В последующих версиях драйвера будет добавлена реализация конкретной файловой системы для NAND флэш-памяти.

Заключение

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Несмотря на то, что процессоры ADSP-BF53x Blackfin не имеют интегрированного NAND-контроллера, разработчики могут с лег-

костью подключать NAND флэш-память типа SLC и MLC к EBIU или GPIO. Оба варианта интерфейса не требуют добавления внешней логики. Код драйвера, сопровождающий эту статью, может быть использован разработчиками при реализации драйверов для других микросхем NAND флэш-памяти. ■

Литература

1. ADSP-BF533 Blackfin Embedded Processor Data Sheet, Rev. C, May, 2006. Analog Devices, Inc.

2. MLC NAND Performance for Consumer Applications, Toshiba America Electronic Components, Inc.

3. K9F2G08U0M 256Mx8 Bit/512Mx8-Bit NAND Flash Memory Data Sheet, Rev 1.2, October 31, 2005. Samsung Electronics, Inc.

4. TC58NVG3D4CTG 8 GBIT (1Gx8 BIT/512Mx16 BIT) CMOS NAND E2PROM (Multi-Level-Cell) Data Sheet, Toshiba Semiconductor Company.

5. Application Note for NAND Flash Memory, Rev. 2.0, December 1999, Memory Product & Technology Division from Samsung Electronics, Inc.

6. ADSP-BF533 Blackfin Processor Hardware Reference, Rev. 3.2, July 2006. Analog Devices, Inc.

7. Interfacing NAND Flash Memory with ADSP-2126x SHARC Processors (EE-279), Rev. 1, November 2005. Analog Devices, Inc.

i Надоели баннеры? Вы всегда можете отключить рекламу.