I have a problem where I need to both set and monitor approximately 16 digital line states through a cable about 3m long. Ideally I'd like to have parallel signals at both ends, but serialised for the cable. i.e. parallel - serial ---- cable ---- serial - parallel. Any signal at the parallel inputs on either end should be replicated on the other. The rate of update doesn't have to be high, even 1Hz would be fine. I can't seem to find a pair of parallel to serial and serial to parallel ic's to simply do this. Also SERDES devices are typically for much higher speeds than I need.

Does anyone know of a convenient way to do this?

  • \$\begingroup\$ Who cares if the serialization rate is much much higher than what you need. It needs to be higher and that's it. Or, just wire 16 cables that carry the slow speed digital signals and be done. \$\endgroup\$
    – Andy aka
    Aug 22, 2021 at 12:38
  • 1
    \$\begingroup\$ Using serdes seems an appropriate idea \$\endgroup\$
    – Andy aka
    Aug 22, 2021 at 13:01
  • 2
    \$\begingroup\$ Trivial in an FPGA at each end, SERDES or not. At 1Hz, two MCUs with slowish SPI or I2C between them would be cheap and simple. \$\endgroup\$
    – user16324
    Aug 22, 2021 at 13:35
  • 2
    \$\begingroup\$ Put an Arduino at each end \$\endgroup\$
    – Neil_UK
    Aug 22, 2021 at 14:32
  • \$\begingroup\$ The obvious way would be to use a pair of 8 bit shift registers in series at each end. There must be dozens of examples to choose from. On the other hand, the serdes does seem like a tailor made solution. \$\endgroup\$
    – Supa Nova
    Aug 22, 2021 at 19:12

1 Answer 1


I suspect you are looking for a setup where a parallel to serial register on the "far" end transmits the data through the wire and a serial to parallel to serial shift register on the receiving end.

However, that basic approach has several issues:

  • Most of the common register chips come in 8 bits so you will need to chain two of them. You are already looking at 4 chips to do this.
  • You will need a clock signal which will need to travel between the endpoints, already increasing the number of wires.
  • You will need a load/start line that will control the conversion sequence
  • Even at 3 meters and very slow speeds, the likelihood of having errors due to noise is rather high.

Given the above, below are a few choices you may want to consider.

  1. Bite the bullet and run all 16 wires plus power or ground. Sounds like a lot but you can use 3 CAT-5 wires with RJ45 connector and it would be relatively compact. Still have to worry about noise, so use a set of resistors that will run a few mA of current through the wire to increase noise tolerance.
  2. If you are handy with microcontrollers, use a microcontroller instead of shirt registers to do the encoding/decoding. You can use an 8-bit PIC with enough IO to sample the lines plus 1 extra for a UART. On the far end encode and send it using the UART and the reverse on the receiving end. The PICs have built-in oscillators and if you can find in stock one that also has internal pull-ups, you will just need one chip and a bypass capacitor on each side. You'll need a 3 wire cable (power/ground/serial).
  3. This is a variation of (2) to deal with possible noise, add a differential driver on the far end and a differential receiver on the other end. Adds two chips, and the cable now has to have 4 wires but it will be immune to noise.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.