All right, so I'm not very clear-headed at the moment... I tried to
read something about SPI. All the "TM" signs around it spooked me into
thinking that there's some specific protocol associated with it. It
does seem to be just a clock/signal pair. I had assumed that there'd be
some meta-stuff around it like there is with RS-232 (e.g. start/stop
bit). Are you saying that this is not the case and that I could pretty
much just wire up the signal and clock lines to a 74HC594 (which I'd
stumbled upon previously investigating shift registers) and it would work?
Yes. I've done exactly the same thing, both for inputs and outputs.
Another question: If my D FFs were having trouble distinguishing
signals, what reason do I have to believe that a serial connection would
fare any better? I mean, I know it would just from having seen it work,
but I don't know why.
That's why I suggested using RS-485 drivers at the PIC end and
receivers at the breakout end - very noise-resistant. That along with
a slower logic family and all the usual anti-noise precautions.
Also, come to think of it, I'm not sure how this new configuration would
look topologically. Would the SIPO shift registers need to be on the
main board, or could they be on the breakouts? If I'm connecting the
registers in series, am I right in guessing that the breakouts would
have to be physically daisy-chained instead of having a star topology?
What do you mean by a "breakout"? One 8-bit register, or an entire
128-bit device, or something in between? I'm assuming the latter.
Anyway, I'd put the shift registers on the same board as the devices
they are driving. That is to say, where you have dozens of data bits
passing between chips, keep those chips on the same board (or at the
very least, in the same box).
If you wanted to drive multiple 128-bit breakouts, you could do it by
daisy-chaining but that would be a very brittle arrangement, since any
time your breakout configuration changed you'd have to alter the
entire data-transmission sequence. Much better to (similar to what
you were trying originally) use a star configuration with the same
serial clock and data (and reset?) signal being fed to each breakout,
but a separate latch strobe to each breakout.