Analog and Digital Ground Planes?

Hi everybody,

I'm designing my own Arduino shield, and I would like to include a ground plane on the board, but I'm unsure how to handle analog and digital grounds. To begin, I'm still not completely sure what the difference is between analog and digital ground, can anyone explain it to me simply? The shield has a mixture of digital components (SD card, level shifter, RTC, Digital Sensor inputs) and analog components (Voltage regulator, voltage reference, op amp, ADC, Analog sensor inputs). The analog components and digital components are more or less separated into their own sides of the board. Should I do one large ground plane, or a digital ground plane and an analog ground plane connected at a point? I'd me more than happy to post schematics if anyone wants to see them.

Thanks in advance for any help!

You might take a look at the datasheets for some of the hi-res A/D converters,
10-12 bits or more. They will often discuss analog and digital ground planes.

As I recall, the usual idea is to physically separate the analog and digital circuitry
on the pcb, as you mentioned, and provide separate ground planes under each
section, and then use a "single-point" connection between the 2 ground planes,
with said connection usually located underneath the A/D converter, which
typically has both analog and digital ground pins.

Related to this, the recommended way to connect various circuits together is
to use a Y, or octopus, type configuration. IE, instead of daisy-chaining grounds
all other the place from one circuit to the next, each separate circuit has a
ground wire separate from all the others, and that is run back to the power
injection point on the pcb. Another instance of single-point grounding. This
helps eliminate noisy ground loops, and also makes the overall system look
less like a bunch of spaghetti wiring.

The reason for separate ground planes is to reduce the amount of switching noise on the analog signal wires. Whenever a logic signal switches from high-to-low or low-to-high stray capacitances will induce small current pulses onto nearby signals and the ground plane (ideally you want the groundplane to soak this up to protect the other signals from cross talk).

Also whenever a signal wire carrying a current (such as for an LED) switches the stray inductance induces a voltage on nearby conductors (especially if the wiring in question forms open loops). Again the ground plane will soak up these induced signals and reduce crosstalk.

But all these changes will also re-radiate from the ground plane to other signals (but more weakly). Having the planes separate will strongly reduce the high speed switching noise that gets onto the analog plane (where important signals may be tiny and noise is a real issue).

And lastly the other reason is to reduce the size and noisiness of ground currents in the analog circuitry. The digital ground plane is carrying the supply current return from the digital chips - this current causes a small voltage (due to the non-zero resistance of copper) between the supply and the chips. This means a small (and noisy) voltage signal exists between different parts of the ground plane. By keeping the analog power and ground separate (except for a single common ground point) this means these currents can be both smaller (analog circuitry is usually simpler and less power-hungry) and less noisy (no logic switching).

The Arduino design is a compromise in that the analog and digital supplies and grounds are shared. This means that analog signals into the ADC will be noisier than is theoretically possible. However the ADC has a 5mV resolution (normally). So if the noise is a few mV it won't be a problem. Its when you are amplifying microvolt analog signals that all this defence against noise becomes important. If the chip had a 16 bit ADC then better layout would be essential.

When keeping the grounds and supplies separate they will be at the same voltage (they have to be within 0.3V anyway), but the grounds will only be connected at one common point and each supply will have a separate regulator and decoupling. The analog supply must be via a linear regulator, not a switching one...

Thank you all for your help so far! I recently found out that I have been confusing ground planes and ground pours to be the same thing. Does this advice still apply to ground pours?
Oric_dan, I've seen the octopus configuration in datasheets, unfortunately, I wasn't able to do it for this board because space is kind of limited (And I still a lot of practice when it comes to PCB design :)).
MarkT, thank you for the wonderful explanation. Are these effects reduced at lower speeds? I have ICs that communicate with I2C and SPI on this board but I also have an op-amp that amplifies a relatively small signal.

The op-amp would probably need special grounding considerations to isolate the input from the digital noise on the output or Arduino side. What you would be doing is trying to keep the noise out of the amplifier so that it doesn't swamp out the small signal you are amplifying.

Does this advice still apply to ground pours?

I can't say for sure, but I imagine the typical ground pour will effectively
short together everywheres all of the analog and digital grounds on your pcb,
IOW do the exact opposite of isolating the analog cktry from the digital :-(.
Maybe you can specify out-of-bounds areas for the pour.

I've seen the octopus configuration in datasheets, unfortunately, I
wasn't able to do it for this board because space is kind of limited

Actually [forgetting about the ground pour problem], you can do this on your
pcb by physically separating the analog from the digital cktry [as you've already
done], and then keeping the ground traces for the 2 parts completely separate
except for a single-point connection at the cpu chip.

Associated with this, you would also want to keep the ground connections
of your wiring external to the pcb separate, IE, don't mix ground connections
to analog sensors with those to digital devices.