Перейти к содержанию
    

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

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

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

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

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

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

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

exp3_big_async.png

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, DSIoffe said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, yakub_EZ сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...