Полная версия этой страницы:
Снова про FT245
Что необходимо:
Необходимо принимать параллельные данные с периодичностью 3 мкс (333 КБайт/сек). Объем данных в каждом пакете 5200 байт.
Ситуация:
Читаю не полный пакет. Не хватает по разному от 50 до 300 байт.
Что делал:
Становился частотомером на синхро - количество импульсов полное (5200). Становлюсь на TXE - количество импульсов такое же сколько читаю (не хватает).
FTDI заявило скорость 1 МБайт, мне же надо 333К. В чем дело. Читал аналогичную тему на этой странице про длительность TXE (4 с хреном мсек) - может из-за этого. Кстати подключал два аналогичных устройства на один информационный канал - читает разное количество. При приеме сигнал TXE не отслеживаю, все равно не могу ограничить скорость информационного канала.
Help me: Может кто сталкивался и победил такую фигню, или надо реализовывать другие схемные решения.
Крик души: FTDI-козлы.
В дополнение: Проверил длительность TXE - у меня все в норме - около 200 нс. Неужели происходит переполнение буфера в микрухе (384 байта).
jorikdima
Sep 26 2007, 13:36
а не М
бит ли они обещают?
Нет, МБайт. Ведь FT245-преобразователь паралельного кода в USB.
-=Space=-
Sep 26 2007, 16:39
Отвечу и здесь
Цитата(zpv78 @ Sep 26 2007, 16:21)

При приеме сигнал TXE не отслеживаю ....
вот корень проблемы!
нельзя передать 5200 байт за один юзби-фрейм, он поделется на 64 байтовые Bulk транзакции.
Между транзакциями , если писать на тойже скорости что и всегдавозможно переполнение FIFO в FTшке
и она об этом сообщает удерживая TXE дольше чем обычно.
Спасибо, я в принципе догадывался, что дело в переполнении буфера. Вот только я не имею возможности корректировать информационный поток, а вынужден подстраиваться под него. Чего блин делать, пока не знаю. Еще раз спрсибо, буду думать. Пока.
Цитата(zpv78 @ Sep 26 2007, 21:03)

Спасибо, я в принципе догадывался, что дело в переполнении буфера. Вот только я не имею возможности корректировать информационный поток, а вынужден подстраиваться под него. Чего блин делать, пока не знаю. Еще раз спрсибо, буду думать. Пока.
Поставить двухпортовое FIFO в разрыв между FT245 и входом потока.
Проверил логическим анализатором поведение TXE, действительно после приема 4300 байт TXE затыкается на 600 мкс (скидывает переполненный буфер), в этот момент я теряю информацию. Решение об аппаратном FIFO буфере возникло сразу, вот только я не слышал таких микрух. Может кто знает что нибудь подобное, подскажите, пожалуйста. Я пока буду искать.
Спасибо за помощь.
Например что-нибудь из серий:
IDT720x
CY7C46x
Спасибо, посмотрю. Успехов.
_ANDREW
Oct 4 2007, 11:22
не так давно делал вводилку на ft245, (не доделал появились дугие задачи..). Так вот , ни о каком МБ/сек который они обещают нет и речи. сделал аналогично предложенному решению (промежуточный буфер), а именно сначала сделал на плиске и sram пробывал сделать пин-понг буфер, но так как sram была одна там возникали проблемы с арбитром шины. сейчас думаю либо асинхронный fifo внутриплисочный прикутить, либо арбитра придумывать...да, максимальная скорость, которую я добился ~2,3 - 2,5 Мбит/сек...
-=Space=-
Oct 4 2007, 14:09
ну тут дело не в микрухе.
возможно хост не успевает принять данные?
или плис не успевает выдавать?
у меня получилось 120Гц пакетами по ~3600 байт
это уже 3,4Мбит, при этом загрузка шины FTшки <50%
но увиличивать скорость дальше мне было сложно, поэтому ограничился 120 Гц
Сейчас сделано так:
в плиске fifo на 16 байт, пакеты формирует embeded проц pblaze,
по 14 байт кидает в fifo
по опустошению fifo генерируется прерывание процу, по которому
закидывается в fifo новый блок из 14 байт.
fifo высвобождается автоматически по спаду txe.
Я достигал на прием скорости 500кбайт/сек на объемах в несколько мегабайт, причем ограничивалась скорость возможностями моего микропроцессора, а не FTDI. Осциллографом хорошо видно, что процессор читает готовность FTDI, а она всегда (почти) готова. Потом читает байт данных и т.д. То есть случаев подтормаживания со стороны FTDI очень мало, фактически только между заполнением его FIFO. Правда, я использовал на стороне PC не драйвера виртуального COM порта, а D2XX, они быстрее.
Цитата(PSP @ Oct 6 2007, 03:53)

Я достигал на прием скорости 500кбайт/сек на объемах в несколько мегабайт, причем ограничивалась скорость возможностями моего микропроцессора, а не FTDI.
Подтверждаю. У нас скорость порядка 900 мегабайт/сек. Хотя по началу было совсем мало. Потом обнаружили ошибку в программе проца.
Цитата(SALOME @ Oct 6 2007, 08:09)

Подтверждаю. У нас скорость порядка 900 мегабайт/сек. Хотя по началу было совсем мало. Потом обнаружили ошибку в программе проца.
Не 'мегабайт' а 'килобайт'

Да, действительно на FT245 можно достичь такой скорости. НО поток в реальном времени на такой скорости без потерь можно передать только при наличии внешнего буфера хотя-бы на 4кБ, лучше побольше
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.