If you don't need extended safety (verified behaviour) or real time / super low latency, there's indeed no need to use an FPGA, as outlined above and just any linux board would do (although I'd rather go with the Linkit Smart Duo, with on-board AVR for the low level stuff - unfortunately, those tend to be sold out).
If you'd still want to do FPGA, I have some reference setups that do UDP/RTP streaming (the 'net scope' approach), but USB is also an option. The board/project is outlined here:
https://hackaday.io/project/162259-netpp-nodeThe general pros/cons with UDP and TCP:
- UDP : data will go out, no buffering, no SDRAM needed, but: potential packet loss or reordering through routers
- TCP: Buffering required, arbitrary stalls can delay your stream, low performance with lwip
Same goes on the USB side for Bulk transfers (TCP-like) and isochronous (UDP-like).
So the basic dogma in a flaky network then boils down to choosing from either:
- TCP: Rare timeouts and session aborts
- UDP: More frequent drops and gaps in your stream, but data keeps flowing
In general, just any solution can cause potential overhead, either on the hardware or on the software side. Eventually, it all depends on the framework you're embedding this in.
The quick spin with an embedded linux is often good enough for a prototype, but maybe not so for 24/7/365 usage.