Forum: Mikrocontroller und Digitale Elektronik Clock Termination bei sehr kurzen Leitungen möglich? (AC termination)


von Mario K. (blu3r4y)



Lesenswert?

Hallo! :)

Ich betreibe auf einer Platinen einen AVR ATxmega16D4, welcher den LED 
Treiber TLC5940 von Texas Instruments via SPI anspricht.
Der XMEGA läuft mit seinem internen 32 MHz Takt und bei 3.3 Volt. Das 
SPI zum TLC5940 taktet mit 16 MHz.
Der 32 MHz Takt des XMEGAs wird direkt an einem Pin ausgegeben und als 
Takt für die PWM Steuerung des LED Treibers verwendet (GSCLK). Damit 
werden die Schieberegister im LED Treiber angesteuert und mitunter auch 
die Taktung des PWMs für die LEDs vorgegeben.

Genau mit dieser 32 MHz Taktleitung gab es ein Problem !

Sporadisch trat der Fall auf, dass die LEDs deutlich zu flackern 
begonnen haben. Mitunter häufiger wenn der TLC5940 sehr heiß geworden 
ist bzw. er gerade sehr viele LEDs auf maximalster Helligkeit treibte.
Mehr oder weniger durch Zufall bin ich drauf gekommen, dass das Problem 
an der 32 MHz Taktleitung GSCLK liegt. Sobald ich meinen 
Oszilloskoptastkopf an diese Leitung setzte funktioniert alles wieder 
wunderbar! In Folge habe ich dann an die Leitung einfach mal einen 15 pF 
Kondensator angehängt - genau diesen Wert hat nämlich mein Tastkopf! 
Wunderbar, Problem gelöst ! :D


Obwohl ich mit diesem Kondensator zwar die Symptome des Problems 
bekämpft habe, wüsste ich doch schon gerne was den die Ursache dafür 
war/ist. Ich habe sehr viel schon im Internet recherchiert und bin zum 
Thema "clock termination" auf sehr viele Beiträge u. Artikel gestoßen. 
Letztendlich fand ich eine AC termination am passendsten, weil ich diese 
auch auf einer Platine im Nachhinein leicht nachbestücken kann (R + C 
von der Leitung auf GND schalten). Folglich habe ich dann für meine 
Leitung die passenden Widerstands- und Kondensatorwerte errechnet - wie 
in diesem Artikel beschrieben 
(http://www.bitechnologies.com/pdfs/acterm.pdf)

Einige Details zu dieser 32 MHz Leitung auf meiner Platine:

Höhe: 35 µm
Länge: 45 mm
Dicke: 20 mil (0.5 mm)

PCB Dicke (Substrat): 1.6 mm (63 mil)

IMPEDANZ Z folglich ~ 115 Ω 
(http://www.eeweb.com/toolbox/microstrip-impedance/)

Da der gewählte Widerstand R bei der AC termination ja kleiner sein soll 
als die Impedanz der Leiterbahn setzte ich dafür mal einen 100 Ω 
Widerstand fest.
Wie im verlinkten Artikel oben beschrieben (S. 2, rechts) folgt dann die 
Berechnung des Kondensators nach ...


Ich hab dann auch gleich mal auf meiner Platine diese ganzen Werte 
ausprobiert und gemessen: (mit RIGOL DS1102E - 100 MHz - 1 GSa/s)

GSCLK - 32 MHz normal   -   m. 22pF + 100 Ω   -   m. 100pF + 100 Ω
SCLK  - 16 MHz normal   -   m. 22pF + 100 Ω   -   m. 100pF + 100 Ω

ERGEBNIS: Nur mit 22 pF + 100 Ω Beschaltung läuft der LED Treiber ohne 
Probleme. Mit zu wenig (0) oder zuviel (100 pF) Kapazität fängt das 
herumflackern wieder an.

---

Zu meiner Frage. Ist diese Vorgehensweise eigentlich wirklich richtig? 
Macht es Sinn eine 45 mm lange Leitung zu terminieren ??? Normalerweise 
macht man dass doch nur bei Leitungen ab 10-20 cm und noch höheren 
Takten. Ich bin mir einfach nicht sicher ob ich hier an der falschen 
Ecke die Schaltung optimiere :/
Das bringt mir bis jetzt Kopfzerbrechen, darum wollte ich mal hier 
fragen. :)

Desweiteren frage ich mich ob mein 32 MHz Signal vom XMEGA wirklich so 
grotig - beinahe sinusförmig aussieht -, oder mein Oszi die notwendigen 
Oberschwingungen nicht mehr messen kann.



Viele Grüße aus Österreich,
Mario

von HildeK (Gast)


Lesenswert?

Mario Kahlhofer schrieb:
> Ist diese Vorgehensweise eigentlich wirklich richtig?
> Macht es Sinn eine 45 mm lange Leitung zu terminieren ??? Normalerweise
> macht man dass doch nur bei Leitungen ab 10-20 cm und noch höheren
> Takten.
Ja, ist sinnvoll. Speziell bei Takten von modernen, schnellen 
CMOS-Bausteinen. Deine Faustregel ist z.B. bei 74HCxxx gut anwendbar. 
Die relevante Leitungslänge, ab der terminiert werden sollte, hängt von 
der Anstiegszeit des Signals ab. Ich würde aber einen Serienwiderstand 
an der Quelle bevorzugen - wenn du eine Punkt-zu-Punkt-Verbindung hast. 
Aber Verzweigungen sollte man sowieso bei Takten tunlichst lassen 
(Ausnahme: ganz kurze Wege für die Äste).
Probiere einfach mal einen 33R Serienwiderstand an der Quelle!

> Desweiteren frage ich mich ob mein 32 MHz Signal vom XMEGA wirklich so
> grotig - beinahe sinusförmig aussieht -, oder mein Oszi die notwendigen
> Oberschwingungen nicht mehr messen kann.
Zuerst: ich habe bisher an keinem XMEGA Signale gemessen.
Trotzdem: Messe mal direkt am Ausgangspin ohne angeschlossene Leitung 
und mit Masseanschluß des Tastkopfes direkt am Probe (ohne die mistige 
Krokodilklemmenschleife), die natürlich nahe an der Quelle auf die 
Platine gehen sollte. Dann dürfte das Signal noch ganz ordentlich 
rechteckig aussehen und wenn nicht, dann kannst du am Tastkopf oder am 
Oszi zu zweifeln beginnen. Wenn aber die Bandbreite des Skopes nur 
100MHz beträgt, dann musst du dich nicht wundern, dass nur ein 
verbogener Sinus zu sehen ist. Mindestens 300MHz Bandbreite wären schon 
ganz hilfreich.

von mause-zahn (Gast)


Lesenswert?

> 32 MHz Leitung

Die Frequenz der Grundfrequenz des Rechtecks beträgt 32 MHz. Ein 
Rechteck besteht aber aus der Summe von ungradzahligen Vielfachen dieser 
Grundfrequenz. Das heißt da stecken noch weit höhere Frequenzen drinn.

--> Je steiler die Flanken, desto mehr hohe Frequenzen stecken drinn.

Daher ist eine Terminierung sicher sinnvoll.

von Falk B. (falk)


Lesenswert?

@ Mario Kahlhofer (blu3r4y)

>Der 32 MHz Takt des XMEGAs wird direkt an einem Pin ausgegeben und als
>Takt für die PWM Steuerung des LED Treibers verwendet (GSCLK).

Ist das nicht ein wenig viel? Man kann es auch übertreiben.

>Kondensator angehängt - genau diesen Wert hat nämlich mein Tastkopf!
>Wunderbar, Problem gelöst ! :D

Jaja, der berühmte Angstkondensator ;-)

>Thema "clock termination" auf sehr viele Beiträge u. Artikel gestoßen.

Auch den Artikel Wellenwiderstand?

>Da der gewählte Widerstand R bei der AC termination ja kleiner sein soll
>als die Impedanz der Leiterbahn

Nicht unbedingt.

>setzte ich dafür mal einen 100 Ω
>Widerstand fest.

Klingt OK.

>ERGEBNIS: Nur mit 22 pF + 100 Ω Beschaltung läuft der LED Treiber ohne
>Probleme. Mit zu wenig (0) oder zuviel (100 pF) Kapazität fängt das
>herumflackern wieder an.

AC Terminierung ist nicht immer ganz einfach, allerding bei einem 
Taktsignal mit festem Tastverhältnis ist es deutich einfacher.

>Macht es Sinn eine 45 mm lange Leitung zu terminieren ???

Ja, siehe Wellenwiderstand.

>Desweiteren frage ich mich ob mein 32 MHz Signal vom XMEGA wirklich so
>grotig - beinahe sinusförmig aussieht -,

Naja, es gibt deutlich schlimmere Takte.

> oder mein Oszi die notwendigen
> Oberschwingungen nicht mehr messen kann.

Welches Oszi?
Welcher Tastkopf?
Tastkopf mit kurzer Masseanbindung?

http://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen

Layout? Massefläche?

Und bei der Frequnez bzq. den kurzen Anstiegszeiten braucht man 
eigentlich schon einen passiven HF-Taskopf (Z0-Taskopf mit 1k 
Eingnagswiderstand) oder wenn man hat einen aktiven HF-Taskopf. Die 
normalen 10:1 Tastköpfe sind hier kaum noch zu gebrauchen.

von Mario K. (blu3r4y)


Angehängte Dateien:

Lesenswert?

Hi !

Danke erstmal für eure Antworten! Die haben mir schon sehr 
weitergeholfen. :)

Zum einen hab ich jetzt nochmals das Taktsignal - wie von HildeK 
vorgeschlagen - direkt am µC mit einer kurzen 'Masseklammer' gemessen. 
Das Messergebnis ist immerhin schon deutlich besser als vorherige 
Messungen (siehe gsclk_nahfeld.jpg).

@falk:
Oszilloskop ist ein digitales 2-Kanal RIGOL DS1102E (100 MHz,  1GSa/s)
Eingänge: 1 MΩ // 15pF
1:10 passiver Tastkopf


Danke falk für den Link zum Wellenwiderstand. Darauf bin ich noch gar 
nicht gekommen da ich immer nur nach den englischen Begriffen 
herumgesucht habe. Sehr schön das ganze auch mal auf Deutsch zu lesen ! 
:)

Die Idee des Serienwiderstandes habe ich zu Beginn gleich mal wieder 
verworfen und gar nicht erst probiert. Im Datenblatt des LED Treibers 
TLC5940 fand ich nämlich im Äquivalenzschaltbild einen 400 Ω 
Serienwiderstand ! Somit dachte ich der würde das Signal so intern schon 
gut terminieren, da müsste es an was anderem liegen.

In der Realität scheint der Serienwiderstand aber auch wirklich Wunder 
zu wirken. Ich hab einen 100 Ω und einen 31 Ω Widerstand in Serie in die 
Leitung gesetzt und den Takt mit dem Oszilloskop aufgenommen. 
(gsclk_100ohm_serie.jpg)

Die gelbe Linie repräsentiert dabei die Taktleitung ohne irgendwelche 
Terminierungsmassnahmen. Und bei der weißen Linie liegt ein 100 Ω in 
Serie drinnen ! Sieht super aus finde ich :)
Mit dem 31 Ω Widerstand hat sich kaum was getan ? Sieht aus wie die 
gelbe Linie nur etwas abgedämpft - hab jetzt leider kein extra Bild 
davon gemacht :/

--

Sollte ich jetzt eher die Serienterminierung anwenden oder die AC 
Terminierung? Beide lösen das Problem sehr gut, wobei mir das Signal mit 
Serienwiderstand fast noch besser gefällt.

Ansonsten würde ich auf der finalen Platine - welche ich fertigen lassen 
werde - einfach mal Bauteilslots für eine Serien- und AC-Terminierung 
vorsehen. Und wenn ich keine Serienterminierung möchte setze ich darin 
einen 0 Ω Widerstand. Klingt das gut? ;)

Viele Grüße,
Mario

von Falk B. (falk)


Lesenswert?

@ Mario Kahlhofer (blu3r4y)

>Das Messergebnis ist immerhin schon deutlich besser als vorherige
>Messungen (siehe gsclk_nahfeld.jpg).

Sieht gut aus, nahezu perfekt.

>Oszilloskop ist ein digitales 2-Kanal RIGOL DS1102E (100 MHz,  1GSa/s)
>Eingänge: 1 MΩ // 15pF
>1:10 passiver Tastkopf

Naja, geht so. Damit hat man um die 4-5ns Anstiegszeit, sprich, unter 
6-7ns Anstiegszeit sieht man kaum noch was.

>verworfen und gar nicht erst probiert. Im Datenblatt des LED Treibers
>TLC5940 fand ich nämlich im Äquivalenzschaltbild einen 400 Ω
>Serienwiderstand ! Somit dachte ich der würde das Signal so intern schon
>gut terminieren,

Nein, das ist keine Eingangsterminierung, nur bissel ESD-Schutz.

>In der Realität scheint der Serienwiderstand aber auch wirklich Wunder
>zu wirken. Ich hab einen 100 Ω und einen 31 Ω Widerstand in Serie in die
>Leitung gesetzt und den Takt mit dem Oszilloskop aufgenommen.
>(gsclk_100ohm_serie.jpg)

>Die gelbe Linie repräsentiert dabei die Taktleitung ohne irgendwelche
>Terminierungsmassnahmen. Und bei der weißen Linie liegt ein 100 Ω in
>Serie drinnen ! Sieht super aus finde ich :)

Ja.

>Sollte ich jetzt eher die Serienterminierung anwenden

Wenn es eine Punkt zu Punkt Verbindung ist, dann Serienterminierung.
Bei mehreren Empfängern am gleichen Taktsignal, AC-Terminierung.

>einen 0 Ω Widerstand. Klingt das gut? ;)

Ja.

von Mario K. (blu3r4y)


Lesenswert?

Herlichen Dank falk! :)

Werde einen 100 Ω Widerstand direkt am Ausgang des XMEGAs platzieren. Da 
das gemessene Signal trotz meiner grässlichen Drahtbrücke auf meinem 
0815-Prototyp ohne ordentliche Groundfläche (in der Nähe der 
Taktleitung) schon so gut aussieht wird sich dass ganze auf der nächsten 
Platine (mit deutlich verbessertem Layout) sicher sehr gut verhalten. Da 
bin ich optimistisch. :)

Bei den 100 Ω bleibe ich denke ich auch. Das trifft die Leitungsimpedanz 
in der Theorie und in der Praxis relativ gut.

Danke nochmal für eure Hilfe !

Viele Grüße,
Mario

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.