Hallo,
in einem mehrkanaligen Messsystem sollen mehrere Boards über eine
Hauptplatine (quasi Backplane) miteinander verbunden werden. Die
einzelnen Boards bestehen jeweils aus einem Mikrocontroller (STM32) und
einem Sigma-Delta-AD-Wandler.
Über die gemeinsame Backplane laufen:
* Versorgungsspannungen
* RS-485-Datenbus für die Messdatenübertragung
* Gemeinsame Taktquelle (temperaturkompensierter Quarzoszillator, 3.3V
16 MHz)
Es geht um den letzten Punkt, die gemeinsame Taktversorgung aller
Mikrocontroller und AD-Wandler mit dem 16 MHz Takt. Diese gemeinsame
Taktversorgung soll die Auswertung der Daten und die Programmierung
vereinfachen und Störungen bei der A/D-Wandlung reduzieren (indem z.B.
auch das Schaltnetzteil - indirekt - aus dieser Taktquelle versorgt
wird).
Der Abstand zwischen dem Quarzoszillator und den ICs auf den 10 Boards
beträgt maximal 30cm. Das wären dann 10 Taktleitungen zu je maximal 30cm
Länge.
Der naive Ansatz wäre, den Oszillator mit einem Ausgangstreiber zu
verstärken und sternförmig Taktleitungen zu allen 10 Boards zu führen.
Das ist vermutlich aus zwei Gründen schlecht:
1.) Abstrahlung (EMV) der langen Taktleitungen
2.) Fehleranfällig: Wenn bei einem der 10 Boards die Versorgungsspannung
ausfällt, dann liegt die Taktleitung über die Schutzdioden in den ICs
auf GND.
Besser wäre vermutlich eine differentielle Taktübertragung mit kleinerem
Spannungspegel. LVDS-Transceiver bieten dies, haben aber mit ihrer hohen
Bandbreite (Gbps) sehr steile Schaltflanken und scheinen mir für 16 MHz
overkill zu sein.
Stattdessen nutze ich derzeit RS-485 Transceiver mit 20 Mbps Bandbreite
(konkret ISL3178e) und eine Bus-Struktur zur Taktverteilung. Obwohl das
funktioniert, bleibt ein ungutes Gefühl dabei. Kann man das so machen?
Den Clock-Jitter habe ich nicht gemessen. Meinem Verständnis nach ist
Jitter in der Schaltung unkritisch: Die Mikrocontroller arbeiten mit
einer integrierten PLL und die AD-Wandler müssen nur Quasi-DC-Signale
messen.
Also: Kann man das mit den RS-485 Transceivern so machen? Oder: Wie wäre
die professionelle Lösung für die Taktübertragung?
Tobias K. schrieb:> Kann man das mit den RS-485 Transceivern so machen?
Die haben natürlich den Nachteil eines hohen Pegels, und damit auch
Störpegels.
Grundsätzlich ist das natürlich eine Frage der Verdrahtung, die sollte
schon nach HiSpeed-Gesichtspunkten erfolgen, wie Impedanzanpassung und
störarme Verlegung durch Verdrillen, wie z.B. in Ethernet-Kabeln. Es ist
nicht recht klar, ob du mit Backplane eine Leiterplatte meinst, da geht
z.B. Verdrillen nicht, aber verlegen als differential pair und
Abschirmung. Allerdings landet man dann bei einem Multilayer. Wenn es
aber anders nicht zufriedenstellend funktioniert dann ist das eben so.
Georg
@Tobias K. (Gast)
>Der Abstand zwischen dem Quarzoszillator und den ICs auf den 10 Boards>beträgt maximal 30cm. Das wären dann 10 Taktleitungen zu je maximal 30cm>Länge.
Schon recht lang, siehe Wellenwiderstand.
>Der naive Ansatz wäre, den Oszillator mit einem Ausgangstreiber zu>verstärken und sternförmig Taktleitungen zu allen 10 Boards zu führen.>Das ist vermutlich aus zwei Gründen schlecht:>1.) Abstrahlung (EMV) der langen Taktleitungen
Nein. Wenn diese gescheit layoutet sind und die richtige Terminierung
haben, ist das OK.
>2.) Fehleranfällig: Wenn bei einem der 10 Boards die Versorgungsspannung>ausfällt, dann liegt die Taktleitung über die Schutzdioden in den ICs>auf GND.
Naja, wenn es soweit kommt, hast du ganz andere Probleme.
>Besser wäre vermutlich eine differentielle Taktübertragung mit kleinerem>Spannungspegel. LVDS-Transceiver bieten dies, haben aber mit ihrer hohen>Bandbreite (Gbps) sehr steile Schaltflanken und scheinen mir für 16 MHz>overkill zu sein.
Sind sie auch, auch wenn es langsamere gibt.
>Stattdessen nutze ich derzeit RS-485 Transceiver mit 20 Mbps Bandbreite>(konkret ISL3178e) und eine Bus-Struktur zur Taktverteilung. Obwohl das>funktioniert, bleibt ein ungutes Gefühl dabei. Kann man das so machen?
Ja, wenn man richtig terminiert.
>Den Clock-Jitter habe ich nicht gemessen. Meinem Verständnis nach ist>Jitter in der Schaltung unkritisch: Die Mikrocontroller arbeiten mit>einer integrierten PLL und die AD-Wandler müssen nur Quasi-DC-Signale>messen.
Dann passt das doch.
>Also: Kann man das mit den RS-485 Transceivern so machen?
Ja.
> Oder: Wie wäre die professionelle Lösung für die Taktübertragung?
Hier muss man nicht krampfhaft HighTec nutzen.
Eine saubere Loesung waere 1 Leitung entlang der Backplane, Am
Oszillator einen 100 Ohm in Serie, Die Leitung ist dann ein
sourceterminierter Bus. Dann auf jeder Einschubleiterplatte grad am
Stecher einen 74SZ04 Single Gate Inverter zum Entkoppeln, als Treiber
fuer die Karte.
Falls diese Anordnung stoert, einen Differentialbus mit LVDS entlang der
Backplane, und auf jeder Karte grad am Stecker LVDS Receiver, ohne
Busterminator. Der Busterminator kommt dann hinten am Bus, auf der
Backplane.
Vielen Dank für die hilfreichen Antworten. Es spricht also nichts gegen
die RS-485 Lösung, d.h. ich werde dabei bleiben. Auf die richtige
Terminierung werde ich achten.
Ergänzung:
Differentielle Signale sollten unbedingt auch als differential pair
geroutet werden, also beide Leiterbahnen in definiertem Abstand
nebeneinander und nicht irgendwie quer durch die Gegend. Dann ist die
umschlossene Fläche zwischen Signal und invertiertem Signal minimal und
damit die EMV optimal.
Georg
@Oh Doch (jetztnicht)
>Eine saubere Loesung waere 1 Leitung entlang der Backplane, Am>Oszillator einen 100 Ohm in Serie, Die Leitung ist dann ein>sourceterminierter Bus. Dann auf jeder Einschubleiterplatte grad am>Stecher einen 74SZ04 Single Gate Inverter zum Entkoppeln, als Treiber>fuer die Karte.
FALSCH! Genau SO macht man es nicht! Siehe Wellenwiderstand!!!
"Serienterminierung ist für Takte nur bei Punkt-zu-Punkt-Verbindungen
sicher nutzbar."
"Taktsignale dürfen nur bei Punkt zu Punkt Verbindungen mit
Serienterminierung betrieben werden (ein Sender und nur ein Empfänger).
Anderenfalls kann es zu Fehlfunktionen kommen, da ein Takteingang,
welcher in der Mitte der Leitung sitzt für ein paar Nanosekunden eine
Spannung am Eingang anliegen hat die etwa VCC/2 entspricht. Das ist aber
genau die Schaltschwelle von CMOS-ICs. Kleinste eingekoppelte Störungen
können nun dafür sorgen, daß der Takteingang mehrere Flanken "sieht", wo
eigentlich nur eine sein sollte. "
PCI lief millionenfach in PCs als normales TTL-Signal mit 5/3,3V. Und
das waren 33/66 MHz. Allerdings war das eine sternförmige
Taktverteilung, jeder PCI-Slot hatte eine eigene Taktleitung zum
Busmaster.