Prototyp SDRAM a problemy produkcyjne


11

Mam projekt wykorzystujący LPC1788 wraz z modułem SDRAM od ISSI ( IS42S32800D ). To jest interfejs 32-bitowy.

Rozesłałem ten projekt i miałem prototyp wykonany z producentem PCB, który wykonuje prototypy 6-warstwowe. Prototypowa płytka drukowana działa dobrze. Pomyślałem wtedy, że otrzymam płytkę drukowaną w małej ilości (100) od mojego zwykłego dostawcy PCB. Podałem im informacje o stosach, które wykorzystał mój prototyp, aby upewnić się, że nie będzie żadnych problemów.

Jednak! Mam ogromne problemy z płytą produkcyjną. Na początku nie byłem w stanie uzyskać żadnej odpowiedzi z SDRAM-a tym samym kodem, którego użyłem na mojej prototypowej płytce. Poprzednia płyta działała przy 120 MHz, więc byłem pewien, że coś jest nie tak z tą nową płytą. Potem znalazłem post, w którym ludzie sugerowali używanie trybu Repeater w liniach danych SDRAM (wcześniej tego nie używałem) i to wywołało odpowiedź z SDRAM, jednak nie jest stabilna. Mogę zapisywać na około 16 adresów, ale potem przy kolejnych odczytach zwracane dane (pod każdym adresem) to dane, które ostatnio zapisałem (prawdopodobnie z powodu trybu Repeater). Po wyłączeniu trybu repeatera zwracane dane to 0xFFFFFFF. Próbuję teraz połączyć się z częstotliwością 48 MHz, najniższą konfiguracją, dla której mam taktowanie.

Używam tych samych rezystorów terminujących (na liniach danych) o wartości 22 Ohm na obu płytach, linie danych mają średnio 3 cm długości. Linia zegara ma 2,4 cm długości. Linie adresowe mają średnio 3,8 cm długości.

Czy to też nie jest zgodne ze specyfikacją, czy powinienem opóźnić zegar, jeśli jest znacznie krótszy? Naprawdę utknąłem tutaj, ponieważ nic nie zmieniłem w projekcie, liczyłem na bezproblemową produkcję tych płyt.

Maximum Data Line Length: 59mm (Although this includes the branch to the NAND Flash)
Minimum Data Line Length (Ctrl to Res): 18mm
Maximum Address Line Length: 44mm
Minimum Address Line Length: 24mm
CLK: 24.5mm
CKE: 25mm
CAS: 28mm
RAS: 28.7mm

Oto konfiguracja stosu PCB dla oryginalnego (działającego) prototypu: wprowadź opis zdjęcia tutaj

Oto konfiguracja stosu PCB dla produkcyjnych (niedziałających) PCB wprowadź opis zdjęcia tutaj

Oto routing dla SDRAM: Routing SDRAM


3
Czy kontrola impedancji była taka sama między seriami proto i produkcyjnymi?
dext0rb

Nie jestem pewien. Nie wiem wystarczająco dużo o integralności sygnału, aby poprawnie zdefiniować te parametry dla domów zarządu. Czułem, że gdybym określił parametry nie wiedząc, co robię, spowodowałbym problemy zamiast je naprawiać.
James

A czy zapłaciłeś im, by zweryfikować impedancję (że @dextorb sugerował, że masz kontrolę)?
Brian Carlton,

Liczy się nie średnia długość. Jest to minimum i maksimum w grupie.
Brian Carlton,

1
Jak integralność sygnału na śladzie zegara wygląda na piny SDRAM?
Brian Carlton,

Odpowiedzi:


10

To kiepska robota. Rdzenie powinny wynosić 0,2 mm, a równowaga grubości powinna znajdować się w prepregie między warstwami 3 i 4 (wewnętrzna 1 i wewnętrzna 2).

Powodem tego jest to, że dla każdego sygnału na śladzie musi znajdować się ścieżka prądu powrotnego na płaszczyźnie tuż pod nią. Prąd powrotny w płaszczyźnie będzie próbował zminimalizować indukcyjność (tj. Obszar pętli), co oznacza, że ​​będzie próbował podążać pod śladem sygnału. Jeśli ślad sygnału jest oddalony od płaszczyzny, będzie szukać innych śladów, aby znaleźć ścieżkę powrotną. To jest elektromagnetyczna walka.

Ponadto, mając warstwy wewnętrzne w różnych odległościach od ich płaszczyzn odniesienia (pamiętaj, że wszystkie szyny zasilające wyglądają jak uziemienie w AC!) W porównaniu do odległości warstwy zewnętrznej, tworzysz zmianę impedancji za każdym razem, gdy zamieniasz warstwy (chociaż można temu przeciwdziałać za pomocą zmiany szerokości śladu, chociaż uznałem, że było to warte kłopotu tylko raz), a Ty znacznie zwiększasz potencjał przesłuchu i innych zakłóceń.

Kolejną rzeczą, którą musisz sprawdzić, są użyte materiały: na przykład istnieje ponad 20 różnych materiałów, które nazywają siebie „FR-4”. Rzeczy, których zwykle używam, nazywa się 370-HR. Zachowuje się całkiem dobrze z szybkimi sygnałami 100-500 MHz.

Jeśli chodzi o linię zegara, IIRC na mojej ostatniej konstrukcji SDRAM miałem zegar ustawiony tak, aby jego krawędź była ostatnia (jego ślad był najdłuższy o 1 cm), po ustabilizowaniu się wszystkich linii adresu i danych. Tak, warto spróbować opóźnić zegar. Nie potrzebowałem żadnej kontroli impedancji na liniach SDRAM.

Rezystory zakończeniowe powinny być umieszczone jak najbliżej sterowników linii. Jeśli nie znajdują się w odległości około 0,5 cm, mogą same powodować odbicia, powodując przeregulowanie i dzwonienie. IMHO, długość ścieżki 3 cm jest okropnie krótka, aby potrzebować rezystorów terminujących (używam ich od około 6-10 cm); próbowałeś właśnie je wyjąć?

Kolejną rzeczą do sprawdzenia są twoje samoloty: czy masz ślady sygnałów przekraczających cięcia samolotów? Jest to ogromne „nie”, ponieważ zmusza prąd powrotny do pokonania długiej trasy.

Wreszcie szybkość krawędzi jest ogromnym problemem w tych projektach. Wiele układów ma niepotrzebnie krótkie czasy narastania i opadania, a zmniejszenie częstotliwości taktowania nie ma na to wpływu . Te szybkie krawędzie świetnie nadają się do tworzenia odbić. Właśnie to próbują naprawić twoje oporniki terminatorowe 22 Ω: spowalniają krawędzie. Chociaż, jeśli naprawdę to naciskasz, narzędzie takie jak HyperLynx firmy Mentor Graphics może być użyte do znalezienia optymalnego projektu zakończenia.

Niektóre książki, które mogę Wam polecić, które obejmują to wszystko i wiele więcej, a przysięgamy na nie w pracy:

Te książki dotyczą redukcji zakłóceń elektromagnetycznych, projektowania ekranów, podtrzymywania obwodów drukowanych, kontroli impedancji, oddzielania zasilania i wielu innych. Ponadto, Ott prowadzi seminaria na ten temat (zawiera darmową kopię swojej książki).


Książka Henry'ego Ott'a jest dla mnie biblijną w 1980 roku. Jednak zanim ją przeczytałem, byłem już w stanie dostrzec upływ prądu RF w konstrukcji mechanicznej / elektrycznej, zanim jeszcze zaczęły się testy EMC. Szczeliny, grzejniki i anteny dielektryczne oraz kable magistrali we / wy były najlepszymi antenami dla wejścia i wyjścia.
Tony Stewart Sunnyskyguy EE75

Dobra informacja tutaj, zgodnie z symulacją Hyperlynx opartą na moich wprowadzonych danych symulacji, rezystory 22 Ohm są wymagane, ponieważ w przeciwnym razie kształt fali w danych (napędzanych przy czasie narastania 1ns) z pamięci SDRAM jest strasznie zniekształcony, a niektóre odbicia przekraczają napięcie odniesienia.
James

Również zalecenie dotyczące tworzenia kopii zapasowych jest dobre. Występuje niewielka różnica w zakresie tworzenia kopii zapasowych między prototypem a producentem. Dodam diagramy do pytania, abyście mogli je zobaczyć. Ponadto - czytam Signal Integrity Simplified przez Erica Bogatina. Dobre informacje tutaj, ale zajmie to trochę czasu, aby przeczytać i zatopić się na tyle, aby rozpocząć nowy układ planszy z jego zaleceniami.
James

Za to, co jest warte, OP pierwotnie miało coś, co wyglądało jak zdjęcia Altium. Altium ma własny zestaw narzędzi do integralności sygnału, które mogą wykorzystywać pliki IBIS. Może także badać przesłuchy. Ale do tego potrzebuje dokładnych informacji o kopii zapasowej.
ajs410

1
W tym momencie najbardziej niepokoją mnie rezystory. Wydaje się, że są pośrodku śladów zamiast kierowców, do których należą. W tych aplikacjach najlepiej nie używać pakietów rezystorów, ale zamiast tego używać małych pojedynczych rezystorów. Jeśli musisz użyć zestawów rezystorów, powinieneś poświęcić czas na wykonanie znacznie lepszej pracy, wymieniając rezystory, aby układ był mniej szalony. To wszystko, co mogę powiedzieć z twojego układu, który nie ma konturów opakowania i sprawia, że ​​połowa warstw jest trudna do zobaczenia.
Mike DeSimone

4

Przy takiej częstotliwości wydaje mi się, że problemy z długością ścieżki nie będą poważnym problemem, z pewnością z powodu opóźnień. Ponieważ problemy zaczęły się od nowej płytki drukowanej, pierwszą rzeczą do zrobienia byłoby przetestowanie ciągłości wszystkich linii (w arkuszu danych, a nie na schemacie, w przypadku błędów na schemacie), i zakres każdego pinu, aby sprawdzić, czy kształty fal są na najmniej prawdopodobne - nawet jeśli twój zakres nie jest w stanie sprawdzić szczegółów pomiaru czasu, powinno być dość oczywiste, czy są jakieś otwarte lub zwarte piny.

Robienie tego rodzaju rzeczy bez odpowiedniego zakresu jest obarczone potencjalnymi zagrożeniami - skąd wiesz, ile masz marginesu? Nawet jeśli to działa, to skąd wiesz, czy jesteś na krawędzi i jesteś podatny na awarie pola / produkcji z powodu tolerancji, temperatury lub fazy księżyca?


2

2. dodanie Zakładaliśmy, że Twój projekt został przetestowany pod kątem marginesów, a kod był idealny w twoich pytaniach. (nie) Sugeruję zweryfikowanie następujących;

  1. Skonfiguruj IO, aby mieć szybkie przełączanie i wyłącz filtry wejściowe
  2. Włącz tryb wprowadzania na zegarze
  3. Ustaw bit funkcji (9?), Aby zwiększyć szybkość operacji dla styków interfejsu SDRAM
  4. Włącz tryb repeatera, ponieważ są one dwukierunkowe i nie mogą pozostawać swobodnie na wejściu cmos.
  5. Zmień napięcie zasilania, aby określić wrażliwość na błąd.
  6. domyślny tryb resetowania dla pinów magistrali danych to FUNC = 0X00, MODE = 0X02, HISTEREZA = WŁĄCZONY, ODWRÓCONY = WYŁĄCZONY, a SLEW = STANDARDOWY
  7. Czy twoje wywołanie PINSEL_ConfigPin () z nową wartością funkcji, zresetuje TRYB do NIEAKTYWNEGO (brak rezystora rozwijającego) i wyłącza HISTEREZĘ?
  8. Czy używasz pętli for / next lub kodu dyskretnego, takiego jak;

    • LPC_IOCON-> P3_0 | = 1; // D0 @ P3.0
    • LPC_IOCON-> P3_1 | = 1; // D1 @ P3.1
    • LPC_IOCON-> P3_2 | = 1; // D2 @ P3.2 itp.
  9. Czy starasz się ponownie włączyć PIN WE za każdym razem, gdy jest to potrzebne?
  10. Używasz? * pPIN & = ~ (0x00000007); // Wyczyść bity funkcyjne "

Pamiętam debugowanie mojego pierwszego projektu CMOS od studenta fizyki na przenośnym nagrywaniu sejsmicznym, z przełączaną tablicą czasową. Nie było oprogramowania układowego ani oprogramowania uC, ale nigdy nie przeprowadził analizy najgorszego przypadku tolerancji, a sprzęt miał warunki wyścigowe w całym miejscu, kiedy zbudowałem i debugowałem kilkanaście kolejnych płyt. Profesor Sejsmiczny zwrócił się do Kierownika Wydziału Fizyki, aby zapytać, dlaczego nie mogę debugować tablic, a następnie musiałem mu doradzić, że zmienność komponentów ujawniła wiele wad konstrukcyjnych zwanych warunkami wyścigu czasowego ze względu na metastabilne warunki i zastosowaną krawędź zegara. Nadal nie rozumiał, a potem poprosiłem go, aby powiedział mi, ile palców rozłożyłem, podnosząc rękę, zanim osiągnęła poziom talii od niskiego do wysokiego. Potem powiedział: nie możesz tego zrobić i oczekiwać poprawnej odpowiedzi. Powiedziałem dokładnie. To prymitywny warunek rasowy. Stają się mniej oczywiste przy większym stopniu złożoności. U Manitoba 1973.

Dodano 1: Z którego schematu terminacji autobusów korzystałeś? autobus preferowana jest metoda (1), Czy 1,25 V DC jest czyste?


  1. Czy na tych forach płacono za ICT? test na desce jest koniecznością
  2. Czy podałeś impedancję w instrukcjach układu gerber?
  3. Czy przeprowadziłeś symulacje swojego układu z tolerancjami?
  4. Stała dielektryczna na deskach i # warstwach pre-preg kontroluje impedancję linii paskowej i mikropasków wraz z szerokością śladu i odstępem.

    Istnieje wiele bezpłatnych kalkulatorów online dla linii paskowej.

    Możesz spróbować zmierzyć pojemność na dużych torach lub płaszczyznach uziemienia i porównać obie nagie płyty.

    Spójrz również na sygnały o dużym zakresie prędkości i obserwuj przekroczenie i wzorzec zegara <> danych.

Musi istnieć proste wyjaśnienie błędów, ale nie jest łatwe do znalezienia. Ale kiedy znajdziesz podstawową przyczynę ... nie popełnisz tego błędu ponownie.

dodano: Kolejnym błędem, który znalazłem, jest to, że diagram wysokości stosu nie wskazuje grubości warstwy Cu i nie ma wystarczającej ilości miejsca, aby zmieścić się w 6 warstwach, chyba że jest nieprawidłowy lub grubość Cu wynosi 0,039 mm (NIE;)


Tylko komentarz do OP - Widzę, że OP używa Altium Designer, a oprogramowanie zawiera kalkulator impedancji. Nie korzystałem z niego dużo, ale wiem, że gdzieś tam jest!
dext0rb

2
Podczas okablowania ścieżki (naciśnij W w widoku płytki drukowanej), naciśnij klawisz Tab, a zobaczysz szacunkową impedancję.
ajs410

ogólnie za niską złożoność Qty 100 PWB nie zapłaciłbym za ICT (test), ale te mają ślepe ścieżki, więc bym ... coś do rozważenia ... i zmierzyć pojemność na gołej płycie V + <> GND
Tony Stewart Sunnyskyguy EE75

Nie płaciłem za kontrolę impedancji na tych płytach. Symulowane linie w Hyperlynx (MentorGraphics) pokazały całkiem idealne (lub dobrze mieszczące się w specyfikacji) przebiegi falowe w oparciu o mój projekt trasy. Aby to wymodelować, odtworzyłem każdą linię transmisyjną wraz z modelami IBIS. Nie mam wystarczającej przepustowości, aby właściwie zbadać rzeczywiste sygnały = (
James

1
Witaj @TonyStewart, dziękuję za wsparcie. 1) Płytka prototypowa nie wymagała szybkiego obrócenia. Włączone bez zmiany efektu. 2) Nie jesteś pewien, co to znaczy - zegar jest wyjściem? 3) Histereza pozostała włączona. Wyłączone bez zmiany efektu. 4) Zwiększone obroty nieaktywne na proto. Włączone bez zmiany efektu. 5) Nie testowano. 7) Funkcja Pin Config nie zmienia innych bitów. 8) Dyskretny kod dla pinów sterujących, dla pętli danych / adresu 9) Kiedy muszę włączyć WE? Kontroler EMC powinien to dla mnie zrobić? 10) Bity NIE są notowane przed ustawieniem. Mam kolejny prototyp na zamówienie, bądź tu w przyszłym tygodniu.
James
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.