The main problem with using a PC to control traffic without dedicated equipment is the data transfer speed of the various outputs built into most PCs. If your customers do not have a budget for the top motion controller that you are talking about, then they simply will not get access to 100 kHz signals.
The I / O controllers for each port provide some buffering, so you get smooth results from them. This largely serves the purpose of making the software easier to “beat” these signals, and also makes the I / O frequency more stable.
The disadvantage is that buffering is likely to lead to some latency in the system, which can affect the closed loop control circuitry through control in software. Another disadvantage is that it limits your frequency parameters. One of the fastest PC I / O options that does not provide high-level flow control, such as USB or SATA, is actually an audio port, but on most systems it is limited to 64 kHz or 44 kHz.
If the audio port is your option, you don’t have to worry about timing at all, just make sure you set the frequency correctly and produce your signal like otherwise.
If you need to use a digital signal, the parallel and serial ports work similarly , but at a lower maximum speed.
EDIT Hmm ... It seems that parallel ports are a little faster than before. Advanced Parallel Port (EPP) is able to provide you with up to 2 bits of binary band, which should be within reach of your target. However, due to the way the parallel interface works, the data rate depends on the periphery, and not on a specific predetermined buffer speed. In fact, the peripheral device recognizes that it has received data or that it is ready to transmit data for each byte transmitted.
This is not so bad, because a simple peripheral device with clock synchronization is easy to configure.
In addition, data cannot flow in both directions at the same time, data coming from a peripheral device will block the data flow from the host PC. A possible way to get around this is to simply arrange access to two parallel ports or organize a peripheral device to limit its data transfers to each other cycle.
I / O on such a port is usually interrupted. In addition to several error conditions, the most useful interrupts are generated when the input or output FIFO reaches a certain level. You can use this interrupt to write (or read) new data to the port. The threshold can be set anywhere from 1 to 16 bytes. You must carefully test (using a logic analyzer / oscilloscope) that the data is indeed flowing at the expected speed, at the expected speed. You can do this almost the same in software using the QueryPerformanceCounter .