Bo tak powiedział pan Ohm…

Pytanie:

W moim systemie interfejs SPI przetwornika ADC zwraca za każdym razem odczyt 0xFF. Co może być przyczyną?

Odpowiedź:

Nowa generacja przetworników analogowo-cyfrowych (ADC) o szybkości Gsps (gigasamplowej) może zapewnić najlepsze na rynku parametry i pewność wyników przy odpowiedniej implementacji systemu. Jeśli jednak interfejs SPI odczytuje za każdym razem wartość 0xFF, na pewno nie jest to ten przypadek. Taki wynik może oznaczać, że coś nie działa prawidłowo wewnątrz przetwornika ADC. Zastanówmy się, co to może być.

Najnowsza generacja przetworników Gsps, takich jak na przykład AD9680, została wykonana w procesie technologicznym CMOS o małym wymiarze charakterystycznym 65 nm. Aby spełnić wymagania stawiane układom prądu zmiennego, projekt musi uwzględnić pracę w kilku zakresach napięć (1,25 V, 2,5 V, 3,3 V). Zazwyczaj każdy układ krzemowy pracujący z wieloma napięciami wymaga jakiegoś sekwencjonowania zasilania. Jednak projektanci Analog Devices opracowali dodatkowe układy sterujące, dzięki którym implementacja AD9680 jest z punktu widzenia użytkowników łatwiejsza – eliminuje potrzebę sekwencjonowania zasilania.

Przetwornik AD9680 ma wewnętrzny mechanizm resetowania po włączeniu zasilania (POR), który steruje wszystkimi liniami zasilania. Dopóki układ nie uzyska odpowiednich poziomów na liniach zasilania, przetwornik pozostanie w trybie resetu. W trybie resetu, gdy poziom napięcia SPIVDD wynosi 1,8, 2,5 lub 3,3 V, przetwornik będzie wystawiał wartość 0xFF na porcie SPI przy każdym odczycie. To przypomina opisaną sytuację. W takim wypadku najlepszym rozwiązaniem będzie wykorzystanie tradycyjnego multimetru cyfrowego.

Przy użyciu multimetru należy sprawdzić napięcia zasilania na różnych pinach AD9680. Istnieje ryzyko, że jeden z nich znajdzie się poza zakresem dopuszczalnym przez układ POR.

W tym momencie sprawy się komplikują. Na rys.1 widać schemat przetwornika AD9680-1250 taktowanego zegarem 1,25 GHz. Dla kogoś, kto po raz pierwszy widzi ten schemat, wszystko wygląda normalnie. Nie są widoczne kondensatory odsprzęgające ani inne linie zasilania. Rysunek przedstawia schemat zasilania 1,25 V – najniższego dostępnego poziomu.

Rys. 1. Zasilanie linii 1,25 V układu AD9680 przy użyciu zasilacza LDO ADP1741

Układ ADP1741 powinien mieć wystarczającą wydajność, aby zasilić wszystkie linie dołączone do napięcia 1,25 V. Jednak przyczyną problemów nie jest ani zasilacz, ani przetwornik, lecz niepozorny koralik ferrytowy. Zazwyczaj koraliki ferrytowe są stosowane w sieciach zasilania, aby odfiltrować napięcie zasilania docierające do określonego urządzenia. Jednym z parametrów koralika, który często umyka uwadze, jest DCR – rezystancja dla prądu stałego. Dlaczego jest to istotne? Ponieważ tak dowiódł pewien dżentelmen o nazwisku Georg Simon Ohm.

Prawo Ohma mówi, że prąd płynący przez przewodnik między dwoma punktami jest wprost proporcjonalny do różnicy potencjałów między tymi punktami. W takiej sytuacji na wyjściu LOD ADP1641 występuje napięcie 1,25 V, czyli prawidłowa wartość. Jednak pomiar napięcia na pinach ADC po drugiej stronie koralika ferrytowego daje wynik 1,12 V (przy prądzie nominalnym). To właśnie jest przyczyna odczytu 0xFF na wyjściu SPI przetwornika. Układ nie widzi odpowiednich napięć wewnątrz AD9680.

Jak rozwiązać ten problem? Jest kilka możliwości.

  1. Zrezygnować z koralika ferrytowego. To może, ale nie musi zwiększyć wrażliwość systemu na szum.
  2. Zmienić wartość napięcia zasilacza LDO, aby uwzględnić spadek napięcia na koraliku równy IR. Jednak to rozwiązanie może narazić AD9680 na potencjalnie zbyt wysokie napięcia w sytuacji, gdy nie pobiera on wystarczająco dużego prądu.
  3. Wybrać inny koralik ferrytowy, który ma tą sama impedancję i dopuszczalny prąd, ale niższy parametr DCR (poniżej 50 mΩ).
  4. Podzielić wyjścia napięcia między szyny (AVDD1, AVDD1_SR, DVDD, SRVDD) i użyć koralika ferrytowego o niższym DCR na każdej, aby zapewnić odpowiednie napięcie pracy.

Rys.2 przedstawia opcje 2. i 4. wymienione powyżej. Opcja 4. zapewnia najlepszy kompromis, jednak zwiększa całkowity koszt rozwiązania – o czym warto pamiętać. Opcja 4. zwiększa ponadto odporność na szumy, dodając pewną filtrację między liniami AVDD, DVDD oraz DRVDD.

Rys.2. Różne możliwości wyboru i stosowania koralika ferrytowego do zasilania AD9680

 

Następnym razem po podłączeniu przetwornika, doprowadzeniu zegara i uzyskania wartości 0xFF w każdym odczycie będzie już jasne, co robić. Należy wziąć multimetr cyfrowy zamiast oscyloskopu. Koralik ferrytowy z pewnością może poprawić odporność systemu na zakłócenia. Jednak jego niepoprawny dobór z powodu prawa Ohma może spowodować poważne problemy w poprawnym działaniu przetwornika ADC w systemie.

O autorze

Umesh Jayamohan
Umesh Jayamohan jest inżynierem aplikacyjnym w grupie Analog Devices zajmującej się przetwornikami wysokiej szybkości. Pracuje w firmie od roku 2010. Umesh uzyskał licencjat na uniwersytecie Kerala w Indiach w roku 1998 i dyplom magistra na uniwersytecie w Arizonie w roku 2002.