Many applications run just fine on a desktop OS like Windows 7/8/10 or Mac OS X. You can typically achieve fairly consistent loop rates of 10-100 Hz on a desktop OS, but you are at the mercy of all the other apps that run alongside your app, as well as at the mercy of the OS itself - perhaps another app needs to write to disk or needs to refresh a network connection, both actions that tend to freeze all other activity for a while. This is called non-deterministic behavior, since you have no guarantee when your process is granted access to its requested resources.
Some applications require a high level of determinism, either to deliver trustworthy data or for safety reasons. In this case you need a real-time OS (RTOS) which among other things can offer determinism. The keyword here is can, as you can easily void the deterministic behavior of an RTOS. And that's where experienced real-time software developers are important.
We have spent tens of thousands of hours making real-time applications perform just right:
- Multichannel data loggers.
- Simulation models with deterministic time-steps.
- Signal generators.
- Mixed-signal signature loggers.
An RTOS can achieve loop rates in the hundreds of kHz, but it is still susceptible to some jitter; There is still a disk that can be written to, there is still dynamic memory allocation if you aren't careful. For very hard determinism or very high loop rates (in the tens or hundreds of MHz) you need an FPGA. And that requires really specialized software developers.
Mastering FPGA programming rewards you with some very unique possibilities:
- Nanosecond triggering or re-clocking.
- Ultra-reliable safety functions that start earlier and quit later than any other part of the system.
- Truly embedded control systems that are very robust with respect to outside interference.
- Custom serial or enet protocols.
- Comparing or masking signals with nanosecond accuracy.