Одна из идей, выигрывающая соревнование в моей глове. Модемный вариант совмещенной шины. Несколько несущих и узкополосная модуляция а ля BPSK на каждой из них.
Поднесущая ~50 КГц с подуляцией BPSK 50 кбит/сек. Битовая скорость и частота несущей равны. Это канал управления и узкополосного обмена.
Доступ синхронный и по опросу. Программирование временных окон вперед.
Поднесущая 500....1000 КГц, модуляция такая же. Это канал широкополосного обмена. Тоже сихронный доступ.
Мастер вещает на узкой полосе - разделение каналов по окнам и расписание доступа. Отвечают коротко там же, либо на широкополосном канале (который имеют не все устройства, строго говоря).
передача может быть многоадресной - но всегда под контролем мастера.
Все оптимизированно - локальные 8 битные адреса (аналоги MAC адресов тоже есть, но они для регулярной передачи не используются). И т.д.
FEC - Hamming(15,11), таблично. Эффективность канала 11/15 ≈ 0.733
Минимальная посылка - 24...32 бита:
* 8 бит - адрес
* CRC8
* 8...16 бит данных
32/0.73 ~ 44 бита "в эфире". При 60 кбит/сек сырой скороси получим минимальный фрейм 1 мс (с учетом защитных интервалов на рассогласование времени) - вполне ок.
Есть несколько know how, как без синхропосылки обойтись. Или сделать ее 8 бит, например.
Важно - есть две временных сетки - фиксированная и переменная. В рамках фиксированной устройства шлют минимальный пакет по времени, без запроса. Там закодировано - надо ли им доступ к каналу, подтверждения принятого и т.д.
Важно - все делают паузу на ферейм фиксированной сетки, потом транзакция продолжается. Т.е. устройство А вещает, по наступлению времени затыкается. Устройство, которому положено пукнуть в этот слот, пукает, далее устройство А продолжает свой пакет.
[Это наброски. Рисечить и моделировать - непочатый край.]
Аппаратная база - Cortex-M4 100Мгц+ со своими ЦАП|АЦП для узкого канала, iCE40 (где есть DSP блоки) + ADC + DDS для широкого канала.
Возможно, iCE40 придется и в минимальной конфигурации использовать для обеспечения точной и надежной синхронизации.