jur 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба Приветствую! Никогда на практике не сталкивался с передачей данных по сети 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-ком? Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба Никогда на практике не сталкивался с передачей данных по сети Ethernet. И вот... Тогда совет - не беритесь за эту работу. Слишком высокая планка для начала. Причем про использование на встречной стороне любой произвольной машины с win или чем либо еще десктопно-ширпотребным следует сразу забыть. Сформировать и вдуть Ethernet фреймы (а ничего другого Вам не надо) на указанной скорости из FPGA особо явных проблем не должно быть. Поминание всяких слов типа "Wiznet" в конетксте озвученного задания, абсолютно ни о чем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jur 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба Тогда совет - не беритесь за эту работу. Слишком высокая планка для начала. Хм... Неужели эта задача настолько сложна? Речь-то всего о канале вроде обычного COM-порта, только очень быстром :-) Соединение точка-точка. Все остальное в Мире Интернета и сетей данной задачи не касается. Устройство данные генерит - достаточно мощный PC-шник принимает и все. Причем про использование на встречной стороне любой произвольной машины с win или чем либо еще десктопно-ширпотребным следует сразу забыть. Безусловно! Этот вопрос будет согласован с заказчиком. Понятное дело, что работать с таким потоком данных - это не офисная задача. Предварительно я уже обговорил с ними насчет размера и скорости потока. Встретил понимание. Если понадобится, между порциями данных будут введены небольшие паузы. Сформировать и вдуть Ethernet фреймы (а ничего другого Вам не надо) на указанной скорости из FPGA особо явных проблем не должно быть. Поминание всяких слов типа "Wiznet" в конетксте озвученного задания, абсолютно ни о чем. Во, во. Подскажите пожалуйста, как это по-проще сделать? Какую элементную базу лучше применить? По какому протоколу передавать и принимать данные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба Хм... Неужели эта задача настолько сложна? Да. Для начинающего наверняка не подъемна, если речь идет о каких-то реальных сроках. достаточно мощный PC-шник принимает и все. Великолепно. Думаю, что у Вас найдется пара PC с Windows. Попробуйте для начала переслать и писать на диск эти самые 100 мегабайт в секунду. Какую элементную базу лучше применить? Голый PHY - это очевидно. По какому протоколу передавать и принимать данные? Уже писал - просто Ethernet фрейм. Минимально-достаточное условие для стыковки с готовой гигабитой оптикой на встречной стороне. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jur 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба Для начинающего наверняка не подъемна, если речь идет о каки-то реалных сроках. Сроки вполне нормальные, не драконовские. Я предполагал месяца 3 на разработку узла передачи и примерно столько же на доводку опытного образца. Великолепно. Думаю, что у Вас найдется пара PC с Windows. Попробуйте переслать и писать на диск эти самые 100 мегабайт в секунду. Да, я как раз об этом задумывался. Даже начал ваять пробную пару клиент-сервер. Только пока не разобрался, как передавать данные по протоколам более низкого уровня относительно UDP. Спасибо за подсказку! Голый PHY - это очевидно. Уже писал - просто Ethernet фрейм. Минимально-достаточное условие для стыковки с готовой гигабитой оптикой на встречной стороне. Я попробовал поискать в Гугле. Довольно много всего, туманно пока... Обратил внимание на Intel, но у них, насколько я понял, ориентация на PC с Виндовыми драйверами. Подскажите, пожалуйста, примерное направление, голый PHY каких фирм посмотреть? Чтобы по-проще... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба PHY каких фирм посмотреть? Чтобы по-проще... Не подскажу - не занимался гигабитной оптикой. Но в общем это совершенно не принципиально - они достаточно одинаковы, это не MAC. Что-то вроде МАС будете делать в FPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jur 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба Не подскажу - не занимался гигабитной оптикой. Но в общем это совершенно не принципиально - они достаточно одинаковы, это не MAC. Что-то вроде МАС будете делать в FPGA. Большое спасибо за помощь! Пошел наковыривать информацию :-) Пока не утратил надежды на решение этой задачи... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба ..1 Гигабит Ethernet 100 мбайт в секунду не даст - максимум 90 Мбайт/с по UDP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба ..1 Гигабит Ethernet 100 мбайт в секунду не даст - максимум 90 Мбайт/с по UDP. Да ладно сочинять то! Все же зависит от размера фреймов.. Вот, например, из Figure 2. можно видеть, что для фреймов с размером больше 512 байт вполне можно передавать 100 МБайт/с и даже поверх TCP/IP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба ..1 Гигабит Ethernet 100 мбайт в секунду не даст - максимум 90 Мбайт/с по UDP. По этой причине даже UDP использовать не надо, как по причине хоть и малой, но избыточности, и главное, по причине наличия излишеств в виде стека. При использовании допиленного драйвера сетевой карты - можно уже пробовать и под 100 подбираться, ибо 100 мегабайт это 800 мегабит+заголовки+гапы. Figure 2. можно видеть, что для фреймов с размером больше 512 байт вполне можно передавать 100 МБайт/с даже поверх TCP/IP. Значит можно с интеловской сетевой картой и ее родными драверами под каким-нибудь линуксовым сервером попробовать потестировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба Да ладно сочинять то! Все же зависит от размера фреймов.. Вот, например, из Figure 2. можно видеть, что для фреймов с размером больше 512 байт вполне можно передавать 100 МБайт/с даже поверх TCP/IP. ..может быть, но у нас не получалось , точнее у наших программистов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба ..может быть, но у нас не получалось , точнее у наших программистов. А тут результат зависит не только от программистов. Важны также скорость и обьем жестких дисков, сколько свободного места есть на этих дисках и насколько сильно оно фрагментировано. Также важны скорость и обьем ОЗУ, рабочая частота ЦПУ, количество посторонних процессов в менеджере задач и прочие ньюансы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба А тут результат зависит не только от программистов. Важны также скорость и обьем жестких дисков, сколько свободного места есть на этих дисках и насколько сильно оно фрагментировано. Также важны скорость и обьем ОЗУ, рабочая частота ЦПУ, количество посторонних процессов в менеджере задач и прочие ньюансы. ... еще забыли про потери на разъемах, кабелях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба ... еще забыли про потери на разъемах, кабелях. Шутить изволите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба ... еще забыли про потери на разъемах, кабелях. В dB, очевидно? :) :) :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться