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:
Oto konfiguracja stosu PCB dla produkcyjnych (niedziałających) PCB
Oto routing dla SDRAM: