I have 2 boards connected via a ribbon cable.

CPU board is an 3.3v ARM providing the I2S signals(bit clk, data, L/R signal). I'm using 44100 - 16 bit audio so the bit clock is just approx 1.4 mhz.

The second board has a TI PCM5100 DAC. (I made a small PCB to test with) Today - the two boards are hacked together using 4 inches of ribbon cable and 6 inches of individual wires connected to the CPU board.

The testing proved successful.

I want to change both boards to enable a 12 inch ribbon cable to join the two boards.

Space is a concern so I don't want to wire the ribbon cable as G S G S G S G but just supply signal lines next to each other.

Currently for testing I have no termination - just the CPU pin driving the DAC via the wire/cable.

Researching ribbon cable impedance, I find that it can range from 100 to 150 ohms depending on gnd/signal pairing or not paring.

If I place a 120 ohm termination resistor at the PCM5100 I2S inputs that means the cpu I2S pin must source around 27 ma (3.3 / 120) - which is outside the pin's drive specification.

I can add a buffer/driver on the cpu board to drive the line but not sure if that is a good direction to go.

Should I be concerned about line termination with 12 inches of ribbon cable?

Thanks in advance for any comments.


Update - Test my understanding:

I have 10 signals that pass via the ribbon cable:

2 with bit rates of approx 1.4 mhz (I2S bit clock and data) 1 with a rate if 88 khz - I2S L/R signal

2 I2C signals (clk and data) - baud 100 khz or 400 khz

and 5 nearly constant level signals: 3.3v GND Reset Mute IRQ

If I add 100 ohms in series with the two I2S signals (BCLK and I2S Data) and position them in the ribbon cable as defined below, then I should have a good chance of addressing my concern - right?

Ribbon cable layout

  1. GND
  2. I2S Bclk
  3. 3.3V
  4. I2S Data
  5. Reset
  6. I2S L/R signal
  7. Mute
  8. I2C CLK
  9. IRQ
  10. I2C Data
  • 1
    \$\begingroup\$ You might first want to check if the signal looks good. If it looks good, there is need to improve it. \$\endgroup\$
    – PlasmaHH
    May 10, 2017 at 12:23
  • 1
    \$\begingroup\$ @PlasmaHH, for the record, that's one way to look at it with 1-off's but not if you're making anything more than a few. It's just too subjective to the particular stuff you have. \$\endgroup\$
    – TonyM
    May 10, 2017 at 12:28
  • \$\begingroup\$ The "Hifier Fantasia" sound card used 74AC245 bus transceivers to drive I²S over a DVI cable. I'm not sure about a ribbon cable, but I'd certainly consider LVDS. \$\endgroup\$
    – CL.
    May 10, 2017 at 12:28
  • 2
    \$\begingroup\$ For point-to-point connections, always consider source termination (resistors in series with the source) before other options. \$\endgroup\$ May 10, 2017 at 14:14

2 Answers 2


For a point to point link like this there is no reason not to go for source termination, 100 ohms more or less, in series at the driving end of the cable as close to the processor pin as you can get it.

It terminates the energy reflected from the load without increasing the drive requirement, but you should allow for the impedance of the source pin (hence 100 ohms give or take rather then 120 ish).

Where is your MCLK source, that is the one that really matters for system performance as it is what drives the modulator?

  • \$\begingroup\$ The PCM5100 DAC can take BCLK (bit clock) and internally use a pll to derive the device's system clock. \$\endgroup\$
    – JHinkle
    May 10, 2017 at 13:46

As I said in a comment:

When considering transmission line effects, frequency does not matter, only risetime does. Roundtrip in a 12" cable would be 4-6ns. If the ARM has 5ns risetime then the clock ringing can be bad enough to induce double clocking and completely corrupt the signal if termination is not used.

Therefore termination is a must. Source termination will work fine. The actual resistor value is not that critical as long as it corresponds roughly to cable impedance and/or slows down the rise time enough to make it much longer than the round trip... but of course using the proper matching is always better.

Now, keep in mind your ribbon cable has very high coupling between adjacent signal lines. Thus, impedance becomes a fuzzy concept.

Say your cable has 3 wires: GND,Signal,GND. The impedance of the "signal" transmission line relative to its "GND" neighbors is about 50 or 100 ohms, I don't remember, but at least it's constant, so all good.

Now, if you have GND, Signal1, Signal2. If Signal2 is constant, then we have the previous case, but if Signal1 and Signal2 transition to the same level simultaneously, then they no longer interact together, so the impedance of Signal1 versus GND will be higher. (i.e. it's a mess, just use a 75R resistor).

A 12" length corresponds to a PATA cable, roughly, and they had to insert GND wires between PATA33 and PATA66, so you should be good up to 33MHz... so it will work with only 1 GND wire as long as it's source-terminated...

Space is a concern so I don't want to wire the ribbon cable as G S G S G S G but just supply signal lines next to each other.

Now, your wires are BCLK GND WCLK DATA, in that order obviously, since the most sensitive is BCLK and the aggressor is DATA. Are you really telling us that you can't afford 2 extra GND wires? Come on...

GND BCLK GND WCLK DATA GND would be much better... it's only 2.54mm wider ffs.

Now, I suppose this is not hi-fi, so we'll stop there.


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.