Цитата(InvisibleFed @ May 24 2007, 09:22)

Уже там.
Кстати. По какому интерфейсу у Вас подключена карта (SDIO или SPI)? Интерфейс сами писали или уже на циклонах был готовый? Если сами - я все понимаю, не поделитесь ли исходниками? Клянусь, что буду использовать их только в учебных целях - препод дал задание организовать обмен Amtel FPSLIC <-> SD. Причем надо интерфейс на программируемой логике реализовать, а не использовать готовый. Времени маловато просто.
На сколько я успел разобраться, подключенна она по SPI. А вот поделиться нечем - ничего, кроме идей как оно должно быть, нету.
Цитата(Victor @ May 24 2007, 10:00)

Математика такая:
По спецификации карточка работает на 25МГц -> на 500мкс - 12500 тактов.
(если High Speed - 50 МГц, множь на 2

)
1кб - 8192 бит полезной нагрузки. + около 120-150 тактов на команду, ответ карты и прочий "обвес".
(NB! это только если карта поддерживает 1кб размер блока, если же блок 512 байт, то читай дальше

).
Так что в идеале "проглотить" карточка успеет. Только вот после передачи блока карта "задумается" достаточно надолго - зависит от скорости записи карты, и пока не запишется блок, никаких операций не произвести.
Оппа. А на сколько она может задуматься?
Правильно ли я понимаю, что если я возьму какую-нить карточку Hi-speed с блоком 1024, то у меня уйдет на это дело порядка 160мкс? Если не хайспид, то 320? Кстати, не знаю, принципиально ли это, но FAT делать на карточке не планируется - совместимость со стандартными ридерами не предполагается, там отдельное устройство будет. Хватит ли оставшегося времени карточке, чтоб переварить эти данные? Если не хватит, то какое решение можете посоветовать в рамках моего проекта?
Описание проекта:
Задача такая - к нам поступают данные в параллельном 8-ми битном коде. Данные эти поступают со скоростью 5MHz, но тут есть одна особенность. Данные поступают пакетами по 2700 байт, однако полезных из них только 1024. Полезные байты сопровождаются разрешающим окном на отдельной ножке, причем изначально нельзя сказать где находятся эти байты среди всего пакета. На данный момент эти 1024 полезных символов идут подряд, но, в перспективе, это условие может нарушиться. Итого, длинна одного пакета - 2700*200нс=540мкс. Между пакетами есть пауза. Фактически она может достигать очень больших величин, вплоть до размера пакета, но в предельном случае можно гарантировать минимальную длительность паузы 2000нс. Итого, считаем пакет+пауза = 542 мкс. Эти данные нужно скинуть на карточку, а в качестве карточки была выбранна SD. Изначально планировалось эти данные кидать в SDRAM, а уже потом, когда пакеты кончатся (ориентировочное количество было - 2048 пакетов), закинуть на карту. Но тут заказчик выразил пожелание на такие количества пакетов подряд, что памяти надо под несколько сотен мегов. Была идея кидать пакеты впрямую на карту, в связи с чем вопрос и возник.
Я планировал сделать так: две фифошки по килобайту, пакеты пишутся в них по очереди. Соответственно, пока пишется в одну, из второй данные гонятся на карточку, потом наоборот - пишется в другую, а данные гонятся из первой. И так пока пакеты не кончатся. Так как опыта в проектирование циврофых систем на ПЛИС не имею (только микроконтроллеры), то даже не знаю, правильный ли подход или нет.
Сообщение отредактировал RHnd - May 24 2007, 19:22