Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

LVDS для USB 2.0 или возможно ли реализовать USB 2.0 в ПЛИС

Ср мар 29, 2017 13:38:04

Хочу реализовать USB 2.0 PHY на ПЛИС если это возможно (480 МГц как никак). Для этого нужен SERDES (последовательно-параллельный преобразователь)
Недавно узнал про LVDS SERDES или ALTLVDS_RX и TX IP блоки в альтере. Поставил, опробовал на Full Speed и получил какую то ерунду.

Не знаю как правильно ставить этот блок но вот так поставил (дифференциальная пара *D и *P)

Изображение

В итоге при принятии пакета SOF на выходе какая то такая ерунда получилась

Изображение

Возможно ли использовать SERDES для USB 2.0 High Speed в ПЛИС (Cyclone IV например)? :dont_know: :dont_know:
в даташите написано что 600 мбит/с циклон выдерживает для LVDS.

И почему outclock такой медленный ? хотя я подаю 12 МГц на inclock а на выходе сигнал ещё меньше

Или проще какой нибудь сдвиговый регистр поставить на 480 МГц ? хотя как управлять синхронизацией на таких частотах не ясно

Повысил частоту inclock - опять как-то не понятно сдвигает, через раз, а то и через 3

Изображение

Но теперь хотя бы правильно. Но блин в 2-3 раза частоту поднимать это не дело, ибо лучше тогда сдвиговый регистр простой ставить, че за дела ? :) :dont_know: :dont_know:

Но тогда с синхронизацией проблема будет

Re: LVDS для USB 2.0 или возможно ли реализовать USB 2.0 в П

Ср мар 29, 2017 20:12:08

Выскажу свои мысли.
1) 480 Мбит это общая скорость USB и при наличии n-го числа устройств, она поделится в n раз.
2) Насколько помню, USB не является в чистом виде дифпарой (на начальном этапе сигналы не совсем противофазны, но я могу и ошибаться). Это к использованию чистого lvds.
3) Блок SERDES работает по обоим фронтам, так что играйте частотой тактиования приемника - она должна помочь. Но в SERDES не очень просто реализовать самосинхронизацию.
4) Если надо назначить диф пару, то правильнее в Pin Planner указать на то, что сигнал дифференциальный.
5) Скорость выдачи данных в 400 МГц без использования DDR или специальных высокоскоростных блоков (а подозреваю что имеющийся циклон 4 с литерой Е, в добавок с планарными выводами, у которых предел 200 МГц) практически не достижима.

Re: LVDS для USB 2.0 или возможно ли реализовать USB 2.0 в П

Ср мар 29, 2017 21:29:15

Meteor писал(а):1) 480 Мбит это общая скорость USB и при наличии n-го числа устройств, она поделится в n раз.


Допустим у меня подключается 1 устройство и оно разделяет всю пропускную способность хоста, следовательно на 480 МГц тоже должно работать устройство.
USB High Speed каким образом переключается из USB Full Speed ? Что за транзакция там специальная такая или как происходит переключение в High Speed режим ? :dont_know:

Meteor писал(а):2) Насколько помню, USB не является в чистом виде дифпарой (на начальном этапе сигналы не совсем противофазны, но я могу и ошибаться). Это к использованию чистого lvds.
3) Блок SERDES работает по обоим фронтам, так что играйте частотой тактиования приемника - она должна помочь. Но в SERDES не очень просто реализовать самосинхронизацию.


Стоит ли вообще использовать LVDS или SERDES ? Сильно ли выиграю по частоте ? Если это не хардварные блоки, то нельзя ли обойтись простым сдвиговым регистром с обвязкой ? :dont_know:

Meteor писал(а):5) Скорость выдачи данных в 400 МГц без использования DDR или специальных высокоскоростных блоков (а подозреваю что имеющийся циклон 4 с литерой Е, в добавок с планарными выводами, у которых предел 200 МГц) практически не достижима.


Какие ПЛИС тогда можете посоветовать для достижения частот в 480 МГц и выше ? (пускай хоть и дорогие) :dont_know:
Или на ПЛИС вообще такие вещи реализовать почти невозможно ? (потому что даже на opencores.org нет по USB High Speed почти ничего)

Re: LVDS для USB 2.0 или возможно ли реализовать USB 2.0 в П

Ср мар 29, 2017 22:17:36

Vendein_RaZoR писал(а):USB High Speed каким образом переключается из USB Full Speed ? Что за транзакция там специальная такая или как происходит переключение в High Speed режим ?

Давно было, сейчас только общие моменты обозначу. Определение в самом начале происходит по схеме подтяжек линий D+ D-. Далее при установке соединения вроде должно пройти подтверждение по скорости.
Vendein_RaZoR писал(а):Стоит ли вообще использовать LVDS или SERDES ? Сильно ли выиграю по частоте ? Если это не хардварные блоки, то нельзя ли обойтись простым сдвиговым регистром с обвязкой ?

SerDes конечно можно использовать, но при этом придется самостоятельно позаботиться о том, что бы данные были представлены в коде без возврата к нулю (только в паралельном виде) и плюс надо для защиты от срыва синхронизации делать анализ на превышение 6 нулей подряд. С LVDS уже писал - наличие не противофазности сводит к нулю попытки применения.
Vendein_RaZoR писал(а):Какие ПЛИС тогда можете посоветовать для достижения частот в 480 МГц и выше ? (пускай хоть и дорогие)
Или на ПЛИС вообще такие вещи реализовать почти невозможно ? (потому что даже на opencores.org нет по USB High Speed почти ничего)

На плис такие вещи очень трудоемки и сложны. Посоветовать могу идти в одном из трех направлений:
1) использовать готовые мосты (FT232/245/2232/4232 или CY7C68013A и им подобные). Это решение хорошо тем, что вся трудность только в реализации стыка. FT2232H имеют возможность работы в режиме синхронного ФИФО, что повышает скорость обмена в разы. Но опять же, честных 480 Мбит не достичь (предел где-то 10-15Мбайт/с) у CY7C68013 предел пимерно 25 МБайт/с).
2) Использовать МК с USB2.0 на борту. Преимущества в готовности решения, большое число реализаций, копеечной стоимости МК в сравнении с ПЛИС.
3) Рассмотреть вариант SoC, в составе которых есть и плис и процессор. У последнего может быть аппаратный USB, а может и не быть -- надо смотреть документацию.
Относительно "быстрых" ПЛИС, то циклон к ним не относится. У Альтеры самые шустрые это стратиксы. Но боюсь цена в несколько тысячь американских тугриков за штуку не очарует. А платный квартус, которые сможет работать с этим кристаллом, и его дополнения совсем опустошат карман.

Re: LVDS для USB 2.0 или возможно ли реализовать USB 2.0 в П

Ср мар 29, 2017 22:32:19

Meteor писал(а):На плис такие вещи очень трудоемки и сложны. Посоветовать могу идти в одном из трех направлений:
1) использовать готовые мосты (FT232/245/2232/4232 или CY7C68013A и им подобные). Это решение хорошо тем, что вся трудность только в реализации стыка. FT2232H имеют возможность работы в режиме синхронного ФИФО, что повышает скорость обмена в разы. Но опять же, честных 480 Мбит не достичь (предел где-то 10-15Мбайт/с) у CY7C68013 предел пимерно 25 МБайт/с).
2) Использовать МК с USB2.0 на борту. Преимущества в готовности решения, большое число реализаций, копеечной стоимости МК в сравнении с ПЛИС.
3) Рассмотреть вариант SoC, в составе которых есть и плис и процессор. У последнего может быть аппаратный USB, а может и не быть -- надо смотреть документацию.
Относительно "быстрых" ПЛИС, то циклон к ним не относится. У Альтеры самые шустрые это стратиксы. Но боюсь цена в несколько тысячь американских тугриков за штуку не очарует. А платный квартус, которые сможет работать с этим кристаллом, и его дополнения совсем опустошат карман.


В принципе тоже так думал использовать вообще отдельную PHY микросхему. Ибо ещё хост надо реализовывать High Speed :cry:

Но все же ПЛИС тоже где-то должна быть :) Смотреть в сторону SoC и готовых микросхем это как последний вариант пока :)

Вообще даже на таких монстрах как Virtex-5 ставят даже Ethernet PHY, что уже намекает.
Мой циклон начинает запинаться уже где-то на 350-400 МГц и то без использования IOB (то есть внутри кристалла от PLL).

Использовать FT232H можно конечно, но это будет тогда только функция, а нужен, к сожалению, ещё и хост :(

А вообще, так не смотря в спецификацию 2.0, можно ли обмениваться с хостом (устройство подключено одно) на скоростях ниже 480 МГц (к примеру 100-200 МГц) и съест ли это ECHI хост ? :dont_know:

Хотя, если 480 Мбит - это общая скорость, но устройство все равно должно же работать на 480 МГц, ведь так ? :dont_know:

Грубо говоря, если Low Speed будет работать на 500 кГц или Full Speed на 5 МГц, то устройство ведь его попросту не поймет, ведь так ? :dont_know:

Значит High Speed должен обязательно работать на 480 МГц ? (речь не о мбит/с) :dont_know:

Meteor писал(а):Если надо назначить диф пару, то правильнее в Pin Planner указать на то, что сигнал дифференциальный.


Как это сделать кстати ? В Quartus I/O Standart работающие это LVDS и Bus LVDS, остальные ругаются на выход 3-state буфера на входе, но LVDS для USB не подходит. Видно придется не назначать диф пару... :dont_know:

ЗЫ Оказывается там тот ещё геморрой с определением high speed режима. Нужно отключать резистор с D+ (если он ранее был full speed) на high speed и выдавать 17 мА на D- чтобы образовался Chirp пакет и хост его ещё должен подтвердить. Вообще ощущение что хост и функция на High Speed общаются с помощью токов в 17 мА с отключенными резисторами подтяжки и подключенными резисторами - терминаторами на 45 Ом...
Ответить