Hallo zusammen,
um signalverfälschung durch Reflexion zu verhinder kann man ja
bekanntlich einen Widerstand als Serienterminierung nutzen. Wie bekomme
ich nun aber raus, welcher Widerstandswert für einen bestimmten IC
geeignet ist? Kann ich das irgenwo im Datenblatt herauslesen, gibt es da
bestimmte Werte für bestimmte Technologien oder wie geht man sonst am
besten vor?
Wichtiger ist die Frage, welcher Bus verwendet wird, bzw. welche Leitung
angeschlossen ist. Das IC ist dabei weniger von Belang, nur manchmal hat
es einen definierten Innenwiderstand. Meistens muss der Innenwiderstand
am Pin eingestellt werden, durch Zuschalten von R.
Für nahezu jedes Bussystem gibt es "übliche" Werte des
Abschlusswiderstandes. Wenn der Name des Bus bekannt ist, lässt sich
vielleicht der übliche Wert ergoogeln.
Ok,
nehmen wir mal an, ich möchte einen Datenbus terminieren (SDRAM). Was
für Werte müsste ich da zur Terminierung nutzen und woher würde ich die
bekommen (also die Begündung, warum es gerade die Werte sind).
Ich hatte das bis jetzt so verstanden, dass eigentlich der
Wellenwiderstand der Leitung ausschalggebend ist. Wenn ich nun einen
Widerstand in Serie, meinetwegen zum Treiber schalte, so dass der
Innenwiderstand des Teibers+der Terminierungswiderstand dem
Wellenwiderstand entsprechen, dann sollte doch keine Reflexion (bzw. nur
eine am Empfänger, die dann aber am Sender wieder absorbiert wird)
auftrete, oder? Um diesen Widerstand aber nun zu berechnen bräuchte ich
ja den Innenwiderstand des Treibers?
Der Treiber des IC ist im Allgemeinen recht niederohmig, da ja
MOS-Schalter dafür verwendet werden. Reflexionen am Treiber sind dann
eben unvermeidlich. Wenn die Datenrichtung aber nur vom Treiber weggeht,
macht das nichts aus.
Üblich ist es, am Ende des Bus den für den Bus typischen Widerstand
anzuschließen, oft an halbe Betriebsspannung gelegt, damit die
DC-Verluste gemindert werden. Solche Abschlusswiderstände findet man als
150-Ohm Widerstands-arrays auf schnellen PC-boards. Damit ist das
Leitungsende reflexionsfrei ausgeführt, die Teilnehmer dazwischen sind
recht hochohmig gehalten, sodass sie wenig Reflexion verursachen.
manchmal wird ein 33 OHM-Widerstand längs in die Leitung geschaltet.
Dieser Widerstand dämpft das Nutzsignal in erträglicher Weise, das
reflektierte Signal deutlich stärker, da dieses zwei- oder mehrmals über
den Widerstand läuft. der Widerstand stellt eine verlustbehaftete
Leitung her. Diese Lösung ist bei kurzen Leitungen gut machbar, oft z.B.
auf Steckkarten für PCs zu finden.
Die Größe des Widerstands ist auf die Leiterbahnen des Bus abgestimmt,
der Entschluss, welchen Wellenwiderstand die Leitungen haben sollen
trifft der Systementwickler. Ich meine, meistens werden
150-Ohm-Leiterbahnen auf den Leiterplatten verwendet.
>Ich meine, meistens werden>150-Ohm-Leiterbahnen auf den Leiterplatten verwendet.
Wohl eher 50-60 Ohm. Bei differentiellen liegt man im Bereich von
100-120 Ohm. Und, ich als Schaltungsentwickler entscheide darüber und
nicht der Systementwickler!
>manchmal wird ein 33 OHM-Widerstand längs in die Leitung geschaltet.>Dieser Widerstand dämpft das Nutzsignal in erträglicher Weise, das>reflektierte Signal deutlich stärker, da dieses zwei- oder mehrmals über>den Widerstand läuft. der Widerstand stellt eine verlustbehaftete>Leitung her. Diese Lösung ist bei kurzen Leitungen gut machbar, oft z.B.>auf Steckkarten für PCs zu finden.
Ja, man verwendet diesen Widerstand. Aber die Erklärung dazu ist nicht
korrekt. Er dämpft weder, noch ist er nur bei kurzen Leitungen zu
gebrauchen.
Dieser Widerstand passt zusammen mit dem Innenwiderstand der Quelle das
Signal auf die Leitungsimpedanz an. Eine Signalflanke wird dadurch
während der Bruchteile von Nanosekunden, in der sie von der Quelle zur
Senke läuft, durch den Spannungsteiler aus Quellwiderstand+33 Ohm und
der Leitungsimpedanz halbiert. Diese 33 Ohm müssen übrigens so nahe wie
möglich an der Quellpin angeordnet werden.
Am Ende der Leitung sitzt (in der Digitaltechnik) ein hochohmiger
Eingang, das ist also ein sog. Leerlauf und erzeugt eine Totalreflektion
dieser Flanke. Sie wird dabei doppelt so groß wie es die vorlaufende
Flanke war. Genau das will man ja - den dort soll der volle Signalhub
auftreten. Dieser reflektierte Teil läuft nun wieder zurück zu Quelle
und trifft dort auf deren Quellwiderstand incl. der 33 Ohm. Da dies auf
die Leitungsimpedanz passt, ergibt sich keine weitere Reflektion und der
Vorgang ist abgeschlossen.
Da kann man schön mit einem schnellen Skope messen, indem man irgendwo
in der Leitung abgreift. Es ist eine Treppe zu sehen - um so deutlicher,
je näher man auf der Quellseite misst.
Diese Art der Terminierung hat Vor- und Nachteile. Der Vorteil ist, dass
mit nur einem Widerstand eine Punkt-zu-Punkt-Verbindung sehr gut
angepasst werden kann. Außerdem fließt im statischen Zustand kein Strom.
Der Nachteil ist, dass es eben nur eine Punkt-zu-Punkt-Verbindung sein
kann. Irgend ein zweiter Verbraucher wird die erwähnte Treppe sehen und
das ist für ein Taktsignal nicht akzeptabel. Man kann, je nach innerem
Quellwiderstand, zwei oder auch drei Leitungen mit je eigenen
33-Ohm-Widerständen noch verwenden; darüber hinaus wäre ein aktiver
Verteiler empfehlenswert.
Terminierung mit einem Widerstand am Ende sind natürlich elektrisch die
richtige Art und das wird auch bei analogen Signalen (Antennen usw. )
gemacht. Leider ist die Signalamplitude dann nur noch halb so groß, das
Signal ist aber überall auf der Leitung hochohmig abgreifbar (ohne
Stichleitung!) und sauber.
Bei DDR-RAMS wird häufig (aber nicht immer) eine aktive Terminierung
vewendet - also ein Abschluss statt nach Masse auf die
Schwellenspannung, meist die halbe Signalamplitude. Das bringt bessere
Ergebnisse, da solche RAMs meist als zu mehreren an den Leitungen hängen
und so gewisse Stichleitungen nicht vermeidbar sind. Speziell bei DIMMs,
die ja z.B. im PC über Steckverbinder auch relativ weit weg von der CPU
platziert sind, ist dies notwendig. Die Terminierungsspannung muss von
einem Netzteil erzeugt werden, welches aber auch genauso Strom aufnehmen
können muss, wie es ihn liefern können muss.
Wenn du eine einfache Schaltung (CPU/FPGA + ein DRAM) in kleiner
Entfernung (<5cm) anordnen kannst, dann vergiss die Terminierung - mit
Ausnahme der Takte - deren Flanken müssen sauber sein. Da würde ich
wieder auf die 33 Ohm verweisen. Dies hängt nicht von der verwendeten
Taktfrequenz ab, sondern von der verwendeten Technologie: wie steil sind
die Flanken meines Treibers!
Bei Daten, die irgendwo in Datenmitte abgetastet werden, ist eine
unsauber Flanke uninteressant, solange sie nicht in diesen Abtastpunkt
hineinreichen.
Natürlich ist der Wert 33 Ohm (ich habe ihn hier zu Identifikation
verwendet) nicht absolut zu sehen. Die Wahl hängt vom Quellwiderstand ab
und natürlich von der vorhandenen Leitungsimpedanz (dazu gibt es Rechner
im Netz: Transmission Lines). Für normale CMOS-Signale (HC, AC FACT, LVC
usw.) und auf normalen mehrlagigen Platinen mit Leitungen um 0.2mm (und
kleiner) sowie Masseflächen sind aber die 33 Ohm eine gute Wahl. Bei
kräftigen Treiben sollte man ev. etwas höher gehen - bis etwa 43 Ohm.
Die Werte sind selten wirklich kritisch - kritisch ist nur, wenn sie
durch 0 Ohm ersetzt werden.
>Um diesen Widerstand aber nun zu berechnen bräuchte ich>ja den Innenwiderstand des Treibers?
Strenggenommen ja. Aber vielleicht kennst du die Berechnung des
Reflexionsfaktors von fehlabgeschlossenen Leitungen. Mach da mal die
Annahme, dass der innere Quellwiderstand 15 Ohm sei und verändere ihn
auf 10 oder 20. Nimm aussen die genannten 33 Ohm und eine 50 Ohm
Leitung, am Ende offen. Vergleiche die Ergebnisse und versuche vor
allem, die Amplitude des dann wieder quellseitig erneut reflektierten
Signalanteils zu bestimmen, der dann deinen Eingang stören könnte.
Vergleiche diese Werte mit der Luft, die dein Eingang noch hat, um
wieder die Schwelle zum Umschalten zu überschreiten. Es ist nicht
wirklich kritisch.
Ich habe auf ganzen Platinen immer den selben Wert verwendet (27 Ohm
übrigens) - unabhängig vom Treiber und ohne zu Forschen, wie es im IC
aussieht. Gut, anfangs habe ich mit unterschiedlichen Widerständen
gemessen. Da die Unterschiede aber zu gering waren, habe ich mir das
später erspart! Natürlich wurde die Leitungsgeometrie entsprechend des
Platinenaufbaus auf rund 50 Ohm berechnet.
War zu lange - zugegeben ...
Bei einigen Datenblättern findet man Kurven, aus denen man den
Ausgangswiderand ablesen kann. Beim Atmel Mega48 sind es bei 5 V z.B.
etwa 20-30 Ohm und etwas mehr bei weniger Spannung. Der
Ausgangswiderstand kann je nach Chip auch unsymetrisch sein zwischen H
und L Ausgangspegel. Eine perfekte Terminierung ist bei Digitalsignalen
auch nicht so wichtig wie bei analogen Signalen.
@HildeK
vielen Dank für die ausführliche Beschreibung. Hab es jetzt denke ich
vollständig begriffen.
Nur noch eine Frage, du schreibst, dass mann beim Taktsignal von
DDR-RAMS eine serienterminierung von 33 Ohm vornehmen sollte. Wenn ich
aber nun mehrere DDR-RAMS an einem Taktsignal dranhänge wäre doch eine
Parllelterminierung auf halbe Signalamplitude besser geeigent oder?
@ liefers (Gast)
>aber nun mehrere DDR-RAMS an einem Taktsignal dranhänge wäre doch eine>Parllelterminierung auf halbe Signalamplitude besser geeigent oder?
Taktleitungen sollten nie mit Serienterminierung betrieben werden.
Warum? Siehe Artikel Wellenwiderstand.
Mfg
Falk
>Wenn ich>aber nun mehrere DDR-RAMS an einem Taktsignal dranhänge wäre doch eine>Parllelterminierung auf halbe Signalamplitude besser geeigent oder?
Ja, bei mehr als einem RAM ist das der richtige Weg.
Auf der Quellenseite würde ich trotzdem Serien-Widerstände vorsehen, mit
wenigen Ohm (10-20) bestücken - die bringen manchmal noch eine
Signalverbesserung (auf Kosten der Amplitude). Und ein 0-Ohm-Widerstand
ist als Brücke auch möglich.
Übrigens, achte auf das Layout:
Quelle --> (ev. Rs) --> DDRRAM1 --> DDRRAM2 --> 50 Ohm -->
Term.-Spannungsquelle.
Schön der Reihe nach und ohne Stichleitungen verdrahten.
Ich habe es, glaube ich, schon mal gesagt: bei aktiver Terminierung muss
die Spannungsquelle auch Strom aufnehmen können.
Falk Brunner (falk) schrieb:
>Taktleitungen sollten nie mit Serienterminierung betrieben werden.
Diese Aussage ist so, wie sie hier so alleine steht, schlichtweg falsch!
Auch im verlinkten Artikel stehen Zusätze.
Meine Erfahrung:
- Taktleitungen sind kritisch und sollten idealerweise immer
PtP-Verbindungen sein - mit quellseitiger Serienterminierung
- bei geeigneter Treiberstärke notwendigem Betrieb mehrere Verbraucher
an einem Takt (DDRRAM) ist die Parallelterminierung besser.
- bei geeigneter Treiberstärke (niederohmige Quelle) kann dieser auch
zwei oder drei Taktleitungen treiben - jede für sich mit einem eigenen
Serienwiderstand.
- die Notwendigkeit einer Terminierung bei gegebener Leitungslänge hängt
ab von der Flankensteilheit des Taktsignals und von der Geschwindigkeit
(Bandbreite) des Empfängers. Mit der Betrachtung kann auch der maximale
Abstand zweier Empfänger (wenn es denn anders gar nicht gehen sollte) an
einer serienterminierten Leitung bestimmt werden.
@ HildeK (Gast)
>>Taktleitungen sollten nie mit Serienterminierung betrieben werden.>Diese Aussage ist so, wie sie hier so alleine steht, schlichtweg falsch!
Jain. Ich bezog mich auf mehrere Taktempänger auf einer Leitung, aka
Multidrop.
>- bei geeigneter Treiberstärke notwendigem Betrieb mehrere Verbraucher>an einem Takt (DDRRAM) ist die Parallelterminierung besser.
Notwendig! Sonst gibt es Treppenstufen auf dem Signal -> Viel Spass!
Der Rest steht alles im Artikel.
MFG
Falk
Ich schliesse meine Frage hier an, weil sie dazu passt, denke ich:
Ich benutze einen programmierbaren Taktgenerator mit 50MHz, der durch
einen Quarz ersetzt werden soll und zwei parallel geschaltete Chips
takten muss.
Momentan ist garnichts verwendet und ich hatte eine Serienterminierung
mit 33R nahe am Taktgeber hin zu dem ersten Chip vorgesehen. Nun, da ich
das Thema erblickt habe, bin ich geneigt, eine 2. Leitung aufzumachen
und den 2. Chip ähnlich zu verschalten, also so:
Taktgeber---R33--------------------- Chip 1
|
|--R33-------------------- Chip 2
Ist das richtig, jeweils 33R zu nehmen, oder müsste ich auf 66R gehen?
Wie vedrahte ich dann einen den Quarz? Zum Schwingen bringen kann ihn ja
nur ein Chip. Kann ich den zweiten einfach dranhängen?
ChipClockOut ---- Quarz ------ ChipClockIn1
|
|--R33--------------- Chip 2
oder muss ich einen Treiber dranhängen? Ich fürchte nämlich, der Quarz
ist nicht niederohmig genug.