Обмен данными с FPGA

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Обмен данными с FPGA

Сообщение Vitekkz88 »

Здравствуйте,коллеги!
Перейду сразу к сути: есть плата с FPGA на борту. С этой платы "летят" пакеты с данными со скоростью 25 Мб/с.
Мне необходимо эти данные принимать по TCP/IP протоколу. Я физически подключу эту плату к компу по ethernet и буду общаться с ней с помощью программы, написанной на LabVIEW.
Как работает клиент-сервер в LabVIEW я знаю и умею пользоваться.
Однако,я пока что не нашел ответов на следующие вопросы:
Сможет ли программа на LV обрабатывать пакеты, которые приходят на такой скорости?(25 Мб/c)
Для чтения данных по TCP буду использовать TCP Read Function...
Очень важно, чтобы данные,которые приходят с FPGA не пропускались и не терялись.
За реальным временем я не гонюсь, но и за тормозами и пропусками пакетов тоже.
Возможно у функции TCP Read Function есть внутренний буфер, в который помещаются приходящие пакеты...

Открыт для диалога и спасибо за отклики!
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Обмен данными с FPGA

Сообщение AndreyDmitriev »

Если вы имеет ввиду скорость 25 мегабит - то вообще без проблем. Если 25 мегабайт (МБ/c), то с гигабитным ethernet должны получить (там реально до 70-80 МБ/c можно выжать). Другое дело - сможет ли FPGA отдавать данные на такой скорости. Буфер там есть, но о его величине я как-то не задавался вопросом, но это легко проверить - откройте соединение и пишите в него, но не читайте и смотрите во что упрётесь.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Обмен данными с FPGA

Сообщение Vitekkz88 »

AndreyDmitriev писал(а):Если вы имеет ввиду скорость 25 мегабит - то вообще без проблем. Если 25 мегабайт (МБ/c), то с гигабитным ethernet должны получить (там реально до 70-80 МБ/c можно выжать). Другое дело - сможет ли FPGA отдавать данные на такой скорости. Буфер там есть, но о его величине я как-то не задавался вопросом, но это легко проверить - откройте соединение и пишите в него, но не читайте и смотрите во что упрётесь.
Спасибо за оперативный ответ! :wink:
Про 70-80 МБ/c Вы практически проверяли?
Мне интересно,поскольку впервые буду работать с FPGA-платой.
Расскажите подробней, почему будет успевать?пожалуйста :wink:
По поводу скоростей меня мысли унесли не в те дебри...я начал думать о скорости работы Win,скорости работы приложения LabVIEW...о количестве ресурсов компа, которые будут съедаться, о потоках и тд.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Обмен данными с FPGA

Сообщение AndreyDmitriev »

Vitekkz88 писал(а): Про 70-80 МБ/c Вы практически проверяли?
Да, практически. У меня железка отдаёт 60 мегабайт в секунду и стабильно работает (ну, правда, с Jumbo). Считайте сами - 1 гигабит это 125 Мегабайт (1000:8). Минус накладные расходы. Просто попробуйте - если сделать всё аккуратно, то 25 получите без проблем. Адаптер возьмите интеловский - с ним меньше проблем.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Обмен данными с FPGA

Сообщение Vitekkz88 »

[/quote]
У меня железка отдаёт 60 мегабайт в секунду и стабильно работает (ну, правда, с Jumbo). Адаптер возьмите интеловский - с ним меньше проблем.[/quote]

Спасибо Вам большое. Буду пробовать.
Позволите к Вам обращаться, если возникнут вопросы?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Обмен данными с FPGA

Сообщение AndreyDmitriev »

Vitekkz88 писал(а): Позволите к Вам обращаться, если возникнут вопросы?
Да, конечно, хотя по FPGA я ничем не помогу. Для начала слепите клиент сервер с LabVIEW с обеих сторон и проверьте, сколько вы можете получить при разных размерах пакетов - они не должны быть очень маленькие, иначе скорости не получите.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Обмен данными с FPGA

Сообщение Vitekkz88 »

AndreyDmitriev писал(а):
Vitekkz88 писал(а): Позволите к Вам обращаться, если возникнут вопросы?
Да, конечно, хотя по FPGA я ничем не помогу. Для начала слепите клиент сервер с LabVIEW с обеих сторон и проверьте, сколько вы можете получить при разных размерах пакетов - они не должны быть очень маленькие, иначе скорости не получите.
Кстати да.
Я верно понимаю: берем клиента и сервера. Клиент ставим на одном компе, а сервер на другом. Объединяем их по ethernet, скорость по локальной сети 100Мб/c.
Начинаем с сервера слать пакеты клиенту(к примеру возьмем пакеты длинной 1,5кБ) и отслеживаем,да?

Как зависит размер пакета от скорости?Не понял...
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Обмен данными с FPGA

Сообщение AndreyDmitriev »

Vitekkz88 писал(а): Я верно понимаю: берем клиента и сервера. Клиент ставим на одном компе, а сервер на другом. Объединяем их по ethernet, скорость по локальной сети 100Мб/c.
Начинаем с сервера слать пакеты клиенту(к примеру возьмем пакеты длинной 1,5кБ) и отслеживаем,да?

Как зависит размер пакета от скорости?Не понял...
Ну у вас же есть какой-то протокол обмена. Если будете слать по одному байту, то скорости не получите - будете расходовать полтора килобайта на каждую посылку. Ну и на 100 мегабитах вы 25 мегабайт в секунду не получите по понятным причинам - там теоретический предел 12 мегабайт, а практически заметно меньше.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Обмен данными с FPGA

Сообщение Vitekkz88 »

AndreyDmitriev писал(а): Ну у вас же есть какой-то протокол обмена. Если будете слать по одному байту, то скорости не получите - будете расходовать полтора килобайта на каждую посылку. Ну и на 100 мегабитах вы 25 мегабайт в секунду не получите по понятным причинам - там теоретический предел 12 мегабайт, а практически заметно меньше.
Буду пробовать, спасибо!
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
ESeid

Автор
advanced
advanced
Сообщения: 150
Зарегистрирован: 30 мар 2011, 22:41
Награды: 1
Версия LabVIEW: 8.2-2013
Контактная информация:

Re: Обмен данными с FPGA

Сообщение ESeid »

Я работаю с 3-мя видеокамерами через ethernet или USB - по разному. Скорость передачи: 10 frame-per-second (fps), формат кадра - 640х480, point - 8 bit. Таким опбразом, реализована скорость 70 Mb/s. Но - так как работаю под Windows, а она имеет собственное мнение о загрузке компа, то пришлось реализовать специальный независимый кольцевой буфер по типу FIFO. После этого - никаких проблем.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Обмен данными с FPGA

Сообщение AndreyDmitriev »

ESeid писал(а):Я работаю с 3-мя видеокамерами через ethernet или USB - по разному. Скорость передачи: 10 frame-per-second (fps), формат кадра - 640х480, point - 8 bit. Таким опбразом, реализована скорость 70 Mb/s
Поскольку я дотошный, то не могу не заметить, что одно из другого не следует совешенно. Камеры могут отдавать сжатый в MJPEG поток, так что на транспортном уровне скорость может быть сильно ниже. Вы должны знать спецификацию камеры, чтобы утверждать это наверняка. Кроме того, траффик трёх камер совершенно не обязан складываться - это зависит от архитектуры подключения.
ESeid писал(а):пришлось реализовать специальный независимый кольцевой буфер по типу FIFO. После этого - никаких проблем.
Если вы работаете через IMAQdx, то вы изобрели велосипед, ибо кольцевой буфер там уже встроен. Если используете другое API для получения картинок - то да. Но тут мы отклоняемся от темы - кольцевой буфер автору совершенно не нужен, он при передаче картинок в основном используется.
ESeid

Автор
advanced
advanced
Сообщения: 150
Зарегистрирован: 30 мар 2011, 22:41
Награды: 1
Версия LabVIEW: 8.2-2013
Контактная информация:

Re: Обмен данными с FPGA

Сообщение ESeid »

AndreyDmitriev писал(а): Поскольку я дотошный, то не могу не заметить, что одно из другого не следует совешенно. Камеры могут отдавать сжатый в MJPEG поток, так что на транспортном уровне скорость может быть сильно ниже. Вы должны знать спецификацию камеры, чтобы утверждать это наверняка. Кроме того, траффик трёх камер совершенно не обязан складываться - это зависит от архитектуры подключения.
дотошность похвальна, но имиджинг - немножко моя профессия, и я очень тщательно слежу за тем, что у меня работает и как работает. Так как меня интересует не только само изображение, но и заключенная в нем специфическая информация (медицинского плана), никакие сжатия, да еще и безвозвратные, не допускаются. Да и соединения камер у меня не какие получаются, а какие спроектированы. Я удовлетворил вашу дотошность? :wink:
ESeid писал(а):пришлось реализовать специальный независимый кольцевой буфер по типу FIFO. После этого - никаких проблем.
Если вы работаете через IMAQdx, то вы изобрели велосипед, ибо кольцевой буфер там уже встроен.
очень часто самодельный велосипед значительно превосходит по параметрам "встроенный". Так и в этой теме - встроенный в IMAQdx баффер совершенно не удовлетворяет моим запросам, поэтому пришлось строить свой, и весьма специальный.
Если используете другое API для получения картинок - то да. Но тут мы отклоняемся от темы - кольцевой буфер автору совершенно не нужен, он при передаче картинок в основном используется.
Я не готов судить, что автору нужно, а что - нет. Но, если полученные им изображения проходят достаточно серьезную мат.обработку, то обуспечить равномерную загрузку процессора и равные временные промежутки будет очень сложно, а, значит, возникнут проблемы с бафферизацией данных. Мой подход - лучше перебдеть, чем недобдеть. :wink:
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Обмен данными с FPGA

Сообщение AndreyDmitriev »

ESeid писал(а):дотошность похвальна, но имиджинг - немножко моя профессия, и я очень тщательно слежу за тем, что у меня работает и как работает. Так как меня интересует не только само изображение, но и заключенная в нем специфическая информация (медицинского плана), никакие сжатия, да еще и безвозвратные, не допускаются. Да и соединения камер у меня не какие получаются, а какие спроектированы. Я удовлетворил вашу дотошность? :wink:
Не, всё нормально, просто вы так лихо траффик трёх камер сложили... Странно, что у вас относительно низкое разрешение для медицины, впрочем я не знаю деталей применения. Мы тоже используем кое-что из медицинских систем, переделывая, скажем так, для промышленности. Правда камеры чуть другие - к примеру, 2048x2048 7,5 FPS, 16 bit. То есть траффик под 60 MB/s - и гигабитная сеть его держит, даже ещё резерв небольшой есть. Ну, справедливости ради надо заметить, что там не TCP, а UDP с контролем целостности, но тем не менее.
ESeid

Автор
advanced
advanced
Сообщения: 150
Зарегистрирован: 30 мар 2011, 22:41
Награды: 1
Версия LabVIEW: 8.2-2013
Контактная информация:

Re: Обмен данными с FPGA

Сообщение ESeid »

AndreyDmitriev писал(а): Не, всё нормально, просто вы так лихо траффик трёх камер сложили... Странно, что у вас относительно низкое разрешение для медицины, впрочем я не знаю деталей применения.
да я и сам бы с удовольствием взял что-то более высокое по разрешению, но - увы - комп не потянет: уж больно много мат.операций приходится делать риал-тайм. Так что выгодней уменьшить поле зрения, немного подняв частоту кадров, чем иметь огромное поле в режиме фотосьемки. Хотя, конечно, от таких форматов - 2048х2048 - слюна заливает подбородок.. :wink:
Мы тоже используем кое-что из медицинских систем, переделывая, скажем так, для промышленности. Правда камеры чуть другие - к примеру, 2048x2048 7,5 FPS, 16 bit.
То есть траффик под 60 MB/s - и гигабитная сеть его держит, даже ещё резерв небольшой есть. Ну, справедливости ради надо заметить, что там не TCP, а UDP с контролем целостности, но тем не менее.
этот стандарт и мы использовали, но с ним были серьезные проблемы у пользователя, пришлось - с сожалением - отказаться в пользу более медленных, зато простых и надежных. Что поделать, для нас такие параметры, как стоимость аппаратуры, и ее простота эксплуатации - важнейшие. Покупают-то не самые богатые университетские и исследовательские лаборатории, а эксплуатируют - лаборанты, это если повезет. Потому что доктор биологии или медицины - это гораздо страшней... :wink: А область нашей аппаратуры - вот: http://www.pulseorimaging.com/experimen ... lysis.html
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Обмен данными с FPGA

Сообщение Vitekkz88 »

Ребят.
Внесу ясность: принимать я буду НЕ изображения.
Размер пакета данных я пока точно не знаю.
Еще раз к сути: пакеты с данными будут приходить от FPGA.
Программа в LabVIEW должна принимать эти пакеты и НЕ пропускать.
Прием пакетов планирую осуществлять либо по запросу к FPGA из программы в LabVIEW, либо гнать сплошной stream с FPGA с заданной скоростью(но не менее 20 МБ/c). Первый вариант проще,но есть риск,что LabVIEW не будет успевать читать все данные с FPGA(в какой-то момент времени FIFO в FPGA переполнится и мне вернется ошибка о переполнении и потере). Но опять же не известно, какого размера буфер для функции TCP Read Function.
Второй вариант надежнее, лишь бы LabVIEW успевало.
В связи с тем,что размер пакета мне пока не известен, меня волнует вопрос о буфере TCP Read Function.
Ну вот какого он размера?!Ну фиг его знает,нигде я толком не нашел инфы.
Проверил,как советовали: собрал сервера и клиента,запускал на одной машине.
Клиент только слушал,без чтения.
Сервер только писал.
Потыкал и заметил,чем больше данных я пытаюсь записать - тем больше у меня съедается памяти (в диспетчере задач смотрел).Проц не особо грузится. Дошел до придела в 60 МБ. Потом просто память кончилась и комп колом встал:).
Может кто подскажет?
По моим ощущения, такой метод зависит от используемого компа...у меня 60МБ, у кого-то может на 100МБ быть, а у третих на 30МБ к примеру....
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»