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

 
 
> Как быстро передавать данные через Ethernet, Поток данных порядка 100+ мбайт/сек
jur
сообщение Oct 28 2015, 12:21
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



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

Никогда на практике не сталкивался с передачей данных по сети 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-ком?

Спасибо!


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jur
сообщение Oct 31 2015, 11:30
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704




Большое спасибо, друзья, вы мне здорово помогаете!

Заметно продвинулся в плане понимания проблем, возникающих в ходе работы над поставленной задачей. Попутно пришло осознание, что телепатия, телепортация, левитация - это не просто фантазии. Не знаю насчет телепортации с левитацией, но телепатия точно есть! Иначе как объяснить, что слова уважаемого krux: "используйте разбиение по 64 датчика, а не по 128" попали ко мне в голову именно в тот же вечер, когда он об этом написал! :-)

В результате размышлений, ковыряния в Интернете, чтения различных документов у меня складывается следующая картина:

1. На стороне устройства поставить два канала Ethernet на 1 Гигабит каждый. Для этого использовать микросхему(ы) PHY или реализовать это дело в ПЛИС. Мы как раз используем микросхемы Cyclone V фирмы Altera. Нужно будет посмотреть, что получится проще. Возможно легче будет поставить одну/две микросхемы Ethernet PHY с SRAM-like интерфейсом. Что-то вроде этой: AX88180.

2. К микросхеме(мам) присоединить один/два адаптера для оптики, вроде Antaira SFP-M. Только нужно будет выбрать согласующуюся по интерфейсу пару PHY-оптика.

3. Для управления/конфигурации всего этого хозяйства поставить какой-нить незатейливый микроконтроллер. (Имею опыт работы с Атмеловскими 8-битными МК.)

4. На стороне компьютера поставить двухканальную плату Gigabit Ethernet с соответствующими оптическими согласователями.

Что касается программной части, то мне представляются такие варианты действий:

1. Использовать WinPcap для работы на уровне Ethernet-фреймов. Передавать блоки данных по 1 килобайту с добавлением необходимой информации о каждом блоке (типа, с какого датчика этот блок, коков его порядковый номер и т.п.). Такой вариант не представляет ни малейших проблем.

2. Добавить к передаваемой информации заголовки IP и UDP, тем самым превратив передачу в стандартную для Винды UDP/IP. Эти заголовки можно занести в ПЛИС при конфигурации. Можно даже реагировать на возможные ICMP-сообщения (наверное просто игнорируя их). Тоже сложностей не видно, однако позволяет работать в Винде чисто стандартными средствами. Это - плюс. Минус - это небольшое усложнение каналов передачи со стороны устройства. Это небольшой минус.

Оба варианта предполагают негарантированную доставку пакетов. Однако я надеюсь, что сбои в канале будут достаточно редкими. Поэтому тут мне видится следующий сценарий действий: на компьютерной стороне я учитываю все поступившие пакеты и помечаю, каких пакетов не хватает. Недостающие номера сообщаю микроконтроллеру в устройстве, который инициирует их повторную отправку. Получается такой примитивный TCP. При условии, что потерянных пакетов будет мало, накладные расходы на повторную передачу будут совсем небольшими. Обратный канал от компьютера к устройству мне по-любому нужен. Поэтому его можно организовать по тому же принципу, что и канал от устройства к компьютеру. С той разницей, что тут мне не нужно совсем никакого быстродействия.

Покритикуйте/покомментируйте пожалуйста мои соображения.

Спасибо за помощь!

P.S. Если кто интересуется Windows 10 Insider Preview, то вышел Build 10576. Интересно, откликнулись ли они на многочисленные просьбы инсайдеров выбросить их идиотское упорядочивание All Apps по алфавиту? Счас проверю :-)



--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- jur   Как быстро передавать данные через Ethernet   Oct 28 2015, 12:21
- - zltigo   QUOTE (jur @ Oct 28 2015, 15:21) Никогда ...   Oct 28 2015, 12:34
|- - jur   Цитата(zltigo @ Oct 28 2015, 14:34) Тогда...   Oct 28 2015, 13:23
|- - zltigo   QUOTE (jur @ Oct 28 2015, 16:23) Хм... Не...   Oct 28 2015, 13:30
|- - jur   Цитата(zltigo @ Oct 28 2015, 15:30) Для н...   Oct 28 2015, 13:56
|- - zltigo   QUOTE (jur @ Oct 28 2015, 16:56) PHY каки...   Oct 28 2015, 14:08
|- - jur   Цитата(zltigo @ Oct 28 2015, 16:08) Не по...   Oct 28 2015, 14:13
|- - Lmx2315   ..1 Гигабит Ethernet 100 мбайт в секунду не даст -...   Oct 28 2015, 14:24
|- - blackfin   Цитата(Lmx2315 @ Oct 28 2015, 17:24) ..1 ...   Oct 28 2015, 14:39
||- - Lmx2315   Цитата(blackfin @ Oct 28 2015, 18:39) Да ...   Oct 28 2015, 15:10
||- - blackfin   Цитата(Lmx2315 @ Oct 28 2015, 18:10) ..мо...   Oct 28 2015, 15:23
||- - Aner   QUOTE (blackfin @ Oct 28 2015, 18:23) А т...   Oct 28 2015, 15:52
||- - blackfin   Цитата(Aner @ Oct 28 2015, 19:52) ... еще...   Oct 28 2015, 15:56
||- - zltigo   QUOTE (Aner @ Oct 28 2015, 18:52) ... еще...   Oct 28 2015, 16:21
|- - zltigo   QUOTE (Lmx2315 @ Oct 28 2015, 17:24) ..1 ...   Oct 28 2015, 14:50
- - krux   используйте разбиение по 64 датчика, а не по 128, ...   Oct 28 2015, 17:20
|- - blackfin   Цитата(krux @ Oct 28 2015, 21:20) использ...   Oct 28 2015, 18:10
|- - dxp   QUOTE (blackfin @ Oct 29 2015, 00:10) При...   Oct 29 2015, 06:57
|- - blackfin   Цитата(dxp @ Oct 29 2015, 10:57) Экая ско...   Oct 29 2015, 07:03
|- - zltigo   QUOTE (dxp @ Oct 29 2015, 09:57) Если у Т...   Oct 29 2015, 07:40
- - Alex11   NIOS вполне может справиться с таким потоком, но к...   Oct 29 2015, 01:17
|- - zltigo   QUOTE (Alex11 @ Oct 29 2015, 04:17) Если,...   Oct 29 2015, 05:14
|- - blackfin   Цитата(Alex11 @ Oct 29 2015, 05:17) Дело ...   Oct 29 2015, 06:08
- - RobFPGA   Приветствую! У меня Win7 стек нормально пере...   Oct 29 2015, 08:45
|- - zltigo   QUOTE (RobFPGA @ Oct 29 2015, 11:45) Для ...   Oct 29 2015, 09:09
|- - RobFPGA   Приветствую! Цитата(zltigo @ Oct 29 2015...   Oct 29 2015, 09:29
|- - zltigo   QUOTE (RobFPGA @ Oct 29 2015, 12:29) В ра...   Oct 29 2015, 09:59
- - prig   Цитата(jur @ Oct 28 2015, 15:21) ... 1. Н...   Oct 29 2015, 10:02
- - dxp   QUOTE (zltigo @ Oct 29 2015, 13:40) Так в...   Oct 30 2015, 06:46
- - RobFPGA   Приветствую! Какой Cyclone V у Вас ? Если в...   Oct 31 2015, 12:38
|- - jur   Цитата(RobFPGA @ Oct 31 2015, 14:38) Како...   Oct 31 2015, 16:43
- - jur   Однако... Все не так радужно, как мне мечталось......   Nov 1 2015, 13:35
|- - RobFPGA   Приветствую! Цитата(jur @ Nov 1 2015, 15...   Nov 1 2015, 14:12
|- - jur   Цитата(RobFPGA @ Nov 1 2015, 16:12) Я пон...   Nov 1 2015, 15:20
|- - RobFPGA   Приветствую! Цитата(jur @ Nov 1 2015, 17...   Nov 1 2015, 15:49
|- - jur   Цитата(RobFPGA @ Nov 1 2015, 17:49) Нет э...   Nov 1 2015, 16:16
|- - RobFPGA   Приветствую! Цитата(jur @ Nov 1 2015, 18...   Nov 1 2015, 16:44
|- - jur   Цитата(RobFPGA @ Nov 1 2015, 18:44) Посмо...   Nov 2 2015, 14:23
|- - Ruslan1   Извините, у меня немного отвлеченный вопрос: А зач...   Nov 2 2015, 22:11
|- - jur   Цитата(Ruslan1 @ Nov 3 2015, 00:11) Извин...   Nov 3 2015, 11:38
|- - prig   Цитата(Ruslan1 @ Nov 3 2015, 01:11) ... А...   Nov 3 2015, 14:55
- - jur   Немножко отошел от аппаратной части и занялся прог...   Nov 5 2015, 17:05
|- - blackfin   Цитата(jur @ Nov 5 2015, 20:05) Подключил...   Nov 5 2015, 17:15
|- - jur   Цитата(blackfin @ Nov 5 2015, 19:15) На м...   Nov 5 2015, 17:26
|- - blackfin   Цитата(jur @ Nov 5 2015, 20:26) Просто по...   Nov 5 2015, 17:44
||- - jur   Цитата(blackfin @ Nov 5 2015, 19:40) Вооб...   Nov 5 2015, 17:45
||- - blackfin   Цитата(jur @ Nov 5 2015, 20:45) А как воо...   Nov 5 2015, 18:02
||- - jur   Цитата(blackfin @ Nov 5 2015, 20:02) Може...   Nov 5 2015, 18:18
|- - RobFPGA   Приветствую! Цитата(jur @ Nov 5 2015, 19...   Nov 5 2015, 19:21
|- - doom13   Цитата(jur @ Nov 5 2015, 20:26) А как нас...   Nov 5 2015, 20:13
- - dxp   QUOTE (jur @ Nov 6 2015, 00:18) Да читал ...   Nov 6 2015, 06:25
- - jur   Продолжаю продираться через препоны к назначенной ...   Nov 9 2015, 16:06
|- - a123-flex   Цитата(jur @ Nov 9 2015, 19:06) Продолжаю...   Sep 20 2016, 20:14
- - krux   гуглите функцию setsockopt и опции сокетов, наприм...   Nov 9 2015, 16:25
- - jur   Цитата(krux @ Nov 9 2015, 18:25) гуглите ...   Nov 10 2015, 08:33


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

 


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


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