Schönen guten Abend,
Ich Bastele momentan an einer LED Laufschrift mit insgesamt 672 LED's.
Angesteuert werden diese mit mehreren (insgesamt 42) 16-Kanal LED
Treibern CAT4016.
Die CAT4016 sollen ihre Daten via SPI von einem STM32 bekommen.
da die Laufschrift eine Länge von ca. 2,4m haben soll, verwende ich 6
gleichartige Platinen (400*300mm) welche Kaskadiert werden sollen.
Nun bin ich mir beim Layout der Platine aber bei mehreren punkten
unsicher und hoffe das ihr mir da vielleicht Rat geben könntet.
Grober Aufbau der Platine:
Auf einer Platine befinden sich 7 CAT4016LED Treiber mit jeweils 16
LED's (insgesamt 112 LED's).
In der oberen linken Ecke befindet sich der Anschluss für die Daten
Signale(Eingang) (von oben nach unten: BLANK, LATCH, CLK, DATA IN).
Der Daten Eingang führt auf einen 74HC125 (dieser soll mehr oder weniger
die Datensignale Auffrischen, wollte nicht ein Ausgang vom µC direkt an
42 IC's führen).
In der rechten oberen Ecke befindet sich der Daten Ausgang, welcher die
Daten einfach an die nächste Leiterplatte weitergibt.
Auf diese Weise sollen 6 Platinen hintereinander geschaltet werden.
An die erste Platine kommt natürlich der µC und schaufelt die Daten
rein.
Die Platine ist Einlagig, die Leitungen im Bottom Layer sind später
Drahtbrücken.
Probleme:
1. EMV:
Da ich mit Schaltplan/Layout Entwicklung noch relativ
wenig Erfahrung habe
kann ich nicht abschätzen ob bei meinem Layout nicht größere EMV
Probleme auftreten. Falls ihr mir da Tipps geben könntet,
was so gar nicht geht oder verändert werden sollte,
wäre ich euch sehr dankbar.
2. Stabile Spannungsversorgung:
als Spannungsquelle will ich das VLT130-3100 Schaltnetzteil von
Pollin verwenden (Bestellnummer: 350 824) 3,3V/16A ; 5V/14A.
Die 3,3V sollen auf die Platine geführt werden.
Die Länge der Zuleitung vom Netzteil zur Platine beträgt max. 2x1,5m
Meine Frage ist jetzt, muss ich auf der Platine selbst noch
irgendwelche Puffer-Elkos vorsehen?
Die LED's selbst werden mit jeweils 20mA betrieben macht bei
112 LED's auf einer Platine 2,24A + einige mA
für die restliche Schaltung.
Für alle 6 Platinen (672 LED's) > 13A.
Da könnte ich mir vorstellen das im Worstcasefall, wenn alle LED's
gleichzeitig eingeschaltet werden, die Versorgungsspannung
an den IC's zu stark einbricht.
Ist es evtl. sogar sinnvoll auf die Platine selbst Spannungsregler zu
packen?
(müsste dann halt die 5V Leitung vom Netzteil als Quelle nehmen)
3. Propagation delay CLK to SOUT:
Das letzte größere Problem das ich sehe,
ist die kontinuierlich steigende Verzögerung des Datensignals
zum Taktsignal.
Das Taktsignal liegt an allen LED Treibern gleichzeitig (parallel) an
(Verzögerung durch Leitungslänge außer acht gelassen),
das Daten Signal wandert jedoch durch jeden LED Treiber.
Die Verzögerung vom Datenausgang des CAT4016 zum Takt liegt laut
Datenblatt bei 8-25ns (Typ.: 15ns).
D.h. am Ausgang der Platine, also nach 7 Treiber IC's kommen die
Daten ca. 105ns (max. 175ns) später an als der Takt.
Am Ausgang der sechsten Platine
hätte man schon eine Verzögerung von durchschnittlich 630ns
(im Extremfall 1050ns).
Das wiederum bedeutet ja das mein Takt <1MHz sein muss,
weil ansonsten die Periodendauer des Taktsignals (1µs) kleiner ist
als die maximale Verzögerung des Datensignals, sodas das Taktsignal
das Datensignal überholt(was schlecht wäre).
Als Zieltakt mit dem die Schaltung letztendlich
betrieben werden soll habe ich max. 5MHz eingeplant(T=200ns),
da die maximale Signal Verzögerung pro Platine bei 175ns liegt
würde es also reichen am ende jeder Platine das Signal zu verzögern.
Lange Rede wenig Sinn, ich Suche nach einer Möglichkeit
das Taktsignal am Ausgang jeder Platine um 60-180 ns zu verzögern.
Eine Idee wäre vllt. einen weiteren HC125 zu nehmen und dessen
Propagationdelay zur Verzögerung zu nutzen,
also Takt an Eingang 1 rein,
gucken wie groß die Verzögerung am ersten Ausgang ist, falls zu klein
einfach mit dem 2. Eingang verbinden und schauen wie groß das delay
nach dem 2ten Ausgang ist etc. solange bis man ne halbwegs brauchbare
Verzögerung erreicht hat.
Aber so richtig toll finde ich die Lösung nicht,
vor allem weil das delay dort auch wieder abhängig von Temperatur
und wer weiß was ist.
Eine andere Idee war nen Schmitt trigger 74HC14 mit Tiefpass am
Eingang, nur leider hat das Taktsignal am Ausgang des
Schmitt triggers nicht mehr das gleiche Tastverhältnis wie am
Eingang.
Falls ihr da Ideen habt, immer her damit.
Vielen Dank im Voraus
> 3. Propagation delay CLK to SOUT:> Das wiederum bedeutet ja das mein Takt <1MHz sein muss,
Richtig.
> Eine Idee wäre vllt. einen weiteren HC125 zu nehmen und dessen> Propagationdelay zur Verzögerung zu nutzen, ...> Aber so richtig toll finde ich die Lösung nicht, vor allem weil das> delay dort auch wieder abhängig von Temperatur und wer weiß was ist.
Ja nun, das Delay durch den LED-Treiber dürfte auch nicht annähernd die
Konstanz von PI erreichen...
1
tod Propagation delay time SOUT CLK to SOUT min.8 typ.15 max.25 ns
Ich würde sagen: sieh mal solche "Verzögerungsleitungen" vor...
> Als Zieltakt mit dem die Schaltung letztendlich> betrieben werden soll habe ich max. 5MHz eingeplant(T=200ns),> da die maximale Signal Verzögerung pro Platine bei 175ns liegt
Das ist letztlich egal, denn die Laufzeiten durch die Platine betreffen
ja jedes einzelne Signal.
Auf die gesamte Länge betrachtet finde ich das Verhalten der Schaltung
bzgl. Groundbouncing interessant, wenn mal alle LED gleichzeitig ein-
bzw. ausgeschaltet werden.
Da müssen garantiert noch ein paar Pufferelkos rein, nur sehe ich da
keine optimale Ankopplung, weil so viele Kupferinseln herumfahren...
Ich würde da auf jeden Fall noch eine (Serien-)Terminierung jeweils nach
den Treibern IC2 vorsehen. Wenn die nicht nötig ist, dann kannst du
immer noch eine Brücke reinlöten...
Schalte mal das unnötige Kupferfüllen ab (Orphans). Erst dann siehst du,
wo wirklich eine Verbindung irgendwohin besteht. Einfach so Kupfer
stehen zu lassen ist in erster Linie eine Antenne, die in beide
Richtungen (senden+empfangen) wirken kann...
@ Daniel D. (wuzt)
>Der Daten Eingang führt auf einen 74HC125 (dieser soll mehr oder weniger>die Datensignale Auffrischen, wollte nicht ein Ausgang vom µC direkt an>42 IC's führen).
Erstmal richtg, so aber nur halbgar. Du hast vier Signale
Latch
CLK
SIN
SOUT
Latch und CLK gehen parallel an alle 42 (sic!) Schieberegister. Dort
braucht man Dampf, vor allem bei CLK. So ein Kaskadieren ist da nicht
sehr sinnvoll, vor allem wegen der akkumulierenden Verzögerung der
Gatter. Besser ist hier gleich ein guter, differentieller Treiber.
Nimm einen RS485 Baustein ala MAX488 und nimm den als CLK und LATCH
Treiber. Die Leitung (differentiell) geht dann direkt an alle Boards
direkt, kein Kaskadieren. Am Ende die Leitung ganz normal parallel
Terminieren, wie im Lehrbuch, siehe Wellenwiderstand. Auf dein Board
kommen dann zwei Empfänger ala MAX488 für LATCH und CLK, keine 125er.
SIN geht direkt an deinen MC, denn der muss ja nur EINEN IC treiben.
Genauso wie der letzte IC auf dem Board nur EINEN IC vom nächsten
treiben muss. Alles easy. Aber bitte auch hier Das Signal mit Masse
verdrillt führen, siehe Artikel oben.
Dann passt das schon.
>1. EMV:>2. Stabile Spannungsversorgung:> Die 3,3V sollen auf die Platine geführt werden.
Kann man manchen, bedenke aber dann dass du MASSIVE Querschnitte
brauchst. Bei 3,3V und 13A kannst du dir nur wenig Spannungsabfall
leisten, ich sag mal max. 0,3V. Den Rest kannst du selber ausrechnen.
> Meine Frage ist jetzt, muss ich auf der Platine selbst noch> irgendwelche Puffer-Elkos vorsehen?
Ja, Pi mal Daumen 470uF pro Board.
> Ist es evtl. sogar sinnvoll auf die Platine selbst Spannungsregler zu> packen?> (müsste dann halt die 5V Leitung vom Netzteil als Quelle nehmen)
Kann man machen, ist aber nicht zwingend.
>3. Propagation delay CLK to SOUT:> Das letzte größere Problem das ich sehe,> ist die kontinuierlich steigende Verzögerung des Datensignals> zum Taktsignal.
Irrtum. Alle Schieberegister werden annähernd gleichzeitig getaktet,
lediglich die Laufzeitverzögerung des Taktes auf der Leitung spielt eine
kleine Rolle. Damit kann man nahezu beliebig viele ICs kaskadieren,
deine 42 Stück sind kein Problem, ebenso wie deine 5 MHz.
> Das Taktsignal liegt an allen LED Treibern gleichzeitig (parallel) an
In deinem Entwurf nicht, da kommen noch massig Verzögerungen durch deine
"Auffrischtreiber" rein, so ca. 6x10ns.
> Die Verzögerung vom Datenausgang des CAT4016 zum Takt liegt laut> Datenblatt bei 8-25ns (Typ.: 15ns).
Das akkumuliert sich aber zum Glück nicht. Die Register schalten
GLEICHZEITIG.
> D.h. am Ausgang der Platine, also nach 7 Treiber IC's kommen die> Daten ca. 105ns (max. 175ns) später an als der Takt.
Nein.
> Am Ausgang der sechsten Platine> hätte man schon eine Verzögerung von durchschnittlich 630ns> (im Extremfall 1050ns).
Nein, es ist alles synchron, KEIN Ripple-Counter ala 4040!
> Das wiederum bedeutet ja das mein Takt <1MHz sein muss,
Nein, siehe oben.
> Lange Rede wenig Sinn, ich Suche nach einer Möglichkeit> das Taktsignal am Ausgang jeder Platine um 60-180 ns zu verzögern.
Nein, suchst du nicht. Du musst synchrone Systeme verstehen lernen.
Solche Verzögerungssachen sind zu 99% Unsinn.
> Aber so richtig toll finde ich die Lösung nicht,> vor allem weil das delay dort auch wieder abhängig von Temperatur> und wer weiß was ist.
Genau so sieht es aus!
MfG
Falk
@ Lothar Miller (lkmiller) Benutzerseite
>Ich würde sagen: sieh mal solche "Verzögerungsleitungen" vor...
Eieiei Lothar, solche Enpfehlungen von DIR? Bist wohl noch nicht
ausgeschlafen?
Solche Verzögerungen sind zu 99% Unsinn!
>Auf die gesamte Länge betrachtet finde ich das Verhalten der Schaltung>bzgl. Groundbouncing interessant, wenn mal alle LED gleichzeitig ein->bzw. ausgeschaltet werden.
Wohl wahr, das kann interessant werden. Darum auch differentielle
Taktverteilung. GGf. muss man sogar die Daten differentiell von Board zu
Board schaffen.
>Ich würde da auf jeden Fall noch eine (Serien-)Terminierung jeweils nach>den Treibern IC2 vorsehen.
Lothar, was'n los? Serienterminieung für Multidrop Takte ist ein No-Go!
MFG
Falk
Falk Brunner schrieb:>>Ich würde sagen: sieh mal solche "Verzögerungsleitungen" vor...> Eieiei Lothar, solche Enpfehlungen von DIR? Bist wohl noch nicht> ausgeschlafen?
Ist ja noch früh am Morgen... :-o
Der Knackpunkt ist das:
>> Das akkumuliert sich aber zum Glück nicht.
Es zählt also begrenzend für die maximale Taktfrequenz immer nur die
eine einzige Verzögerung vom SOUT zum nächsten SIN.
Falk Brunner schrieb:> Lothar, was'n los? Serienterminieung für Multidrop Takte ist ein No-Go!
Ich bin mir bei der Konstellation hier überhaupt nicht sicher, wie sich
das Ganze verhalten wird. Daher besser zwei Pads zuviel als hinterher
alles aufgetrennt. Und in der Praxis hilft lustigerweise (auch mit
ungeklärten theoretischem Hintergrund) ein Serienwiderstand auch bei
mehreren Teilnehmern... :-o
Ok, noch ein Kommentar zum Layout. Wie bereits gesagt sind
potentialfreie Flächen meist Unsinn bis kontraproduktiv. Also
ausschalten. Bzw. per Lötbrücken an die Masse anbinden.
Zweitens sollte man die Leitungen zu den LEDs näher zusammenrücken,
jetzt kann man ja dort ein Schwein durchtreiben. Und dann verlegt man
die Leitungen zu den LEDs so, dass sie immer bis an die VCC-Leitung
rangehen. Damit vrschwinden automatisch die losen Kupferflächen und die
Massefläche wird breiter. Auch gut.
Deine großen Lötaugen als Befestigungspunkte zu missbrauchen ist keine
gute Idee. Nimm richtige Bohrungen aus der lib holes, im Layout
einfügen. So eine Platine muss ordentlich montiert werden.
Stichwort Verlustleistung. Wenn du das alles mit 3,3V betreiben willst,
ist dir hoffentlich klar, dass deine LEDs max. 2,9V Flußspannugen haben
dürfen, der IC braucht min. 0,4V selber. Also nix mit blau, weiß oder
Ultrahell, siehe LED. Und bei 20mA/Kanal sowie grünen LEDs mit ~2,2V
bleiben 16x20mA=320mA * 1,1V = 352mW im IC hängen. Bei höheren Strömen
noch mehr. Komisch, das Ding hat ausser im QFN gehäuse kein Thermal Pad,
so wie die Kollegen ala TLC5921 & Co von TI. Dennoch würde ich die
Massefläche unter dem IC maximieren, die VCC-Letung minimieren und an
die Seite schieben und den IC mit einem Klecks Wärmeleitpaste auf die
Platine löten.
So, genug gemeckert ;-)
Vielen dank für eure Hilfe
@ falk
Das Layout werde ich, wie von dir empfohlen, Anpassen.
Als Spannungsversorgung werde ich dann wohl doch direkt 5V auf die
Platine legen, mit entsprechenden Elkos.
Als Bus Treiber hab ich mir erst mal den SN75176B Rausgesucht(oder
spricht irgendwas gegen diesen?), der ist deutlich Preiswerter als die
MAX488 Reihe.
>Latch und CLK gehen parallel an alle 42 (sic!) Schieberegister. Dort>braucht man Dampf, vor allem bei CLK. So ein Kaskadieren ist da nicht>sehr sinnvoll, vor allem wegen der akkumulierenden Verzögerung der>Gatter. Besser ist hier gleich ein guter, differentieller Treiber.>Nimm einen RS485 Baustein ala MAX488 und nimm den als CLK und LATCH>Treiber. Die Leitung (differentiell) geht dann direkt an alle Boards>direkt, kein Kaskadieren. Am Ende die Leitung ganz normal parallel>Terminieren, wie im Lehrbuch, siehe Wellenwiderstand. Auf dein Board>kommen dann zwei Empfänger ala MAX488 für LATCH und CLK, keine 125er.>SIN geht direkt an deinen MC, denn der muss ja nur EINEN IC treiben.>Genauso wie der letzte IC auf dem Board nur EINEN IC vom nächsten>treiben muss. Alles easy. Aber bitte auch hier Das Signal mit Masse>verdrillt führen, siehe Artikel oben.
Entspricht der Schaltplan im Anhang so ungefähr deinem Vorschlag? (ist
natürlich nicht komplett, will nur wissen ob das vom Prinzip her richtig
ist, vor allem die Terminierung)
Falls das so passt, wie sollte dann die Leitung vom "Master" Bus Treiber
zu den anderen aussehen? Muss ich da zwangsläufig mit twisted-pair
Leitungen ran, oder gibt es da eine Möglichkeit das per Leiterbahnen auf
den Platinen zu regeln?
@Daniel D. (wuzt)
>Als Bus Treiber hab ich mir erst mal den SN75176B Rausgesucht(oder>spricht irgendwas gegen diesen?),
Nur der Stromverbrauch. Aber der fällt bei 13A nicht mehr ins Gewicht.
>Entspricht der Schaltplan im Anhang so ungefähr deinem Vorschlag?
Ja.
>Falls das so passt, wie sollte dann die Leitung vom "Master" Bus Treiber>zu den anderen aussehen? Muss ich da zwangsläufig mit twisted-pair>Leitungen ran,
Nein, nicht auf der Platine.
> oder gibt es da eine Möglichkeit das per Leiterbahnen auf> den Platinen zu regeln?
Sicher. Zieh das sauber linear durch, daneben die Masse. Dann passt das.
MFG
Falk
So, ich bins nochmal, ich hab Schaltung und das Layout jetzt angepasst,
habe die beiden Leitungspaare CLK und Latch komplett parallel
durchgezogen und mit Masse umgeben. Am ende (Ausgang) der letzten
Platine werde ich dann jeweils einen 120 Ohm Abschlusswiderstand
platzieren.
Die beiden "Master Bustreiber" werde ich auf eine kleine extra
Leiterplatte packen die direkt an den Eingang der ersten Platine kommt
(evtl. gleich noch mit entsprechenden Buchsenleisten um das Stm32
Headerboard einzustecken).
Alle großen Flächen sind jetzt mit Masse verbunden.
Habe 3x220µF Pufferkondensatoren hinzugefügt.
Die Ausgänge der beiden Bustreiber (CLK u. Latch) haben am ende eine
AC-Terminierung (erstmal 100pF + 100 Ohm, weiß nicht so recht wie man
die Perfekte/Korrekte Terminierung ermittelt).
Die Stichleitungen sind relativ lang, ist das sehr schlimm?
MfG. D.D.
@ Daniel D. (wuzt)
>So, ich bins nochmal, ich hab Schaltung und das Layout jetzt angepasst,
Sieht gut aus, sollte passen.
>AC-Terminierung (erstmal 100pF + 100 Ohm, weiß nicht so recht wie man>die Perfekte/Korrekte Terminierung ermittelt).
Probieren und Messen.
>Die Stichleitungen sind relativ lang, ist das sehr schlimm?
Naja, nicht schön, sollte aber trotzdem gehen. Aber man kann wenigsten
die Taktleitung DEUTLICH näher ranrücken und dafür den anderen Kram
wegrücken. Da spart man locker 2/3 der Stichleitung ein!
MFG
Falk