|
Поиск NAND флеш контроллера |
|
|
|
May 21 2010, 09:05
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 23-03-10
Пользователь №: 56 159

|
Несколько раз на форумах поднимались топики по поиску NAND флеш контроллера на ПЛИСах. Но все безуспешно. Кроме сигнального интерфейса к флешкам ничего не могу нарыть. Очень нужен контроллер NAND с буферизацией данных в памяти ПЛИСа, с wishbone интерфейсом. Желательно на Verilog'е. В просторах сети можно несколько платных корок. А вот с бесплатными - беда, на Opencores только началась разработка такого проекта, результатов пока нет. Кто-нибудь может поделиться своими или чужими разработками? Или указать, где можно найти. Очень буду признателен.
--------------------
"Кто хочет работать — ищет средства, кто не хочет — причины"
|
|
|
|
|
May 21 2010, 09:49
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 23-03-10
Пользователь №: 56 159

|
Цитата(DmitryR @ May 21 2010, 13:31)  Поделиться не могу, но могу сказать: это несложно сделать. У нас его сделал один человек за пару месяцев, еще и с Ридом-Соломоном вместо ECC. Я думаю что смогу это тоже написать за 2-3 месяца. Но времени как всегда в обрез  На сайте Микрона были исходники, но они куда-то пропали. Может у кого-то есть эти исходники?
--------------------
"Кто хочет работать — ищет средства, кто не хочет — причины"
|
|
|
|
|
May 21 2010, 11:19
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 23-03-10
Пользователь №: 56 159

|
Цитата(DmitryR @ May 21 2010, 14:04)  Где-то были, но эти исходники контроллером не являются. DmitryR, а что это тогда? Как бе в описании у них полноценный контроллер с буферной памятью и набором управляющих регистров. Или я не прав? Я имею ввиду вот этот http://www.micron.com/document_download/?documentId=4314. Так же есть отдельный документ по ECC. В моем проекте мне не нужно производить запись и чтение из FPGA. Этим будет заниматься хост, мне только нужно предоставить ему доступ к флеш памяти.
--------------------
"Кто хочет работать — ищет средства, кто не хочет — причины"
|
|
|
|
|
May 21 2010, 11:56
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 23-03-10
Пользователь №: 56 159

|
Цитата(Kuzmi4 @ May 21 2010, 15:31)  Занимательный документик а что вы понимаете под ?? Имеется ввиду, что стирание/запись/чтение/bad block коррекцию производит хост девайс через доступ к ПЛИС. Как будет расчитываться ECC еще не определился, в смысле программно или аппаратно. По возможности лучше бы сразу иметь блок со встроенным блоком контроля и коррекцией ошибок. Цитата(DmitryR @ May 21 2010, 15:47)  Смех там, мост из SRAM интерфейса в NAND. То есть скорость будет никакая, wear leveling неясно как делать, etc. Смотрите сами, короче. Спасибо, DmitryR. Единственно с VHDL у меня напряг, а придеться скорее всего дорабатывать под свои нужды. Посмотрю исходники, если не поможет буду рыть дальше.
--------------------
"Кто хочет работать — ищет средства, кто не хочет — причины"
|
|
|
|
|
May 21 2010, 13:21
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 23-03-10
Пользователь №: 56 159

|
2 DmitryR:
Пока разбираюсь с исходниками. А вы в курсе, поддерживает ли микроновский контроллер burst mode флешей для последовательного чтения/записи данных?
--------------------
"Кто хочет работать — ищет средства, кто не хочет — причины"
|
|
|
|
|
May 24 2010, 08:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(demonizer @ May 21 2010, 17:21)  А вы в курсе, поддерживает ли микроновский контроллер burst mode флешей для последовательного чтения/записи данных? Я не в курсе, но практически уверен, что нет. Вобщем я очень быстро пришел к выводу, что написать самому человеческий контроллер будет быстрее, чем копаться в этом. Например, если бы я дал такой (микроновский) контроллер программисту - мне пришлось бы написать талмуд о том, что там можно делать и чего нельзя (очевидно например что полностью случайный доступ нельзя делать). Это вообще глупо на мой взгляд: делать контроллеру интерфейс Random Access Memory при том, что access там совершенно не random. Это вводит всех в заблуждение и чревато.
|
|
|
|
|
Jun 2 2010, 07:47
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 23-03-10
Пользователь №: 56 159

|
Цитата(DmitryR @ May 24 2010, 12:35)  Я не в курсе, но практически уверен, что нет. Вобщем я очень быстро пришел к выводу, что написать самому человеческий контроллер будет быстрее, чем копаться в этом. Например, если бы я дал такой (микроновский) контроллер программисту - мне пришлось бы написать талмуд о том, что там можно делать и чего нельзя (очевидно например что полностью случайный доступ нельзя делать). Это вообще глупо на мой взгляд: делать контроллеру интерфейс Random Access Memory при том, что access там совершенно не random. Это вводит всех в заблуждение и чревато. По поводу интерфейса Random Access Memory смею не согласиться. В данном контроллере используется стандартная схема работы с NAND флеш по следующей логике: запись команды во флеш->чтение/запись данных во внутренний буфер->извлечение данных из внутреннего буфера по SRAM интерфейсу. Так что SRAM интерфейс нужен только для обращения к регистрам и буферам данных контроллера, а не напрямую к NAND. А это как раз то что мне нужно, так как я не представляю как по другому сделать скоростной DMA доступ к флеш памяти, минуя копирование данных во внутренний буфер. Цитата(Victor® @ May 24 2010, 13:04)  А может посмотрите в сторону e.MMC? http://www.numonyx.com/en-US/MemoryProduct...Pages/eMMC.aspxНапишите контроллер для MMC - получите более универсальную штуку, IMHO Я рассматривал вариант с самсунговской OneNAND памятью - это контроллер+NAND массив в одном корпусе. Здесь принцип тот же, только использован MultimediaCard интерфейс. Спасибо за совет, буду иметь ввиду, что у Numonix есть такой чип. Я пока еще мучаю контроллер от Мicron. Перевел код на Verilog с помощью бесплатной утилиты под Linux, кое-что пришлось править руками. Написал тестбенч для контроллера. Короче такая проблема: на VHDL все работает, в Veriloge работать отказывается, ошибка - бесконечный цикл симуляции. В списках чувствительности в VHDL процессов в FSM есть перекрестные ссылки, причем процессы асинхронные, нет ни rising_edge ни falling_edge условий. Объясните почему в VHDL это работает, а в верилоге нет? Еще есть одно подозрение, используется tristate цепь данных, причем эта цепь есть в списке чувствительности одного из процессов. В VHDL данные в цепь назначаются внутри другого процесса. Я пробовал заменить эту цепь assign'ом с условным оператором с записью Z-состояния, второй вариант с использованием force, release внутри процесса. Оба варианта все равно ничего не дают. прикладываю FSM на верилоге. Похоже симуляция зацикливается в процессах COMBtoggleFSM и combFSMmain при стейте STprogrampage. Там кое-что уже закомментарено, это результаты моих экспериментов  .
st2FSM.v ( 38.78 килобайт )
Кол-во скачиваний: 407
--------------------
"Кто хочет работать — ищет средства, кто не хочет — причины"
|
|
|
|
|
Jun 2 2010, 10:33
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(demonizer @ Jun 2 2010, 11:47)  А это как раз то что мне нужно, так как я не представляю как по другому сделать скоростной DMA доступ к флеш памяти, минуя копирование данных во внутренний буфер. Никак, правда, но не SRAM же интерфейс делать к буферу? В этих случаях используют FIFO, причем естественно раздельные на чтение и на запись. Цитата(demonizer @ Jun 2 2010, 11:47)  Перевел код на Verilog Зачем?
|
|
|
|
|
Jun 2 2010, 11:19
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 23-03-10
Пользователь №: 56 159

|
Цитата(DmitryR @ Jun 2 2010, 14:33)  Никак, правда, но не SRAM же интерфейс делать к буферу? В этих случаях используют FIFO, причем естественно раздельные на чтение и на запись.
Зачем? Я предполагал такой ответ. Может с FIFO будет лучше. Но мне SRAM интерфейс несколько удобней использовать. Перевел на верилог для того чтобы было удобно дорабатывать, я пока еще не особо разбираюсь в VHDL. DmitryR, в чем может быть причина таких проблем? DmitriyR, можно ли как-то в ModelSim'е посмотреть параметр из списка чувствительности, который вызвал исполнение always блока?
--------------------
"Кто хочет работать — ищет средства, кто не хочет — причины"
|
|
|
|
|
Jun 2 2010, 12:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(demonizer @ Jun 2 2010, 15:19)  Перевел на верилог для того чтобы было удобно дорабатывать, я пока еще не особо разбираюсь в VHDL. DmitryR, в чем может быть причина таких проблем? В кривизне транслятора, конечно же. Цитата(demonizer @ Jun 2 2010, 15:19)  DmitriyR, можно ли как-то в ModelSim'е посмотреть параметр из списка чувствительности, который вызвал исполнение always блока? Может и можно, но не нужно. Потому что в синтезе списки чувствительности не поддерживаются все равно, и если у вас дизайн зависим от списков чувствительности он в железе работать не будет.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|