On Sun, 18 May 2014 10:33:09 -0700, haiticare2011 wrote:
> GPIO pins, which are just digital high-low pins under SW control, are
> generally the simplest output from a CPU IC. Does anyone have an opinion
> about the best way to get this functionality out of a generic PC?
>
> For instance, a generic PC (a fast one) these days will have USB 3.0 and
> SATA 3-6 gB/s. As well, cards exist for a parallel port, though not
> sure of speed.
Well, SATA is a pretty specialized protocol, which in addition to
everything else is clocked spread-spectrum so it's not really suitable
for GPIO. Most peripherals on a modern x86 PC are pretty removed from the
CPU control, because wiggling I/O directly from a 3 GHz processor is just
not feasible; it's handled by the motherboard chipset that connects GPIO
across a series of buses, usually starting with PCI.
ARM, on the other hand, traditionally keeps the IO close to the CPU and
doesn't even have motherboard chipsets. TI ARM units, such as the AM335x
on the $45 beaglebone platform, have a pretty cool feature: the CPU is
packaged with two I/O processors called PRU. Each PRU is a 200MHz RISC 32-
bit unit, with access both to the processor bus and to the peripheral
circuits, that run autonomously, and therefore can wiggle the I/O pins at
intervals guaranteed not to be less than 50 ns. In practice, reaching
200MHz is not quite possible, but 50-100 MHz is doable.
The traditional x86 architecture is not even trying to have advanced GPIO.
Intel for instance produced an embedded small form-factor board called
Galileo, as a response to all those embedded ARM and AVR boards. It has
GPIO, but they implemented it as an I2C parallel port, with the speed
limited to 200 Hz---pretty sad.
If you are tied to x86 PC and/or Windows, your best bet would be PCI
parallel ports. Usually the speed will be in the south of 100kHz, and you
can get 8 bits of output and a similar number of input bits per each port.