Jump to content

    
Sign in to follow this  
DSIoffe

Медленно работает FT601

Recommended Posts

Здравствуйте все!

Подскажите, пожалуйста, почему может тормозиться ввод данных в компьютер через FT601? Картина такая: первые четыре пакета по 1024 слова уходят с небольшими интервалами, правда, они понемногу растут. Потом интервалы между пакетами раз в пятнадцать больше самого большого из коротких. Прикладываю снимок экрана из Signal Tap.

К портам USB подключены только клавиатура с мышью и USB Blaster.

Может ли это быть особенностью режима 245 FIFO? При переходе на многоканальный режим с одним каналом может быть лучше?

Если это особенность USB 3 на моей материнской плате, то может ли помочь вставная плата с USB?

Заранее признателен.

exp3_big_async.png

И ещё осциллограмма сигнала TXE_N.

TXE_N. застревание FT601.png

Share this post


Link to post
Share on other sites

Здравствуйте. Вы так описали проблему, что к вам ещё больше вопросов:

Какую функцию используете для считывания?

Внутри плис стоковый код от FTDI? Если да, то что показывает сигнал тап про состояния state mashine?

Какой алгоритм формирования слов? Или вы многократно считываете один и тот же буфер?

Примеры от FTDI у вас нормально работают на плате?

По моему опыту, если порт соответствует спецификации USB 3.0 и он исправен, то хоть ему сколько ему лет то он тянет FT60x. 

Share this post


Link to post
Share on other sites

Для считывания использую функцию FT_ReadPipe. И при синхронном, и при асинхронном чтении результат одинаковый.

Внутри ПЛИС код, мною написанный на основании понятого из документации от FTDI.

Алгоритм формирования слов - просто счётчик.

Примеры от FTDI я у себя на плате не запускал, ибо не смог в них разобраться.

Алгоритм работы такой: запускаю FT_ReadPipe, сигнал TXE_N активизируется, через некоторое время (от нуля до единиц миллисекунд) я активизирую WR_N и выдаю данные. FT601 забирает данные пакетами по 1024 слова, то есть, размером со свой буфер FIFO. На время высокого уровня TXE_N выдача данных приостанавливается.

Share this post


Link to post
Share on other sites
3 minutes ago, DSIoffe said:

И при синхронном, и при асинхронном чтении результат одинаковый.

Сколько запросов ставится в очередь при асинхронном чтении?

Share this post


Link to post
Share on other sites

Возможно это из за режима 245. В режиме фифо 600 и конфигурацией канала 1 IN Pipe как себя ведёт?

Режим 245 на FT60x не применял, не пригодился, всё время хотелось быстрее передавать и по мануалам этого можно добиться только в режиме фифо 600 

Share this post


Link to post
Share on other sites
1 час назад, yakub_EZ сказал:

Возможно это из за режима 245. В режиме фифо 600 и конфигурацией канала 1 IN Pipe как себя ведёт?

Режим 245 на FT60x не применял, не пригодился, всё время хотелось быстрее передавать и по мануалам этого можно добиться только в режиме фифо 600 

Спасибо. Режим 245 мне показался проще. Режим 600 я ещё не пробовал. А не подскажете, где именно написано, что 600 быстрее? Может, там ещё какие подробности есть?

Share this post


Link to post
Share on other sites

Спасибо. Я нигде в документации FTDI не видел явного указания на то, что режим FIFO 600 быстрее 245, и в этом тексте тоже. Про 245 написано гораздо меньше, и картинок к нему совсем мало - это да. Как будто они его стесняются и стараются обратить внимание на 600 :) И непонятно, как может интерфейс в этом месте повлиять на взаимодействие с USB, с какого-то места внутри FT601 данные должны выглядеть одинаково.

В AN_386 упоминается пауза между пакетами - Idle. Способов повлиять на неё нету, кроме как специально затянуть на стороне ведущего шины. Я пробовал - короткие Idle увеличиваются, длинные не меняются. Почему она у меня после четвёртого пакета увеличивается раз в 20 - непонятно.

Будем искать...

Share this post


Link to post
Share on other sites

Извиняюсь, я ещё не самый настоящий сварщик по режимам FTDI, но попытаюсь восстановить хронологию появления у меня такого предубеждения на счёт режима фифо 600. В исходниках от FTDI есть разделение софта на два режима: Loopback и Streamer. Кстати исходники от FTDI мне показались настолько громоздки что я в них тоже не разбирался, а пошёл своим путём. Но тестировать плату начинал именно с них.

Loopback это режим 245, пример с него может быть многоканальный, работа в примере ведется через SRAM, которое разбивается на 1,2,4 канала в него двунаправлено можно отправлять и принимать данные. 

А Streamer как раз представлен как быстрый фифо 600 где отображается датчик скорости. Вот в стриммере как раз получалось получить гигабитные цифры 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this