2
\$\begingroup\$

I have a system where I will connect up to 128 identical magnometer ICs up to an FPGA. I am trying to decide between SPI and I2C for comms. If I use SPI the setup will require 128 + 3 wires IF all sensors are on the same bus.

How do I decide/calculate if this is feasible and the sensors and wire won't load the circuit with too much capacitance or resistance?

The sensors will be distributed across several circuit boards so most of the wire length will be connecting sensor boards to each other.

I guess a general answer would be nice but just in case I am using these sensors and FPGA.

EDIT: I appreciate any helpful advice on changing the system but what I'm looking for is how to calculate how many wires and sensors I can add before the capacitance is too great.

\$\endgroup\$
11
  • \$\begingroup\$ Why not use a multiplexer and differential signaling? \$\endgroup\$ Commented Oct 4, 2014 at 15:00
  • \$\begingroup\$ What data rate are you planning to use? Can it operate in daisy chain mode? \$\endgroup\$
    – Andy aka
    Commented Oct 4, 2014 at 15:00
  • \$\begingroup\$ I haven't decided the data rate but 1Mhz or so would be ideal. Down to 200kHz might be doable. Daisy chaining would make the system too slow \$\endgroup\$
    – ballaw
    Commented Oct 4, 2014 at 15:19
  • \$\begingroup\$ Please tell me how would a multiplexer and differential signaling work? The sensors take single-ended signals. \$\endgroup\$
    – ballaw
    Commented Oct 4, 2014 at 15:20
  • \$\begingroup\$ You have a driver on one side, and a receiver on the other. Or just on one side if the FPGA can generate/process a differential signal. \$\endgroup\$ Commented Oct 4, 2014 at 15:26

1 Answer 1

1
\$\begingroup\$

To answer your main question: No, SPI TTL or CMOS signals can not reliably drive 128 loads via off-board cables. There is no easy calculation you can do to show this. It has to do with both loading, reflections and ground references. You can simulate the propertis of such a system, but it is a complicated waste of time.

What might work reasonably well is to use RS422 drivers and receivers specified for as many loads as you need. You also need to terminate each differential pair at the furthest end. If you have multiple SPI slaves per board, then they can share RS422 receivers. You also probably want to at least partially daisy chain your SPI slaves. For example, all slaves on a single board could form a chain. It will greatly reduce your cabling.

This way you will have differential signaling in your cables, which can handle more loads and is a way more reliable signaling scheme in cables. It does however double you number of wires..

But a disclaimer is in order: No one in their right mind would design a system like this with 128+3 signaling lanes.

\$\endgroup\$
1
  • \$\begingroup\$ Often the best solution to a problem like this is a moderate number of identical boards each handling a moderate number of sensors and then fanning in some concise representation of the results. And it's typically cheaper even in a prototype run to design and build multiple copies of something of moderate size than one copy of something big. Even if a "master" is needed it may be possible to have that be a configuration or bitstream variant of the same board. FWIW the question is almost six years old. \$\endgroup\$ Commented May 18, 2020 at 16:50

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.