реклама на сайте
подробности

 
 
> Ethernet и USB на одном Cyclone
Владимир_О
сообщение Jun 15 2012, 09:03
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 24-10-11
Из: Санкт-Петербург
Пользователь №: 67 915



Возникла необходимость создать устройство, подключающееся в слот PCIe и выполняющее функции USB-хоста и сетевой карты Ethernet одновременно. Как правильно организовать конфигурационное пространство PCIe, чтобы плата определялась ПО компьютера и как USB-хост, и как сетевая карта? Такое возможно? Если нет, то возможно ли динамическое реконфигурирование? Насколько я понимаю, за определение типа устройства отвечает поле CLASS CODE в конфигурационном пространстве, и оно только одно...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Владимир_О
сообщение Jun 19 2012, 05:56
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 24-10-11
Из: Санкт-Петербург
Пользователь №: 67 915



Цитата(Boris_TS @ Jun 18 2012, 18:21) *
Мда, вопрос, конечно, не в схемотехнике... вопрос в системотехнике.
Вопрос исключительно системного характера:
Если вы хотите использовать какие-либо стандартные драйвера, то вы должны сделать стандартное же устройство. Это значит, что это стандартное устройство употребит все BAR PCI(e) устройства. Если необходимо реализовать более 1 устройства, и как минимум одно из них должно быть стандартным, то вам нужно PCI multi function device, обладающий несколькими конфигурационным пространствами. О чём было написано выше:
Добавлю, Xilinx в Virtex-5 тоже этого сделать не могла. Есть ли поддержка в Virtex-6/7 – не знаю,.. но что-то сильно сомневаюсь.
Думаю, что и Altera далеко не ушла от соседей, но: кто знает ?

А стандартных Gigabit Ethernet NIC - просто нет.

Поэтому, проще поставить PCI-E switch и прицепить к нему несколько устройств, в т.ч. и микросхемы:
1. стандартный USB EHCI host.
2. покупной PCI-E Gigabit Ethernet NIC (Marvell. Realtek и пр.).
Иначе это всё превратиться в редкостный маразм.

И всё-таки чем вам не подходит внешний USB EHCI host ?
Зачем вы эту гадость (USB) хотите упхать в ПЛИС ?
Зачем вы хотите туда же и Gigabit Ethernet положить ?

Шифровать передаваемые данные хотите ? - так напишите об этом честно ! Как я говорил раньше - тут все свои.


К вопросу реализации - у меня все так и реализовано - в ПЛИС - PCIe-ядро и мастер внутренней шины, на внешних микросхемах - USB(MAX3421E) и Ethernet(Marvell).
А вот первая часть ответа мне весьма полезна, спасибо.
Проще говоря, мне бы хотелось, чтобы моя плата, на которой реализован и USB-хост, и Ethernet-контроллер, смогла работать со стандартными драйверами. Если это сложнореализуемо, то придется все же заняться драйвером...
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jun 19 2012, 06:40
Сообщение #3


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Владимир_О @ Jun 19 2012, 09:56) *
К вопросу реализации - у меня все так и реализовано - в ПЛИС - PCIe-ядро и мастер внутренней шины, на внешних микросхемах - USB(MAX3421E) и Ethernet(Marvell).
А вот первая часть ответа мне весьма полезна, спасибо.

С USB я не работал плотно, и что именно реализовано в MAX3421E быстро оценить не могу.
«Ethernet(Marvell)» - как я понял у вас стоит Ethernet Phy (аля 88e1111).

Цитата(Владимир_О @ Jun 19 2012, 09:56) *
Проще говоря, мне бы хотелось, чтобы моя плата, на которой реализован и USB-хост, и Ethernet-контроллер, смогла работать со стандартными драйверами. Если это сложнореализуемо, то придется все же заняться драйвером...

Если нет необходимости шифровать данные передаваемые по Ethernet/USB, то, как я и писал выше, проще (по совокупности трудозатрат) поставить 3 стандартные специализированные микросхемы. В противном случае, ваши программисты просто затрахаются реализовывать полноценные Ethernet драйвера, которые необходимо будет писать под каждую операционную систему,.. а потом еще и поддерживать. Поэтому, для Ethernet, я бы рекомендовал использовать Marvell Yukon (например 88E8057).

А вот если необходимо извращать данные, то для Ethernet другого пути нет - полный самопал. Для USB устройств извращать данные на уровне PCI-E (или вырасщенного на его основе в ПЛИС OHCI), на мой взгляд, - бессмысленно; ибо в общем случае, топология USB устройства - весьма сильно варьируется.

P.S. Кстати, даже если Вы решитесь создать своё самопальное устройство, то вам всё равно потребуется как-то сделать так, чтобы с ним работало сразу 2 разных драйвера: USB Host и Ethernet NIC. Обычно для этого требуется создать 2 "устройства", т.е. вырастить 2 конфигурационных пространства на PCI... можно, конечно, и сваять это всё програмно (драйвер обманка, из которого "растут" USB Host и Ethernet NIC драйвера), но это чреватый и очень мутный путь, хотя тоже - вполне реализуемый.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 08:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01375 секунд с 7
ELECTRONIX ©2004-2016