СПОСОБ ПРОГРАММИРОВАНИЯ ИМС FLASH-ПАМЯТИ ТИПА NAND И УСТРОЙСТВО ДЛЯ ЕГО РЕАЛИЗАЦИИ
METHOD OF PROGRAMMING NAND FLASH MEMORY IC AND APPARATUS FOR REALISING SAID METHOD

Изобретение относится к вычислительной технике и предназначено для обеспечения доступа устройства управления, поддерживающего протокол USB 2.0, к данным, хранящимся в интегральных микросхемах (ИМС) flash-памяти типа NAND.
Задачи чтения, стирания и записи данных в ИМС flash-памяти типа NAND обычно решают с помощью универсальных программаторов, таких как Beeprog фирмы «Elnec», Тритон ООО «ТЦ Тритон» и т.д.
Основным недостатком таких устройств является ограниченный список поддерживаемых ИМС. Пользователю для операций с новыми микросхемами или микросхемами, не входящими в список поддерживаемых, необходимо ожидать выпуска дополнительных программных модулей к программатору или искать другие программаторы.
Другим вариантом решения этой задачи является использование специализированных устройств типа «РС-3000 Flash» фирмы «ACELab» или «NAND Flash Reader» фирмы «Софт-Центр». Данные устройства рассчитаны на работу только с ИМС flash-памяти типа NAND, поэтому имеют более широкий, но также ограниченный список поддерживаемых микросхем.
Основным недостатком приведенных аналогов является отсутствие гибкого интерфейса связи с ИМС flash-памяти типа NAND, позволяющего пользователю быстро перенастроить параметры обмена данными без применения дополнительных программных и/или аппаратных средств.
Наиболее близкими по технической сущности к заявляемому изобретению являются выбранный в качестве прототипа способ и устройство (патент США №6985778 В2, G05B 11/01 от 10 января 2006 г.), позволяющие связывать центральный процессор и ИМС flash-памяти типа NAND. Устройство включает набор регистров, внутреннюю память, блок flash-интерфейса и конечный автомат. Набор регистров получает и хранит команды управления операциями с ИМС flash-памяти типа NAND от центрального процессора, а также оперативную информацию, необходимую для выполнения команд. Блок flash-интерфейса вырабатывает сигналы управления для ИМС flash-памяти типа NAND, выводит команды, оперативную информацию и данные центрального процессора на линии ввода/вывода данных ИМС flash-памяти типа NAND. Конечный автомат извлекает команду и оперативную информацию из набора регистров и управляет внутренней памятью и блоком flash-интерфейса при выполнении команды. Способ позволяет выполнять операции чтения данных, записи данных, стирания данных, проверку блока на наличие сбоев, пометку блока, имеющего сбои.
Данный способ не поддерживает варьирование параметров протокола обмена данными без изменения алгоритма функционирования. Отсутствует реализация некоторых функций, таких как чтение идентификационного номера ИМС flash-памяти типа NAND.
Устройство не поддерживает протокол обмена данными с ПЭВМ и не позволяет варьировать физические параметры протокола обмена данными с ИМС flash-памяти типа NAND, без преобразования блоков устройства.
ИМС flash-памяти типа NAND производятся различными производителями, такими как Samsung, Toshiba, Intel, Micron, SunDisk, Renesas, Hynix и т.д. Анализ технической документации ИМС flash-памяти типа NAND показал, что интерфейс обмена данными у всех производителей примерно одинаковый. Но несмотря на это существует ряд различий, которые необходимо учитывать при обеспечении доступа к данным. ИМС flash-памяти типа NAND могут различаться по структуре организации памяти. Основными параметрами организации памяти являются: размер хранимых данных в странице, размер данных дополнительной области страницы, количество страниц в блоке, количество блоков в ИМС. В протоколе обмена может применяться различное количество циклов установки COL- и ROW-адреса. ИМС flash-памяти типа NAND могут различаться размером шины данных, рабочим напряжением и скоростью обмена данными.
Как правило, устройства программирования ИМС представляют собой интерфейсные устройства, обеспечивающие связь между ПЭВМ по протоколу USB и ИМС по соответствующему протоколу.
Целью изобретения является расширение функциональных возможностей программаторов ИМС flash-памяти типа NAND путем создания гибкого, настраиваемого пользователем интерфейса связи с ИМС flash-памяти типа NAND, обеспечивающего возможность работы со всеми ИМС flash-памяти типа NAND, а также за счет добавления функций чтения идентификационного номера ИМС, чтения статуса ИМС и функции сброса ИМС.
Цель достигается тем, что в известном способе, заключающемся в том, что во время старта производят сброс устройства, выполняют инициализацию устройства, ожидают ввода команды, при команде чтения данных выполняют первый цикл команды чтения, производят необходимое количество циклов установки адреса страницы, ожидают сигнала готовности ИМС flash-памяти типа NAND, выполняют заданное количество циклов чтения, при команде записи данных выполняют первый цикл команды записи, производят необходимое количество циклов установки адреса страницы, выполняют заданное количество циклов записи данных, выполняют второй цикл команды записи, ожидают сигнала готовности ИМС flash-памяти типа NAND, при команде стирания данных выполняют первый цикл команды стирания, производят необходимое количество циклов установки адреса блока, выполняют второй цикл команды стирания, ожидают сигнала готовности ИМС flash-памяти типа NAND, согласно изобретению после приема команды выполняют извлечение параметров команды, при команде чтения данных, после выполнения заданного количества циклов установки адреса, выполняют второй цикл команды чтения, а после выполнения заданного количества циклов чтения данных производят инкрементирование адреса страницы и выполняют проверку равенства количества прочитанных страниц с заданным количеством, если это равенство не достигнуто, то переходят к этапу выполнения первого цикла команды чтения, если равенство достигнуто, то переходят в цикл ожидания приема следующей команды, при команде записи после получения сигнала готовности ИМС flash-памяти типа NAND производят инкрементирование адреса страницы и выполняют проверку равенства количества записанных страниц с заданным количеством, если это равенство не достигнуто, то переходят к этапу выполнения первого цикла команды записи, если равенство достигнуто, то переходят в цикл ожидания приема следующей команды, при команде чтения идентификационного номера выполняют цикл команды чтения ID-номера, выполняют цикл установки адреса со значением «00h», производят чтение пяти байт данных и переходят в цикл ожидания приема следующей команды, при команде чтения статуса ИМС выполняют цикл команды чтения статуса, производят чтение одного байта статуса и переходят в цикл ожидания приема следующей команды, при команде сброса ИМС flash-памяти типа NAND выполняют цикл команды сброса, производят задержку на одну миллисекунду и переходят в цикл ожидания приема следующей команды, при команде установки параметров ИМС выполняют сохранение параметров ИМС в регистре параметров flash-интерфейса, производят применение этих параметров и переходят в цикл ожидания приема следующей команды.
В зависимости от параметров flash-интерфейса при выполнении заданного количества циклов установки адреса страницы выполняют первый цикл установки COL-адреса, если количество байт COL-адреса превышает один байт, то выполняют второй цикл установки COL-адреса, выполняют первый цикл установки ROW-адреса, если количество байт ROW-адреса превышает один байт, то выполняют второй цикл установки ROW-адреса, если количество байт ROW-адреса превышает два байта, то выполняют третий цикл установки ROW-адреса.
В зависимости от параметров flash-интерфейса, при выполнении заданного количества циклов установки адреса блока, выполняют первый цикл установки ROW-адреса, если количество байт ROW-адреса превышает один байт, то выполняют второй цикл установки ROW-адреса, если количество байт ROW-адреса превышает два байта, то выполняют третий цикл установки ROW-адреса.
При выполнении заданного количества циклов чтения данных выполняют цикл чтения данных, проверяют равенство количества байт данных страницы, хранящихся в параметрах flash-интерфейса, с количеством прочитанных байт, если условие не выполняется, то переходят к выполнению цикла чтения следующих данных.
При выполнении заданного количества циклов записи данных выполняют цикл записи данных, проверяют равенство количества байт данных страницы, хранящихся в параметрах flash-интерфейса, с количеством записанных байт, если условие не выполняется, то переходят к выполнению цикла записи следующих данных.
Цель достигается тем, что в известное устройство, содержащее регистр параметров команды, блок flash-интерфейса, конечный автомат управления, согласно изобретению введены контроллер USB-FIFO и регистр параметров flash-интерфейса, причем первый выход контроллера USB-FIFO соединен с первым входом блока flash-интерфейса, второй выход контроллера USB-FIFO соединен с первым входом конечного автомата управления, третий выход контроллера USB-FIFO соединен с третьим входом регистра параметров команды, четвертый выход контроллера USB-FIFO соединен с первым входом регистра параметров flash-интерфейса, первый выход конечного автомата управления соединен со вторым входом контроллера USB-FIFO, второй выход конечного автомата управления соединен с первым входом регистра параметров команды, третий выход конечного автомата управления соединен со вторым входом блока flash-интерфейса, четвертый выход конечного автомата управления соединен со вторым входом регистра параметров flash-интерфейса, первый выход блока flash-интерфейса соединен с первым входом контроллера USB-FIFO, второй выход блока flash-интерфейса соединен с третьим входом конечного автомата управления, третий выход блока flash-интерфейса соединен со вторым входом регистра параметров команды, первый выход регистра параметров команды соединен со вторым входом конечного автомата управления, второй выход регистра параметров команды соединен с третьим входом блока flash-интерфейса, первый выход регистра параметров flash-интерфейса соединен с четвертым входом блока flash-интерфейса.
Блок flash-интерфейса состоит из формирователя сигналов и конечного автомата операций, причем выход конечного автомата операций соединен с входом формирователя сигналов, а выход формирователя сигналов соединен с входом конечного автомата операций.
Предлагаемый способ отличается новыми операциями чтения идентификационного номера ИМС, чтения статуса ИМС, сброса ИМС, установки параметров протокола обмена данными с ИМС, а устройство - введенными новыми блоками контроллера USB-FIFO и регистра параметров flash-интерфейса с соответствующими связями. Таким образом, изобретение соответствует критерию «новизны».
Изобретение соответствует критерию «изобретательский уровень», так как оно для специалиста явным образом не следует из уровня техники.
Изобретение может быть использовано в области электроники для создания программаторов ИМС flash-памяти типа NAND с гибким, настраиваемым пользователем интерфейсом связи с ИМС flash-памяти типа NAND и соответствует критерию «промышленная применимость».
На фиг.1 и фиг.2 изображена блок-схема алгоритма программирования ИМС flash-памяти типа NAND.
На фиг.3 изображена структурно-функциональная схема устройства, реализующего предлагаемый способ.
Способ состоит из выполнения следующих операций:
- инициализация устройства (фиг.1а),
- прием команды (фиг.1а),
- чтение данных ИМС flash-памяти типа NAND (фиг.1б),
- запись данных ИМС flash-памяти типа NAND (фиг.1в),
- стирание данных ИМС flash-памяти типа NAND (фиг.1г),
- чтение идентификационного номера ИМС flash-памяти типа NAND (фиг.1д),
- чтение статуса ИМС flash-памяти типа NAND (фиг.1е),
- сброс ИМС flash-памяти типа NAND (фиг.1ж),
- установка параметров протокола обмена данными с ИМС flash-памяти типа NAND (фиг.1з).
Устройство (фиг.3) содержит контроллер USB-FIFO 1, регистр параметров команды 2, регистр параметров flash-интерфейса 3, конечный автомат управления 4, блок flash-интерфейса 5.
Первый выход контроллера USB-FIFO 1 соединен с первым входом блока flash-интерфейса 5, второй выход контроллера USB-FIFO 1 соединен с первым входом конечного автомата управления 4, третий выход контроллера USB-FIFO 1 соединен с третьим входом регистра параметров команды 2, четвертый выход контроллера USB-FIFO 1 соединен с первым входом регистра параметров flash-интерфейса 3, первый выход конечного автомата управления 4 соединен со вторым входом контроллера USB-FIFO 1, второй выход конечного автомата управления 4 соединен с первым входом регистра параметров команды 2, третий выход конечного автомата управления 4 соединен со вторым входом блока flash-интерфейса 5, четвертый выход конечного автомата управления 4 соединен со вторым входом регистра параметров flash-интерфейса 3, первый выход блока flash-интерфейса 5 соединен с первым входом контроллера USB-FIFO 1, второй выход блока flash-интерфейса 5 соединен с третьим входом конечного автомата управления 4, третий выход блока flash-интерфейса 5 соединен со вторым входом регистра параметров команды 2, первый выход регистра параметров команды 2 соединен со вторым входом конечного автомата управления 4, второй выход регистра параметров команды 2 соединен с третьим входом блока flash-интерфейса 5, первый выход регистра параметров flash-интерфейса 3 соединен с четвертым входом блока flash-интерфейса 5.
Блок flash-интерфейса 5 содержит формирователь сигналов 6 и конечный автомат операций 7.
Выход конечного автомата операций 7 соединен с входом формирователя сигналов 6, а выход формирователя сигналов 6 соединен с входом конечного автомата операций 7.
Контроллер USB-FIFO 1 предназначен для обмена данными с устройством управления по протоколу USB 2.0.
Регистр параметров команды 2 содержит следующие данные: тип команды, количество страниц участвующих в операции, адрес начальной страницы.
Регистр параметров flash-интерфейса 3 содержит следующие данные: скорость обмена данными, рабочее напряжение, размер шины данных, номер текущего кристалла, размер страницы, размер COL адреса, размер ROW адреса, значение первого цикла команды чтения данных, значение второго цикла команды чтения данных, значение первого цикла команды записи данных, значение второго цикла команды записи данных, значение первого цикла команды стирания данных, значение второго цикла команды стирания данных, значение команды чтения ID номера, значение команды чтения статуса, значение команды сброса ИМС.
Блок flash-интерфейса 5 предназначен для формирования последовательности сигналов, соответствующей протоколу обмена данными с ИМС flash-памяти типа NAND, и для выполнения операций с данными, хранящимися в ИМС flash-памяти типа NAND.
Конечный автомат управления 4 осуществляет управление и синхронизацию работы всех остальных блоков.
Сущность способа заключается в следующем.
Включением питания производят сброс устройства (фиг.1а). Выполняют инициализацию устройства, устанавливают заданные по умолчанию параметры. Переходят в состояние ожидания команды. При получении команды из нее извлекают тип и параметры, сохраняют их в регистре параметров команды и переходят в процедуры выполнения команды.
При команде чтения данных (фиг.1б) выполняют первый цикл команды чтения данных со значением, заданным в регистре параметров flash-интерфейса. Выполняют заданное количество циклов установки адреса страницы (фиг.2а), т.е. выполняют первый цикл установки COL-адреса, если количество байт COL-адреса превышает один байт, то выполняют второй цикл установки COL-адреса, выполняют первый цикл установки ROW-адреса, если количество байт ROW-адреса превышает один байт, то выполняют второй цикл установки ROW-адреса, если количество байт ROW-адреса превышает два байта, то выполняют третий цикл установки ROW-адреса. Выполняют второй цикл команды чтения данных со значением, заданным в регистре параметров flash-интерфейса. Переходят в режим ожидания сигнала готовности ИМС flash-памяти типа NAND. При сигнале R/B=1, переходят к выполнению заданного количества циклов чтения данных (фиг.2в). Выполняют цикл чтения данных, проверяют равенство количества байт данных страницы, хранящихся в регистре параметров flash-интерфейса, с количеством прочитанных байт, если условие не выполняется, то переходят к выполнению цикла чтения следующих данных. При равенстве количества байт данных страницы с количеством прочитанных байт переходят к инкрементированию адреса страницы. Выполняют проверку количества прочитанных страниц с заданным количеством в регистре параметров flash-интерфейса. Если количество прочитанных страниц меньше заданного количества, то переходят к выполнению первого цикла команды чтения данных, иначе переходят в состояние ожидания приема следующей команды.
При команде записи данных (фиг.1в) выполняют первый цикл команды записи данных со значением, заданным в регистре параметров flash-интерфейса. Выполняют заданное количество циклов установки адреса страницы (фиг.2а), т.е. выполняют первый цикл установки COL-адреса, если количество байт COL-адреса превышает один байт, то выполняют второй цикл установки COL-адреса, выполняют первый цикл установки ROW-адреса, если количество байт ROW-адреса превышает один байт, то выполняют второй цикл установки ROW-адреса, если количество байт ROW-адреса превышает два байта, то выполняют третий цикл установки ROW-адреса. Выполняют заданное количество циклов записи данных (фиг.2г). Выполняют цикл записи данных, проверяют равенство количества байт данных страницы, хранящихся в регистре параметров flash-интерфейса, с количеством записанных байт, если условие не выполняется, то переходят к выполнению цикла записи следующих данных. При равенстве количества байт данных страницы с количеством записанных байт переходят к инкрементированию адреса страницы. Выполняют второй цикл команды записи данных со значением, заданным в регистре параметров flash-интерфейса. Переходят в режим ожидания сигнала готовности ИМС flash-памяти типа NAND. При сигнале R/B=1, выполняют проверку количества записанных страниц с заданным количеством в регистре параметров flash-интерфейса. Если количество записанных страниц меньше заданного количества, то переходят к выполнению первого цикла команды записи данных, иначе переходят в состояние ожидания приема следующей команды.
При команде стирания данных (фиг.1г) выполняют первый цикл команды стирания данных со значением, заданным в регистре параметров flash-интерфейса. Выполняют заданное количество циклов установки адреса блока (фиг.2б), т.е. выполняют первый цикл установки ROW-адреса, если количество байт ROW-адреса превышает один байт, то выполняют второй цикл установки ROW-адреса, если количество байт ROW-адреса превышает два байта, то выполняют третий цикл установки ROW-адреса. Выполняют второй цикл команды стирания данных со значением, заданным в регистре параметров flash-интерфейса. Переходят в режим ожидания сигнала готовности ИМС flash-памяти типа NAND. При сигнале R/B=1, переходят в состояние ожидания приема следующей команды.
При команде чтения идентификационного номера ИМС flash-памяти типа NAND (фиг.1д) выполняют цикл команды чтения ID номера со значением, заданным в регистре параметров flash-интерфейса. Выполняют цикл установки адреса со значением «00h». Производят чтение пяти байт данных и переходят в состояние ожидания приема следующей команды.
При команде чтения статуса ИМС flash-памяти типа NAND (фиг.1е) выполняют цикл команды чтения статуса со значением, заданным в регистре параметров flash-интерфейса. Производят чтение одного байта статуса и переходят в состояние ожидания приема следующей команды.
При команде сброса ИМС flash-памяти типа NAND (фиг.1ж) выполняют цикл команды сброса со значением, заданным в регистре параметров flash-интерфейса. Производят задержку на одну миллисекунду и переходят в состояние ожидания приема следующей команды.
При команде установки параметров ИМС flash-памяти типа NAND (фиг.1з) выполняют сохранение параметров ИМС в регистре параметров flash-интерфейса. Производят применение этих параметров и переходят в цикл ожидания приема следующей команды.
Устройство работает следующим образом.
Контроллер USB-FIFO 1 принимает команду и сопутствующие данные от устройства управления по протоколу USB 2.0 и записывает их во внутренний буфер, выставляя сигнал наличия данных. Конечный автомат управления 4 анализирует этот сигнал и вырабатывает управляющие сигналы для записи типа команды и ее параметров из буфера контроллера USB-FIFO 1 в регистр параметров команды 2. В зависимости от типа команды конечный автомат управления 4 вырабатывает управляющие сигналы для регистра параметров команды 2, регистра параметров flash-интерфейса 3 и конечного автомата операций 7.
Алгоритм работы конечного автомата управления 4 соответствует блок-схеме, изображенной на фигуре 3а и 3з. При приеме команды установки параметров ИМС flash-памяти типа NAND конечный автомат управления 4 вырабатывает управляющие сигналы для записи параметров flash-интерфейса из буфера контроллера USB-FIFO 1 в регистр параметров flash-интерфейса 3. При приеме других команд конечный автомат управления 4 запускает конечный автомат операций 7 и ожидает завершения выполнения операции.
Алгоритм работы конечного автомата операций 7 соответствует блок-схеме, изображенной на фигурах 3б-3ж и 4. Входными параметрами работы конечного автомата операций 7 являются данные, записанные в регистре параметров команды 2, регистре параметров flash-интерфейса 3 и буфере контроллера USB-FIFO 1. Конечный автомат операций 7 в зависимости от типа операции вырабатывает последовательность сигналов, которая при помощи формирователя сигналов 6 преобразуется в последовательность сигналов, соответствующую протоколу обмена данными с ИМС flash-памяти типа NAND. Данные, полученные от ИМС flash-памяти типа NAND через формирователь сигналов 6, передаются конечным автоматом операций 7 в буфер контроллера USB-FIFO 1 для последующей передачи к устройству управления.
Контроллер USB-FIFO может быть выполнен на микроконтроллере CY7C68013A фирмы Cypress. Регистр параметров команды, регистр параметров flash-интерфейса, конечный автомат управления и конечный автомат операций могут быть выполнены на базе одной ПЛИС, например, X3S500E фирмы Xilinx. Формирователь сигналов может быть выполнен при помощи шинных формирователей 74LV244 фирмы Philips и микроконтроллера М30879 фирмы Renesas, содержащего модули АЦП и ГДАП.
Изобретение обеспечило возможность пользователю самостоятельно адаптировать устройство для работы с различными ИМС flash-памяти типа NAND, а также добавило функции чтения идентификационного номера ИМС, чтения статуса ИМС и функцию сброса ИМС flash-памяти типа NAND.