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

Как быстро передавать данные через Ethernet

Приветствую!

 

Никогда на практике не сталкивался с передачей данных по сети Ethernet. И вот...

 

Задача довольно простая. Имеется устройство (нашей разработки), которое с помощью

ПЛИС снимает данные со 128 датчиков. Затем эти данные нужно передать в компьютер

для последующей обработки.

 

Имеется два основных требования, которые ставят меня в тупик:

 

1. Скорость поступающих данных 100+ мбайт/сек. (не мбит!).

2. Расстояние от устройства до компьютера 100-300 метров.

3. Соединение типа точка-точка.

 

Исходя из этих требований я подумал, что на такое расстояние при такой скорости

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

кабелем.

 

Далее. Примерно прикинул, что канала на 1 Гигабит должно хватить. Данные передавать

по протоколу UDP (я прочитал, что он обеспечивает максимальную скорость передачи).

В нашем устройстве не хотелось бы использовать какую-то серьезную аппаратную часть

(типа PC-материнки). Было бы желательно обойтись просто чем-то вроде RTL80xx или

подобным, с минимальной дополнительной обвязкой. Может быть поставить простой

микроконтроллер для конфигурирования всего этого хозяйства.

 

На компьютерной стороне у заказчика стоит PC с Виндой. Мне нужно будет написать

простую DLL-ку, которая примет поток данных и положит их куда прикажут (в файл на диск,

запихнет в Memory Mapped File и т.п.).

 

Исходя из вышеизложенного имеются следующие вопросы:

 

1. На какую аппаратную базу в устройстве следует закладываться? Видимо примененная

микросхема продиктует требуемый протокол передачи? Наверное устройства вроде W5300

фирмы WIZnet не подойдут по скорости, а другие не имеют аппаратной реализации TCP, UDP?

 

2. Как под Виндой получать переданные данные? Понятно, что TCP, UDP можно получать

с помощью Winsock, а если протокол более низкого уровня, тогда чем? Тем же Winsock-ком?

 

Спасибо!

 

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


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

Никогда на практике не сталкивался с передачей данных по сети Ethernet. И вот...

Тогда совет - не беритесь за эту работу. Слишком высокая планка для начала. Причем про использование на встречной стороне любой произвольной машины с win или чем либо еще десктопно-ширпотребным следует сразу забыть. Сформировать и вдуть Ethernet фреймы (а ничего другого Вам не надо) на указанной скорости из FPGA особо явных проблем не должно быть. Поминание всяких слов типа "Wiznet" в конетксте озвученного задания, абсолютно ни о чем.

 

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


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

Тогда совет - не беритесь за эту работу. Слишком высокая планка для начала.

Хм... Неужели эта задача настолько сложна? Речь-то всего о канале вроде обычного COM-порта, только очень быстром :-) Соединение точка-точка. Все остальное в Мире Интернета и сетей данной задачи не касается. Устройство данные генерит - достаточно мощный PC-шник принимает и все.

 

Причем про использование на встречной стороне любой произвольной машины с win или чем либо еще десктопно-ширпотребным следует сразу забыть.

Безусловно! Этот вопрос будет согласован с заказчиком. Понятное дело, что работать с таким потоком данных - это не офисная задача. Предварительно я уже обговорил с ними насчет размера и скорости потока. Встретил понимание. Если понадобится, между порциями данных будут введены небольшие паузы.

 

Сформировать и вдуть Ethernet фреймы (а ничего другого Вам не надо) на указанной скорости из FPGA особо явных проблем не должно быть. Поминание всяких слов типа "Wiznet" в конетксте озвученного задания, абсолютно ни о чем.

Во, во. Подскажите пожалуйста, как это по-проще сделать? Какую элементную базу лучше применить? По какому протоколу передавать и принимать данные?

 

 

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


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

Хм... Неужели эта задача настолько сложна?

Да. Для начинающего наверняка не подъемна, если речь идет о каких-то реальных сроках.

достаточно мощный PC-шник принимает и все.

Великолепно. Думаю, что у Вас найдется пара PC с Windows. Попробуйте для начала переслать и писать на диск эти самые 100 мегабайт в секунду.

Какую элементную базу лучше применить?

Голый PHY - это очевидно.

По какому протоколу передавать и принимать данные?

Уже писал - просто Ethernet фрейм. Минимально-достаточное условие для стыковки с готовой гигабитой оптикой на встречной стороне.

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


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

Для начинающего наверняка не подъемна, если речь идет о каки-то реалных сроках.

Сроки вполне нормальные, не драконовские. Я предполагал месяца 3 на разработку узла передачи и примерно столько же на доводку опытного образца.

 

Великолепно. Думаю, что у Вас найдется пара PC с Windows. Попробуйте переслать и писать на диск эти самые 100 мегабайт в секунду.

Да, я как раз об этом задумывался. Даже начал ваять пробную пару клиент-сервер. Только пока не разобрался, как передавать данные по протоколам более низкого уровня относительно UDP. Спасибо за подсказку!

 

Голый PHY - это очевидно.

Уже писал - просто Ethernet фрейм. Минимально-достаточное условие для стыковки с готовой гигабитой оптикой на встречной стороне.

Я попробовал поискать в Гугле. Довольно много всего, туманно пока... Обратил внимание на Intel, но у них, насколько я понял, ориентация на PC с Виндовыми драйверами. Подскажите, пожалуйста, примерное направление, голый PHY каких фирм посмотреть? Чтобы по-проще...

 

 

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


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

PHY каких фирм посмотреть? Чтобы по-проще...

Не подскажу - не занимался гигабитной оптикой. Но в общем это совершенно не принципиально - они достаточно одинаковы, это не MAC. Что-то вроде МАС будете делать в FPGA.

 

 

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


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

Не подскажу - не занимался гигабитной оптикой. Но в общем это совершенно не принципиально - они достаточно одинаковы, это не MAC. Что-то вроде МАС будете делать в FPGA.

Большое спасибо за помощь! Пошел наковыривать информацию :-) Пока не утратил надежды на решение этой задачи...

 

 

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


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

..1 Гигабит Ethernet 100 мбайт в секунду не даст - максимум 90 Мбайт/с по UDP.

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


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

..1 Гигабит Ethernet 100 мбайт в секунду не даст - максимум 90 Мбайт/с по UDP.

Да ладно сочинять то!

 

Все же зависит от размера фреймов..

 

Вот, например, из Figure 2. можно видеть, что для фреймов с размером больше 512 байт вполне можно передавать 100 МБайт/с и даже поверх TCP/IP.

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


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

..1 Гигабит Ethernet 100 мбайт в секунду не даст - максимум 90 Мбайт/с по UDP.

По этой причине даже UDP использовать не надо, как по причине хоть и малой, но избыточности, и главное, по причине наличия излишеств в виде стека. При использовании допиленного драйвера сетевой карты - можно уже пробовать и под 100 подбираться, ибо 100 мегабайт это 800 мегабит+заголовки+гапы.

 

Figure 2. можно видеть, что для фреймов с размером больше 512 байт вполне можно передавать 100 МБайт/с даже поверх TCP/IP.

Значит можно с интеловской сетевой картой и ее родными драверами под каким-нибудь линуксовым сервером попробовать потестировать.

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


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

Да ладно сочинять то!

Все же зависит от размера фреймов..

Вот, например, из Figure 2. можно видеть, что для фреймов с размером больше 512 байт вполне можно передавать 100 МБайт/с даже поверх TCP/IP.

..может быть, но у нас не получалось , точнее у наших программистов.

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


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

..может быть, но у нас не получалось , точнее у наших программистов.

А тут результат зависит не только от программистов.

 

Важны также скорость и обьем жестких дисков, сколько свободного места есть на этих дисках и насколько сильно оно фрагментировано.

 

Также важны скорость и обьем ОЗУ, рабочая частота ЦПУ, количество посторонних процессов в менеджере задач и прочие ньюансы.

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


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

А тут результат зависит не только от программистов.

 

Важны также скорость и обьем жестких дисков, сколько свободного места есть на этих дисках и насколько сильно оно фрагментировано.

 

Также важны скорость и обьем ОЗУ, рабочая частота ЦПУ, количество посторонних процессов в менеджере задач и прочие ньюансы.

... еще забыли про потери на разъемах, кабелях.

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


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

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

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

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

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

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

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

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

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

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