8-MHz-SPI-Übertragungslayout

Ich arbeite derzeit an einer Platine für einen 8x8x8 LED-Würfel. Das PCB-Layout im aktuellen Stand finden Sie nachfolgend:

Datenübertragungsschnittstelle

Der ATmega328P (16 MHz) verwendet SPI, um die erforderlichen Daten an vier TLC5940-Chips (12-Bit-Graustufen, 16-Kanal-LED-Treiber) und einen TPIC6B595 (8-Bit-Schieberegister) zu senden. Um genug FPS zu bekommen und noch genug CPU-Zeit für Effekte zu haben, muss die SPI-Schnittstelle mit 8 MHz laufen.

Ich bin mir etwas unsicher über das richtige Layout, um Probleme wie beschädigte Daten zu vermeiden.

Relevante Layoutteile für diese Fragen:

A) SPI-Daten: Vom ATmega-SPI-Pin zum ersten TLC und dann in Reihe über die nächsten drei TLCs zum TPIC (jede Spur ~ 2-3 cm lang)

B) SPI Clock: Vom ATmega SPI Clock Pin in zwei Richtungen. Erstens zum entsprechenden ISP-Header und zweitens unter allen TLCs zum TPIC. Jeder TLC-Datentaktpin ist durch einen sehr kurzen Zweig der Taktleitung verbunden. Die Leitung endet im Clock-Pin des TPIC-Chips. (Gesamtschnurlänge ~23-25cm lang ohne Verzweigungen)

C) GS-Takt: Wird benötigt, um die Graustufen-PWM der TLCs am Laufen zu halten. Über die gesetzte CKOUT-Sicherung wird über diese Leitung ein konstantes 8Mhz-Signal an alle TLC-Graustufen-Clock-Pins (~20cm lang ohne Verzweigungen) gesendet.

D) Leer: Von ATmega bis zu allen TLCs, die mit dem letzten enden. Normalerweise GND-Pegel, wird regelmäßig umgeschaltet, um den PWM-Zähler in TLCs zurückzusetzen. Während der Datenaktualisierung für die TLCs ist es für die ersten paar übertragenen Bytes hoch und wird dann wieder niedrig gesetzt, während der Rest der Bytes herausgeschoben wird (um die LED-Ausfallzeit zu reduzieren).

E) Latch: Von ATmega mit allen TLCs und dem TPIC-Chip verbunden. Immer niedrig, mit Ausnahme eines schnellen Umschaltens (wenn SPI nicht aktiv ist)

F) PCB-Schichten: Rote Linien oben, blaue Linien unten. Der Boden hat zusätzlich eine komplette Bodenfüllung, wie in der Vergrößerung eines TLC zu sehen ist:

TLC aus nächster Nähe

Meine Fragen zum Datenübertragungslayout:

1) Ist es in Ordnung, diese Leitungen parallel über ~ 14 cm zu verlegen? Blank und Latch ("ruhige Linien") sind in der Mitte und die "rauschenden" Linien GS Clock und SPI Clock außen (0,05 Zoll Abstand zwischen jeder Linie), aber daher in der Nähe von IC-Pins.

2) Reichen die kurzen 90°-Abzweigungen aus, um jeden IC mit den Datenleitungen zu verbinden, oder führt dies zu Problemen?

3) Was ist mit der Signalreflexion/-terminierung (für SPI- und GS-Takt)? Ich habe mehrere Artikel zu diesem Thema gelesen, aber nicht alles verstanden. Einige Leute behaupten, dass es bei 8 MHz kein Problem gibt. Andere unterscheiden zwischen Trancelänge und so weiter. Einige Lösungen wie die Endleitungsterminierung funktionieren anscheinend nur für eine einzelne Last, daher funktioniert dies bei mir offensichtlich nicht. Bisher habe ich nichts Konkretes/Eindeutiges zu diesem Thema gefunden. Ich habe das Gefühl, dass dies im Moment ein Dealbreaker für mein Board sein könnte.

4) Was ist mit dem Signalrückweg? Ich habe versucht, es dem Rückstrom zu ermöglichen, der relevanten oberen Spur auf der unteren Schicht zu folgen, aber ein paar Hindernisse bleiben (wie die Verbindungen der GS-Uhr, Latch- und Leerspuren zu den SPS-Pins). Ist das Layout diesbezüglich noch ok?

Mit freundlichen Grüßen,

ratus

Das ist ein gut aussehendes Layout. Rein nach dem Layout zu urteilen, glaube ich nicht, dass Sie irgendwelche Probleme mit 8 MHz SPI haben werden, Ihre Abstände sehen gut aus und das Gesamtdesign ist ordentlich und konsistent. SPI ist (meiner Erfahrung nach) ziemlich resistent gegen selbstinduzierte Interferenzen. So wie es aussieht, hast du dir viele Gedanken gemacht. Übrigens kann man sich ein Via sparen (siehe Pin 12 auf IC3).
Zufällige, unabhängige Beobachtung: Ihre Anmerkung zur vertikalen Bemaßung auf der linken Seite des Bildes ist nicht richtig mit Ihrem Platinenumriss ausgerichtet.
Stimmt mit @Wossname überein. Sie können dies angesichts der erforderlichen Zeitvorgaben und Ihres Layouts getrost prototypisieren. Bei einer 10-fachen Frequenzerhöhung wären Ihre Sorgen berechtigt.

Antworten (1)

Diese Antwort ( Werden für UART, I2C und SPI Abschlusswiderstände benötigt? ) Sagt Ihnen im Grunde, dass ein 50-MHz-SPI wahrscheinlich für> 7-cm-Spuren gut ist. Alles, was Sie tun müssen, ist, Takt und Daten ungefähr gleich lang zu halten. Unidirektionales SPI verzeiht aufgrund der doppelten Natur des Austaktens von Daten an einer Kante und des erneuten Eintaktens an der anderen Flanke recht verzeihend.

Bei 8 MHz beträgt die Periode 125 ns und die Zeit, die für die Beruhigung der Daten (nach Änderung an einer Taktflanke) angegeben wird, beträgt daher 62 ns. Sie müssten die Daten- und SCL-Leitungslängen massiv unterschiedlich machen, um eine Verzögerung von annähernd 60 Nanosekunden zu erreichen.

Diese Antwort gilt nur für das Senden von Daten von einem Master - ein weiteres größeres Problem tritt auf, wenn Daten von einem Slave zurückgetaktet werden - dies bestimmt letztendlich die maximale Länge der Spur / des Kabels, aber wenn Sie nur Daten vom Master zum Slave senden, ist dies kein Problem.

Die Zeit zum Einschwingen bekomme ich aber soweit ich verstanden habe können Probleme mit Reflexion und fehlender Terminierung zu Spitzen an Signalflanken führen. In diesem Fall gehe ich davon aus, dass diese Spitzen als zusätzliche Uhrticks erkannt werden könnten, wenn sie groß genug sind, oder? Selbst wenn das Signal anstelle eines Taktes eingeschwungen ist, könnte der IC mehrere Signale senden. Ist dieses Verständnis richtig? Und könnte es hier ein Problem sein?
Lesen Sie meine Antwort in der verknüpften Frage - alle Fragen stellen Sie bitte als Kommentar unter dieser Antwort (relevantere Art, Dinge zu tun, denke ich).
@ratuso, es ist höchst unwahrscheinlich, dass Ihre Schaltung stark genug klingeln kann, um falsche Taktflanken zu erzeugen. Es wird gut funktionieren. Sie bringen die Technologie nicht annähernd an ihre Grenzen :)