Добрый день, коллеги!
Прошу помощи в выборе варианта построения высокоскоростной сети передачи данных между микроконтроллерами.
Итак, есть главное мастер-устройство и от 12 до 24 ведомых устройств. Все ведомые устройства должны получать от мастер-устройства 10 Мбит данных в секунду и передавать обратно 10 Мбит данных в секунду. Ведомые устройства не передают данные между собой, только на мастер-устройство.
В итоге общий исходящий трафик от мастер-устройства составляет от 120 Мбит/сек до 240 Мбит/сек. И столько же трафика должно идти обратно от ведомых устройств на мастер.
Ведомые устройства располагаются в четырех разных направлениях от мастера, по 4-8 устройств в цепочке в каждой ветке. Все устройства соединены витой парой. Каждая ветка - это 50 см до мастера, затем между остальными устройствами в цепочке еще по 20-30 см. Наибольшее расстояние от мастера до ведомого устройства - 3 метра.
Все данные - realtime, потери недопустимы, перерывы допустимы максимум на 20-30 мсек.
На низких скоростях в пределах 1-2 Мбит/сек я бы просто сделал сеть на RS-485 или M-LVDS и качал бы данные через USART.
Как построить сеть передачи данных под такие требования - вопрос нетривиальный. Единственный вариант, какой я вижу - это бросать M-LVDS от мастера до каждого ведомого устройства отдельной витой парой и в полудуплексом режиме качать данные. Но на микроконтроллер такие битрейты не заведешь - это нужно ставить FPGA и на ней делать какой-то специальный канальный протокол, наверное с применением манчестерского кода. А с FPGA бросать на микроконтроллер, например, через SPI и DMA.
Порекомендуйте, пожалуйста, как совсем не надо делать и какой вариант стоит рассмотреть.
А то меня тут подталкивают сделать эту сеть на основе USB HS с кучей вложенных хабов. Это, конечно, красивый вариант, но интуиция подсказывает, что 24 и даже 12 устройств одновременно на USB передающие в таком объеме realtime данные - это фантастика и работать это не будет.