Что касается интерфейса к реальному миру, то вариантов 2: USB и Gigabit Ethernet. USB:: libusb Linux -> и WinUSB для Windows (в 7|8 искаропки) --> http://caxapa.ru/380062.html
http://www.libusb.org/
Ethernet можно использовать двояко. Можно классичести, UDP|TCP, а можно творчески.
На гигабитный порт ставим управляемый гигабитный коммутатор (5 портовые сайчас 1.5тыр+ стоят), и жестко прописываем ему MAC адрес периферийного устройства на соотв. дырку.
В Linux RAW Ethernet поддерживает сама ОСь, в венде потрахацца надо, но можно. WinPcap
http://www.winpcap.org/
С учетом жестко настроенного маршрута Ethernet можно рассматривать как связь точка-точка.
Далее пользуемся свойствами DMA и автоматичесого CRC Ethernet, которые есть по всех контроллерах, и делаем достаточно простое ПО в устройстве: процедура получает указатель на начало пакета и его длину (все выровнено по границе кеш лайна), программит DMA, и получает отчет о том, ушел пакет из контроллера или нет.
По верх всего этого делаем простой пакетный протокол, базируясь на предположении о малой вероятности потери пакета и не очень большой "латентности перестановки" (полностью забить на нарушение порядка прихода пакетов нельзя - ои внутри обработчика ОСи все равно могут перепутаться).
В итоге с минимальными затратами процессорного времени в устройстве имеем дуплексный канал связи 10Мбайт/сек и радуемся жизни.
Ну а если набо более - AX88180 от Asix
http://www.asix.co …mID=88;65;102&PLine=65
Что касается латентности, то тут расклад такой. Ethernet под вендой в варианте UDP даст латентность 10-15 мс, в варианте WinPcap не знаю.
В линухе можно поставть RT ядро, и там латентности станут микросекундными.
Ethernet приятент своей не склонностью к зависанию, в отличие от "всеми любимого, но странною любовью" USB, мать его...