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

 
 
> Ethernet контроллер, современный и быстрый
TamRazZ
сообщение Sep 10 2013, 16:02
Сообщение #1


Участник
*

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



Посоветуйте современный быстрый Ethernet контроллер. До этого использовался LAN91c111 в связке с ПЛИС (cyclone3) с процессором NiOSII. Максимальная скорость обмена ПЛИС--компьютер, которой удалось достичь 15-20 Мбит/с (со стандартными драйверами под ниос). Хотелось бы приблизиться к скоростям 80-100 Мбит/с.
Какую микросхему выбрать, желательно, чтобы потом не возникло проблем с поиском или написанием драйверов, ну и цена чтобы не заоблачная была...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Raven
сообщение Sep 11 2013, 14:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Как уже правильно говрили выше, вопрос поставлен неточно. При проворачивании какого стека коммуникационных протоколов вы хотите добиться data rate >= 80 Mbps @ FastEthernet? Варианты:

1) Eth PHY - Eth MAC - все, что выше - свое (свои network layer / transport layer - по мере надобности). +: можно добиться наивысшей скорости передачи. -: все проблемы реализации собственных уровней ;-)

2) Eth PHY - Eth MAC - IP - TCP/UDP. Надо применять наработанные реализации TCP/IP стеков, а они будут кушать процессорный и системный ресурс, и их проворачивание будет иметь на данной платформе вполне определенную latency, приводящую к некоему максимальному для платформы кол-ву обрабатываемых пакетов в секунду (сетевая производительность).

Рассмотрим вариант 2, как более реалистичный. Составляющие обработки (если грубо): обработка PHY/MAC (tMAC) + обработка TCP/IP (tTCP). В использовавшемся вами до сих пор варианте (LAN91С111 + NiosII + lite weight TCP (по-видимому)) обе составляющие выполнялись при плотном задействовании CPU, к тому же природа LAN91C111 ограничивает его предельную пропускную способность числами существенно ниже теоретически возможных 90-95 % от 100Mbps. Все вместе и дало наблюдаемый результат - 15-20 Mbps (для данной комбинации, кстати, весьма хороший).

Путь улучшения - разгрузка CPU от сетевых задач, насколько возможно => перенос функциональности на HW где только можно. Рассмотрим отдельно реализацию этого для PHY/MAC и TCP/IP.

PHY/MAC

В части MAC имеются хорошо наработанные решения, основанные на следующих идеях (еще со времен присной памяти NE2000 сетевых карт, как минимум):
1) МАС работает мастером и сам забирает-складывает содержимое пакетов, помещаемых в выделяемые буфера (в основной памяти данных);
2) драйвер (читай - CPU) в основном имеет дело с дескрипторами Rx и Tx буферов, которые он заполняет (для Tx) и проверяет (Rx); дескрипторы, как правило, объединеные в кольцевые списки;
3) MAC также работает с дескрипторами (узнает, откуда брать TxData, и куда класть RxData, и помечает отработанное).

Думаю, конкретный MAC-PHY чип, работающий по такому принципу, народ вам скоро насоветует. Ну, и сами теперь знаете, что искать надо. В качестве суб-варианта: {внешний PHY} + {MAC in FPGA} (у Altera же есть соответствующие ядра, да на OpenCores тоже).

TCP/IP

Теперь уже и в этой части есть аппаратные наработки. Например, WizNet - накрывает сразу все - PHY/MAC/TCP. Но вот насчет его производительности не могу ничего сказать - не имел дела непостредственно. Наверняка, есть и аппаратные ускорители для работы с TCP/IP стеком - только поискать надо. А вообще, вполне возможно, что и аппаратные улучшения на MAC уровне (см. выше) уже дадут вам желаемое (или сильно к нему приблизят).
Go to the top of the page
 
+Quote Post
TamRazZ
сообщение Sep 11 2013, 16:55
Сообщение #3


Участник
*

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



Цитата(Raven @ Sep 11 2013, 18:39) *
PHY/MAC

В части MAC имеются хорошо наработанные решения, основанные на следующих идеях (еще со времен присной памяти NE2000 сетевых карт, как минимум):
1) МАС работает мастером и сам забирает-складывает содержимое пакетов, помещаемых в выделяемые буфера (в основной памяти данных);
2) драйвер (читай - CPU) в основном имеет дело с дескрипторами Rx и Tx буферов, которые он заполняет (для Tx) и проверяет (Rx); дескрипторы, как правило, объединеные в кольцевые списки;
3) MAC также работает с дескрипторами (узнает, откуда брать TxData, и куда класть RxData, и помечает отработанное).


Спасибо, за полезную информацию. Как раз хотел спросить про микросхемы с готовым Phy и Mac.
Может, кто имеет опыт работы с конкретными микрухами и может что-то посоветовать.?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 11 2013, 18:20
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(TamRazZ @ Sep 11 2013, 20:55) *
Спасибо, за полезную информацию. Как раз хотел спросить про микросхемы с готовым Phy и Mac.
Может, кто имеет опыт работы с конкретными микрухами и может что-то посоветовать.?


Контроллеры ищите у Микрел.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 09:50
Рейтинг@Mail.ru


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