Как организовать передачу данных с ADC через Ethernet PHY?
Добрый день.
Разрабатываю новое устройство - один научный прибор, задача весьма новая для меня.
В устройстве мне требуется оцифровывать данные и передавать дальше на хранение и анализ.
Использую два восьмибитных AЦП со скоростью до 80 MSPS.
Изначальная задумка была передавать данные с АЦП на контроллер CY7C68013A, работающий как скоростной FIFO-USB. Проблема в том, что оборудование расположено на улице, а основные компьютеры - в здании, на некотором удалении. Соответственно нужно организовывать связь по Ethernet или даже оптике.
Это требует наличия дополнительного компьютера на месте, принимающего данные из USB (приборов на самом деле два, так что трафик удваивается) и посылающего их дальше по сети. Очевидно что миниатюрное решение, вроде Raspberry PI) тут не справится, а полноценный компьютер слишком усложняет и удорожает систему.
Исходя из этого хотелось бы реализовать прямой "мост" между параллельной шиной данных и ethernet phy чипом, без заметных просадок по скорости.
Знаю что делают подобные решения на FPGA, но в этой области я боюсь совсем не силен, никогда не работал с программируемой логикой и языки вроде VHDL не знаю. Если делать так - потребуется дополнительное время на приобретение демоплат, изучение и разработку. Итоговая цена микросхем тоже несколько пугает.
Возможно ли в данном случае применение достаточно мощного ARM микроконтроллера (например из топовых stm32), справится ли чип с быстрым копированием данных из АЦП в ethernet phy?
Возможно есть какие-то готовые (и самое главное не очень сложно добываемые) решения?
Транслировать по сети думаю с помощью UDP, для уменьшения накладных расходов.
не FPGA, а DSP процессоры, типа TMS320C6xxx, они есть в составе SOC OMAP, keystone и прочих числодробилок. В таких процессорах обычно есть интерфейсы для работы с ADC через DMA, но боюсь, что вам не понравится цена и сложность освоения.
А что-нибудь справится? 80 Мвыб/сек * (2 * 8) бит = 1280 Мбит/сек в чистых данных!
Я перенес часть алгоритма в ПЛИС рядом с АЦП. Передаю по RS485 на 1Мбит/сек.
Серожа none: данные с двух АЦП в теории можно гнать по двум разным каналам (число физических линий у меня не ограничено). Если совсем туго - можно битрейт уменьшить, это я привел топовые характеристики, в реальности наверное не будет такого ровного потока.
Хочется хотя бы от чего-то оттолкнуться.
К примеру в ЦЕРНе тоже пишут много и быстро , но там только по наступлению события (триггер). И потом передают весь массив по сети. Главное там есть буферная память для отложенной передачи.