SDRAM-Prototyp gegen Produktionsprobleme

11

Ich habe ein Design mit einem LPC1788 zusammen mit einem SDRAM-Modul von ISSI ( IS42S32800D ). Dies ist eine 32-Bit-Schnittstelle.

Ich habe dieses Design ausgearbeitet und einen Prototyp mit einem Leiterplattenhersteller herstellen lassen, der 6-Schicht-Prototypen herstellt. Der Prototyp der Leiterplatte funktioniert einwandfrei. Ich dachte dann, ich würde die Leiterplatte in einer kleinen Charge (100) von meinem üblichen Leiterplattenlieferanten herstellen lassen. Ich gab ihnen die Stapelinformationen, die mein Prototyp verwendete, um sicherzustellen, dass es keine Probleme gab.

Jedoch! Ich habe massive Probleme mit der Produktionsplatine. Anfangs konnte ich mit dem gleichen Code, den ich in meinem Prototyp-Board verwendet habe, keine Antwort vom SDRAM auslösen. Das vorherige Board arbeitete mit 120 MHz, daher war ich mir sicher, dass mit diesem neuen Board etwas nicht stimmte. Ich habe dann einen Beitrag gefunden, in dem Leute vorgeschlagen haben, den Repeater-Modus auf den SDRAM-Datenleitungen zu verwenden (ich hatte dies zuvor nicht verwendet), und dies hat eine Antwort vom SDRAM ausgelöst, die jedoch nicht stabil ist. Ich kann an ungefähr 16 Adressen schreiben, aber bei nachfolgenden Lesevorgängen sind die zurückgegebenen Daten (an jeder Adresse) die Daten, die ich zuletzt geschrieben habe (wahrscheinlich aufgrund des Repeater-Modus). Wenn ich den Repeater-Modus deaktiviere, sind die zurückgegebenen Daten 0xFFFFFFF. Ich versuche jetzt, eine Verbindung mit 48 MHz herzustellen, der niedrigsten Konfiguration, für die ich Zeit habe.

Ich verwende die gleichen Abschlusswiderstände (auf den Datenleitungen) von 22 Ohm auf beiden Karten, Datenleitungen sind durchschnittlich 3 cm lang. Die Uhrlinie ist 2,4 cm lang. Adressleitungen sind durchschnittlich 3,8 cm lang.

Ist dies zu falsch, sollte ich die Uhr länger verzögern, wenn sie wesentlich kürzer ist? Ich stecke hier wirklich fest, da ich nichts an dem Design geändert habe, das ich mir für einen nahtlosen Fertigungslauf für diese Boards erhofft hatte.

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

Hier ist die PCB-Stack-Konfiguration für den ursprünglichen (funktionierenden) Prototyp: Geben Sie hier die Bildbeschreibung ein

Hier ist die PCB-Stack-Konfiguration für die Produktions-PCBs (nicht funktionierend) Geben Sie hier die Bildbeschreibung ein

Hier ist das Routing für das SDRAM: SDRAM-Routing

James
quelle
3
War die Impedanzregelung zwischen Proto- und Produktionslauf gleich?
Dext0rb
Ich bin mir nicht sicher. Ich weiß nicht genug über die Signalintegrität, um diese Parameter für die Platinenhäuser richtig zu definieren. Ich hatte das Gefühl, wenn ich Parameter spezifiziere, die nicht wissen, was ich tue, würde ich Probleme machen, anstatt Probleme zu beheben.
James
Und haben Sie sie bezahlt, um die Impedanz zu überprüfen (von @dextorb vorgeschlagen, dass Sie sie kontrollieren)?
Brian Carlton
Es ist nicht die durchschnittliche Länge, die zählt. Es ist das Minimum und Maximum innerhalb der Gruppe.
Brian Carlton
1
Wie sieht die Signalintegrität auf der Taktspur auf den SDRAM-Pins aus?
Brian Carlton

Antworten:

10

Das ist ein mieser Stapel. Ihre Kerne sollten 0,2 mm betragen und der Rest Ihrer Dicke sollte im Prepreg zwischen den Schichten 3 und 4 (Inner 1 und Inner 2) liegen.

Der Grund dafür ist, dass für jedes Signal auf einer Spur ein Rückstrompfad in der Ebene direkt darunter vorhanden sein muss. Der Rückstrom in der Ebene versucht, die Induktivität (dh den Schleifenbereich) zu minimieren, was bedeutet, dass er versucht, der Signalspur zu folgen. Wenn die Signalspur von der Ebene entfernt ist, sucht sie nach anderen Spuren, um einen Rückweg zu finden. Das ist Elektromagnetik, gegen die du kämpfst.

Indem Sie innere Schichten in unterschiedlichen Abständen von ihren Referenzebenen haben (denken Sie daran, dass alle Versorgungsschienen bei Wechselstrom wie Erdungen aussehen!), Im Vergleich zu den Abständen der äußeren Schichten, erzeugen Sie jedes Mal eine Impedanzänderung, wenn Sie Schichten tauschen (obwohl dies entgegengewirkt werden kann Die Spurbreite ändert sich, obwohl ich die Mühe nur einmal wert fand, und Sie erhöhen das Potenzial für Übersprechen und andere Interferenzen erheblich.

Eine andere Sache, die Sie überprüfen müssen, sind die verwendeten Materialien: Es gibt über 20 verschiedene Materialien, die sich beispielsweise "FR-4" nennen. Das Zeug, das ich normalerweise benutze, heißt 370-HR. Es verhält sich recht gut mit Hochgeschwindigkeitssignalen von 100-500 MHz.

In Bezug auf die Taktleitung hatte IIRC bei meinem letzten SDRAM-Design die Uhr so ​​eingestellt, dass ihre Kante zuletzt auftrat (ihre Spur war um 1 cm am längsten), nachdem sich alle Adress- und Datenleitungen stabilisiert hatten. Es lohnt sich also, die Uhr zu verzögern. Ich brauchte keine Impedanzregelung für die SDRAM-Leitungen.

Ihre Abschlusswiderstände sollten so nahe wie möglich an den Leitungstreibern platziert werden. Wenn sie nicht innerhalb von etwa 0,5 cm liegen, können sie selbst Reflexionen verursachen, die zu Überschwingen und Klingeln führen. IMHO, 3 cm Spurlänge ist schrecklich kurz, um Abschlusswiderstände zu benötigen (ich benutze sie ab ca. 6-10 cm); Hast du versucht, sie einfach herauszunehmen?

Eine andere Sache, die Sie überprüfen sollten, sind Ihre Flugzeuge: Haben Sie Signalspuren, die Flugzeugschnitte kreuzen? Dies ist ein großes Nein-Nein, da es den Rückstrom zwingt, einen langen Weg um den Schnitt herum zu gehen.

Schließlich ist die Kantenrate bei diesen Konstruktionen ein großes Problem. Viele Chips haben unnötig kurze Anstiegs- und Abfallzeiten, und eine Reduzierung der Taktfrequenz hat keinen Einfluss darauf. Diese schnellen Kanten eignen sich hervorragend zum Erzeugen von Reflexionen. Dies versuchen Ihre 22-Ohm-Abschlusswiderstände zu beheben: Sie verlangsamen die Kanten. Wenn Sie es wirklich vorantreiben, können Sie mit einem Tool wie HyperLynx von Mentor Graphics das optimale Terminierungsdesign finden.

Einige Bücher, die ich Ihnen empfehlen kann und die all dies und noch viel mehr abdecken, und wir schwören auf sie bei der Arbeit:

Diese Bücher behandeln EMI-Reduzierung, Abschirmungsdesign, Leiterplattenstapelung, Impedanzsteuerung, Entkopplung der Stromversorgung und vieles mehr. Außerdem unterrichtet Herr Ott Seminare zu diesem Thema (wird mit einer kostenlosen Kopie seines Buches geliefert).

Mike DeSimone
quelle
Das Buch von Henry Ott ist eine Bibel für mich im Jahr 1980. Bevor ich es jedoch las, war ich bereits in der Lage, HF-Leckagen in einem mechanischen / elektrischen Design zu erkennen, bevor die EMV-Tests überhaupt begannen. Steckplätze, Strahler, dielektrische Antennen und E / A-Buskabel waren die besten Antennen für den Ein- und Ausgang.
Tony Stewart Sunnyskyguy EE75
Gute Informationen hier, gemäß der Hyperlynx-Simulation, die auf meinen eingegebenen Simulationsdaten basiert, werden die 22-Ohm-Widerstände benötigt, da sonst die Wellenform auf den Datenleitungen (die mit einer Anstiegszeit von 1 ns angesteuert werden) vom SDRAM schrecklich verzerrt sind und einige Reflexionen die Referenzspannung überschreiten.
James
Auch die Stackup-Empfehlung ist gut. Es gibt einen kleinen Unterschied in der Stapelung zwischen dem Prototyper und dem Hersteller. Ich füge die Diagramme der Frage hinzu, damit Sie sie sehen können. Außerdem habe ich Signal Integrity Simplified von Eric Bogatin gelesen. Gute Infos hier, aber es wird einige Zeit dauern, bis man genug verdaut und eingesunken hat, um ein neues Board-Layout mit seinen Empfehlungen zu beginnen.
James
Für das, was es wert ist, hatte OP ursprünglich so etwas wie Altium-Bilder. Altium verfügt über eigene Tools zur Signalintegrität, die IBIS-Dateien verwenden können. Es kann auch das Übersprechen untersuchen. Dafür sind jedoch die genauen Stackup-Informationen erforderlich.
Ajs410
1
An diesem Punkt mache ich mir also größte Sorgen um die Widerstände. Sie scheinen mitten auf den Spuren zu sein und nicht bei den Fahrern, zu denen sie gehören. In diesen Anwendungen ist es am besten, keine Widerstandspakete zu verwenden, sondern kleine Einzelwiderstände. Wenn Sie Widerstandspakete verwenden müssen, sollten Sie sich die Zeit nehmen, um die Widerstände viel besser auszutauschen, um das Layout weniger verrückt zu machen. Das ist ungefähr alles, was ich an Ihrem Layout erkennen kann, das keine Paketumrisse enthält und die Hälfte der Ebenen schwer zu erkennen macht.
Mike DeSimone
4

Bei dieser Art von Frequenz denke ich, dass Probleme mit dem Typ der Spurlänge wahrscheinlich kein großes Problem darstellen, insbesondere bei Verzögerungsproblemen. Da die Probleme mit einer neuen Leiterplatte begannen, war das allererste, was zu tun war, alle Leitungen auf Kontinuität zu testen (anhand des Datenblattes, nicht Ihres Schaltplans, falls Ihr Schaltplan Fehler aufweist) und jeden Pin zu überprüfen, ob die Wellenformen vorliegen am wenigsten plausibel - selbst wenn Ihr Oszilloskop nicht in der Lage ist, Zeitdetails zu überprüfen, sollte es ziemlich offensichtlich sein, ob offene oder kurzgeschlossene Stifte vorhanden sind.

Solche Dinge ohne angemessenen Umfang zu tun, birgt potenzielle Gefahren - woher wissen Sie, wie viel Spielraum Sie haben? Selbst wenn es funktioniert, woher wissen Sie, ob Sie direkt am Rande sind und aufgrund von Toleranzen, Temperatur oder Mondphase anfällig für Feld- / Produktionsfehler sind?

mikeselectricstuff
quelle
2

2. Hinzufügen Wir gingen davon aus, dass Ihr Design am Rand getestet wurde und der Code für Ihre Fragen perfekt war. (nicht) Ich schlage vor, dass Sie Folgendes überprüfen;

  1. Konfigurieren Sie das E / A so, dass es schnell wechselt, und deaktivieren Sie die Eingangsfilter
  2. Aktivieren Sie den Eingabemodus auf der Uhr
  3. Setzen Sie das Anstiegsbit (9?), Um die Anstiegsrate für die SDRAM-Schnittstellenstifte zu erhöhen
  4. Aktivieren Sie den Repeater-Modus, da sie bidirektional sind und nicht auf einem cmos-Eingang schweben dürfen.
  5. Ändern Sie die Versorgungsspannung, um die Fehlerempfindlichkeit zu bestimmen.
  6. Der Standard-Reset-Modus für einen Datenbus-Pin ist FUNC = 0X00, MODE = 0X02, HYSTERESIS = AKTIVIERT, INVERT = DEAKTIVIERT und SLEW = STANDARD
  7. Ruft Ihr Aufruf von PINSEL_ConfigPin () mit einem neuen Funktionswert den MODE auf INACTIVE (kein Pull-Down / Pull-Up-Widerstand) zurück und schaltet HYSTERESIS aus?
  8. Verwenden Sie eine for / next-Schleife oder einen diskreten Code wie z.

    • LPC_IOCON-> P3_0 | = 1; // D0 @ P3.0
    • LPC_IOCON-> P3_1 | = 1; // D1 @ P3.1
    • LPC_IOCON-> P3_2 | = 1; // D2 @ P3.2 usw.
  9. Versuchen Sie, den WE-Pin bei Bedarf jedes Mal wieder zu aktivieren?
  10. Benutzt du? * pPIN & = ~ (0x00000007); // Funktionsbits löschen "

Ich erinnere mich, wie ich mein erstes CMOS-Design von einem Physik-Postgraduierten für eine umschaltbare Timer-Logikplatine mit tragbarer Seismic-Aufzeichnung debuggt habe. Es gab keine Firmware oder uC, aber er führte nie eine Worst-Case-Toleranzanalyse durch und die Hardware hatte überall Rennbedingungen, als ein Dutzend weitere Boards von mir gebaut und debuggt wurden. Der Seismic Prof hat den Leiter der Abteilung Physik hinzugezogen, um zu fragen, warum ich die Boards nicht debuggen konnte. Dann musste ich ihm raten, dass Komponentenvariationen aufgrund von metastabilen Bedingungen und der verwendeten Taktflanke viele Konstruktionsfehler aufwiesen, die als Timing-Race-Bedingungen bezeichnet werden. Er verstand es immer noch nicht, dann fragte ich ihn, wie viele Finger ich entfaltet habe, während ich meine Hand hob, bevor sie meine Taillenhöhe von niedrig nach hoch erreichte. Dann sagte er, das kannst du nicht und erwartest eine richtige Antwort. Ich sagte genau. Das ist eine primitive Rassenbedingung. Sie werden mit zunehmender Komplexität weniger offensichtlich. U von Manitoba 1973.

1. hinzugefügt: Welches Busterminierungsschema haben Sie verwendet? Bus Methode (1) wird bevorzugt. Ist 1,25 VDC sauber?


  1. Haben Sie für IKT auf diesen Boards bezahlt? Bare-Board-Test ist ein Muss
  2. Haben Sie in Ihren Gerber-Layout-Anweisungen die Impedanz angegeben?
  3. Haben Sie Simulationen für Ihr Layout mit Toleranzen durchgeführt?
  4. Die Dielektrizitätskonstante auf Platten und # von Schichten von Pregg steuert die Impedanz von Streifenleitung und Mikrostreifen zusammen mit der Spurbreite und dem Spalt.

    Es gibt viele kostenlose Online-Z-Rechner für Streifenleitungen.

    Sie können versuchen, die Kapazität auf großen Schienen oder Masseebenen zu messen und beide blanken Platinen zu vergleichen.

    Schauen Sie sich auch die Signale mit einem Hochgeschwindigkeitsbereich an und beobachten Sie das Überschwingen und das Taktdatenmuster <>.

Es muss eine einfache Erklärung für die Fehler geben, aber es ist nicht leicht zu finden. Aber sobald Sie die Grundursache gefunden haben, werden Sie diesen Fehler nicht noch einmal machen.

hinzugefügt: Ein weiterer Fehler, den ich gefunden habe, ist, dass Ihr Stapelhöhendiagramm nicht die Cu-Schichtdicke angibt und es nicht ausreicht, um in 6 Schichten zu passen, es sei denn, es ist falsch oder die Cu-Dicke beträgt 0,039 mm (NICHT;)

Tony Stewart Sunnyskyguy EE75
quelle
Nur ein Kommentar für OP - Ich sehe, dass OP Altium Designer verwendet und in die Software ein Impedanzrechner integriert ist. Ich habe es nicht viel benutzt, aber ich weiß, dass es irgendwo da ist!
Dext0rb
2
Drücken Sie während der Verdrahtung einer Leiterbahn (drücken Sie W in der Leiterplattenansicht) die Tabulatortaste, um die geschätzte Impedanz anzuzeigen.
Ajs410
Im Allgemeinen würde ich für 100-PWBs mit geringer Komplexität nicht für IKT (Test) bezahlen, aber diese haben blinde Spuren, also würde ich ... etwas zu beachten ... und die Kapazität auf einem bloßen Board messen V + <> GND
Tony Stewart Sunnyskyguy EE75
Ich habe für die Impedanzregelung auf diesen Platinen nicht bezahlt. Die simulierten Linien in Hyperlynx (MentorGraphics) zeigten ziemlich perfekte (oder gut innerhalb der Spezifikation liegende) Wellenformen, basierend auf meinem gerouteten Design. Um dies zu modellieren, habe ich jede Übertragungsleitung und über IBIS-Modelle neu erstellt. Ich habe nicht genügend Bandbreite, um die tatsächlichen Signale richtig zu untersuchen = (
James
1
Hallo @TonyStewart, danke für deine Unterstützung. 1) Prototyp-Board erforderte kein schnelles Schwenken. Ohne Änderung der Wirkung aktiviert. 2) Unsicher, was dies bedeutet - Takt ist ein Ausgang? 3) Die Hysterese wurde aktiviert gelassen. Ohne Änderung der Wirkung deaktiviert. 4) Erhöhte Anstiegsgeschwindigkeit bei Proto nicht aktiviert. Ohne Änderung der Wirkung aktiviert. 5) Nicht getestet. 7) Die Pin-Konfigurationsfunktion ändert keine anderen Bits. 8) Diskreter Code für Steuerpins, für Schleife für Daten / Adresse 9) Wann muss ich WE aktivieren? EMV-Controller sollte dies für mich tun? 10) Bits werden vor dem Setzen NICHT notiert. Ich habe einen weiteren Prototyp bestellt, bin nächste Woche hier.
James