|
Еще раз о связке ПК-USB-FTDI-ПЛИС |
|
|
|
Mar 14 2011, 07:20
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 14-03-11
Пользователь №: 63 590

|
Здрствуйте. У меня вопрос к людям, которые сталкивались с реализацией интерфейса USB, в частности при помощи преобразователей фирмы FTDI USB-FIFO.
Возникла потребность связать ПЛИС и ПК через USB (только передать файл размером ~500 Мб, желательна скорость от 1 Мб/с). Порыскав по просторам форума и интернета несколько раз натыкался на продукты фирмы FTDI. Микросхемы предлагают превратить поток данных из USB в FIFO или UART по выбору. На аппаратном уровне вроде бы все просто: фифо получает данные из вне, а мы все это счастье забираем плисиной и дальше по нуждам... Вопрос вот в чем: от меня на програмном уровне требуется только слать пакеты Token, затем пакеты Data и принимать Handshake'и. Все необходимые прошивки предоставляет FTDI. Например, мне не требуется описывать процесс подключения устройства к хосту (это задача драйвера). Прав ли я или я не учел еще какие-то нюансы в проектировании и программировании? Приму к сведению все советы, сам только осваиваю USB
|
|
|
|
|
Mar 14 2011, 11:50
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
Цитата(nmurzin @ Mar 14 2011, 14:38)  Если требуется производительность, лучше использовать контроллер фирмы Cypress. спорный вопрос, с Cypress много лишней возни, и с EzUSB предельные скорости не получишь, нужно что-то ковырять в виндовых потрохах в новых FTDI есть USB to synchronous 245 parallel FIFO mode for transfers up to 40 Mbytes/Sec http://www.ftdichip.com/Products/ICs/FT232H.htmда и не самые новые http://www.ftdichip.com/Products/ICs/FT2232H.htmтолько непонятно, как в софте это поддерживается? кто-нибудь пользовал synchronous 245 parallel FIFO mode?
|
|
|
|
|
Mar 14 2011, 13:06
|

Участник

Группа: Validating
Сообщений: 22
Регистрация: 10-11-09
Пользователь №: 53 528

|
FTDI ооооочень простая в использовании микросхема. С одной стороны у нее USB с другой UART/FIFO. Выше правильно написали, что FPGA о USB ничего не знает. Общается с ней как UARTом либо как с FIFO. После подключения к компу вашего устроийства с FTDI-микросхемой, обычно в винде появляется еще один последовательный ком-порт (в винде уже миллион лет есть стандартные дравйвера для FTDI). Если же порт не появляется, то с сайта FTDI можно скачать и установить. Тогда все появится. После этого в программе для виндоус открываете порт как файл и пишете-читаете с него. Код fopen(COM4,...) fread( ...) fwrite( ...) Можно просто в обычном терминале открыть этот порт и читать/писать в него. Скорость у FTDI не шибко высокая, сколько знаю. До 1Мбс вроде. Могу ошибаться. Cypress намного быстрее, но с ним действительно гораздо больше возни, по-сравнению с FTDI.
|
|
|
|
|
Mar 14 2011, 13:59
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 14-03-11
Пользователь №: 63 590

|
Я так понимаю режим UART и FIFO это разные режимы. С какой скоростью гоняются данные в режиме COM-порта?
|
|
|
|
|
Mar 15 2011, 04:48
|
Участник

Группа: Свой
Сообщений: 74
Регистрация: 28-01-10
Из: Новосибирск
Пользователь №: 55 106

|
Цитата(toretto @ Mar 14 2011, 19:59)  Я так понимаю режим UART и FIFO это разные режимы. С какой скоростью гоняются данные в режиме COM-порта? В датащите написано, максимум 3 Мбита. У меня 1 мегабит гоняло без проблем, больше не проверял.
|
|
|
|
|
Mar 15 2011, 12:31
|
Местный
  
Группа: Свой
Сообщений: 313
Регистрация: 15-06-05
Из: Минск
Пользователь №: 6 028

|
Цитата(yes @ Mar 14 2011, 15:50)  спорный вопрос, с Cypress много лишней возни, и с EzUSB предельные скорости не получишь у меня кристаллы реально работают без затыков на скорости 24МБАЙТА - гонят поток в комп .... без заморочек
|
|
|
|
|
Mar 15 2011, 13:24
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
Цитата(alexadmin @ Mar 14 2011, 16:12)  В софте очень просто - FTDI переводится в соответсвующий режим работы, после чего работа с ним происходит точно так же, как и раньше - почитать-записать. В тесте удавалось добиться пиковой скорости порядка 35-40 мбит/с. ну то есть через D2XX, больше никаких хитростей не надо? просто про Cypress FX2 слышал, что больше 25Мбайт/с получить нельзя - типа проблемы хоста и это как бы практический потолок под виндой пользуюсь FTDI в режимах отличных от UART и с драйверами не сериальными, но как-то никак руки не доходят проверить FIFO у меня как раз нужно 26-30Мбайт/с, но программист соскочил и придется самому писать - вот хочу понять, чего ожидать
|
|
|
|
|
Mar 16 2011, 08:42
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(yes @ Mar 15 2011, 16:24)  ну то есть через D2XX, больше никаких хитростей не надо? просто про Cypress FX2 слышал, что больше 25Мбайт/с получить нельзя - типа проблемы хоста и это как бы практический потолок под виндой Да, в софте устанавливаете синхронный режим, не забываете включить RTS/CTS (в какой-то AN написано иначе данные бьются), и дальше работаете обычными функциями чтения/записи. Около 40 мбайт/с получалось в простом тесте типа прочитать данные, проверить на отсутствие ошибок, скинуть на диск.
|
|
|
|
|
Oct 27 2011, 17:59
|
Группа: Новичок
Сообщений: 7
Регистрация: 24-10-11
Пользователь №: 67 921

|
а как в квартусе описать связку PC<=>USB<=>FPGA? может кто-нить это обьяснить или скинуть какой нибудь пример?
Сообщение отредактировал Nepston - Oct 27 2011, 17:59
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|