In my system the SPI interface for the ADC is returning 0xFF for every read. What could be wrong?
The new generation of GSPS (gigasample per second) ADCs (analog-to-digital converters) offer industry-leading performance and reliability in the systems implementation. However, if the SPI interface reads back 0xFF for every read, well, that is certainly a nonstarter. This could very well mean something inside the ADC is not up to snuff. Let us find out what it could be.
The latest generation of GSPS ADCs, like the AD9680 for example, is designed on a deep submicron 65 nm CMOS process. In order to hit the required ac performance specifications, the design had to accommodate multiple voltage domains (1.25 V, 2.5 V, 3.3 V). Usually, any silicon device with these multiple voltage domains will need some sort of power supply sequencing. However, the designers at Analog Devices built in some super-visory circuits to make the AD9680 easier for customers to implement in their systems by eliminating the need for any power supply sequencing.
The AD9680 has an internal power-on reset (POR) nanny circuit that man-ages all the power rails. Until this POR circuit is satisfied with the power rail levels, the device will be in reset mode. In reset mode, if SPIVDD is at 1.8 V, 2.5 V, or 3.3 V, the ADC will send 0xFF through the SPI port for every read. Looks like we are getting somewhere. This is where your best friend is the old reliable digital multimeter (DMM).
Using the DMM, the first place to check would be the supply voltages at the various pins of the AD9680. Chances are one of them is out of range as far as the POR circuit is concerned. Now here is where things could get tricky. Take a look at Figure 1, which shows the block diagram schematic of the AD9680-1250 being clocked at 1.25 GHz. Everything here looks normal to someone taking a first look at the schematic. The decoupling capacitors are not shown here, as neither are other supply domains. The focus is on the 1.25 V domain as this is the smallest supply voltage.
The ADP1741 should have enough room to supply all the domains connected to 1.25 V. However, the culprit here is not the LDO, nor the ADC, but the unsuspecting ferrite bead. Usually, ferrite beads are used in power networks to filter the power going to a certain device. One parameter of the ferrite bead that is often overlooked is the DCR (dc resistance). So why do we have to worry about the DCR? Because a certain gentleman by the name of Georg Simon Ohm said so.
Ohm’s law states that the current through a conductor between two points is directly proportional to the potential difference across the two points. So, the ADP1741 LDO output might measure 1.25 V, which sounds OK. However, if you measure the voltage at the ADC pins, or on the other side of the ferrite bead, the DMM reads 1.12 V (assuming nominal currents). This is the real reason why the ADC SPI was reading 0xFF. The nanny obviously was not happy with the voltages inside the AD9680.
So what is the remedy? There are some options:
1. Choose to not use the ferrite bead. This may or may not make the design more susceptible to noise.
2. Adjust the LDO output voltage up to account for the IR drop across the ferrite bead. However, this could potentially expose the AD9680 to excessive voltages when an adequate amount of current isn’t being pulled.
3. Choose another ferrite bead that has the same impedance and current carrying capacity, but lower DCR (less than 50 mΩ).
4. Split the voltage outputs to the respective domains (AVDD1, AVDD1_SR, DVDD, DRVDD) and use a ferrite bead with lower DCR to ensure proper operating voltage.
Figure 2 shows Options 2 and 4, discussed above. Option 4 offers the best compromise. However, this does add to the bill of material (BOM) cost, which must be taken into consideration. Option 4 also provides more noise immunity by providing some filtering between the AVDD, DVDD, and DRVDD domains.
So the next time you plug in an ADC, clock it, and find that it doesn’t work and the SPI is returning 0xFF for every read cycle, you might have Mr. Ohm to thank. In this case, the venerable DMM becomes your tool of choice, not an oscilloscope or your friendly applications engineer. A ferrite bead certainly can offer good noise immunity to your system. However, if not chosen correctly, and if Ohm’s law is not heeded, this small component can cause some serious issues in realizing an ADC’s true performance in the system.