Hallo zusammen,
meine Frage, ich habe einen µP mit externen SDRAM und Flash
Bausteinen,nach den unterstehenden Formeln die die Flankensteilheit und
die Signal Laufzeitlänge berücksichtigen geben diese Formel eine
Abschätzung ob man eine Leiterbahn Terminieren muss, sollte oder ob sie
unkritisch ist.
Unkritische Leitungslänge 1 < (0,2to/2td)
Leitungslänge ab der Terminiert werden sollte 0,2to/2to < 1 <
((0,5..1,0))to/2to
Ab dieser Leitungslänge müssen die Leitungen Terminiert werden 1 >
(0,5..1,0)/2to
Wenn nach der Formel heraus kommt das ich eine Unkritische Leitungslänge
habe, benötige ich ja keine Terminierung daraus folgt doch das ich auch
keine Impedanz Kontrollierte Leiterplatte benötige? Und wie sieht es mit
dem Length Matching aus?
Das Ganze lässt sich wie üblich nicht an einer einzigen Zahl oder einem
Grenzwert festnieten, denn so schön solche Faustformeln sind, so
vereinfachend und verniedlichend sind sie auch.
Wenn du auf die Terminierung verzichtest UND auf gleiche Längen UND
zudem noch auf korrekte Impedanz, DANN kann einer dieser drei "Tropfen"
das Fass zum Überlaufen bringen. Denn letztlich entfernst du dich mit
jedem Schritt vom optimalen Design. Und der letzte Kompromiss kann
einer zu viel sein...
Beurteilen kann das letztlich aber nur einer mit entsprechend viel
Erfahrung anhand eines definierten Beispiels. Und evtl. brauchst du
dafür auch noch ein paar Messungen.
Hallo,
> Michael schrieb:> Sehe ich ein, aber wenn ich keine Terminierung der Leiterbahn habe auf> welchen Wert stelle ich die Impedanz ein?
was spielt jetzt die Impedanz für eine Rolle, wenn sie eh keine Rolle
spielt -> weil keine Terminierung?
Um was geht es überhaupt?
Welchen uC hast du konkret und welche Leitungslängen kommen am Ende max.
zustande?
Wie schon geschrieben: Am Ende ist die Summe aller Bedingungen wichtig
für ein vernünftiges Konzept.
Gruß Öletronika
Was sagt denn dein Datenblatt dazu...hast du da schon mal reingeschaut?
Oft sind da wenigstens Empfehlungen drin, manchmal sogar
Layoutbeispiele.
Sowas mit Fausformeln abzufrühstücken geht eher schief wenn man nicht
weiß, was man da tut.
Es handelt sich um einen Cortex M4 von ST. Die Clock Frequenz für das
SDRAM liegt bei 120mHz.Die Leitungslänge liegt irgendwo zwischen 20 und
30mm genau sagen kann ich das noch nicht da ich noch nicht Layoutet
habe. In den Datenblättern habe ich nichts dazu gefunden und von ST gibt
es auch keine Informationen.
Auf einem Eval Board mit diesem µP wurden die Leitungen Terminiert da
sind aber auch Leitungslängen von ca. 150mm zwischen den Bauteilen. Mit
einem Length Matching von ca. +/- 5mm.
Auf einem Modul von EmCraft sind die Leitungen definitiv nicht
Terminiert, nur ein Length Matching wurde vorgenommen +/- ??mm
Michael schrieb:> 120mHz
Bist du dir sicher, daß du 120Milliertz meinst?
Ehrlich gesagt widerstrebt es mir zutiefst, hier umsonst deine Arbeit zu
machen. Allzumal ich mich selber gerade intensiv in dieses Thema
einarbeite.
Ich helfe Anfängern ja gerne, und Anregungen kann man unter Kollegen
auch immer geben. Aber was du hier verlangst geht da doch deutlich
drüber hinaus.
Nein es sind natürlich 120MHz.
Du sollst nicht meine Arbeit machen, ich arbeite mich gerade auch in
dieses Thema ein, es aber sehr unterschiedliche Informationen zu diesem
Thema gibt dachte einer hätte eine gute Idee oder könnte etwas direkt
dazu sagen.
Ich selber arbeite mich gerade durch "Right the first Time" von Lee
Ritchey durch. Ich bin da zwar erst zu einem Drittel durch, kann das
Buch aber soweit sehr empfehlen.
Hallo,
> Michael schrieb:> Es handelt sich um einen Cortex M4 von ST. Die Clock Frequenz für das> SDRAM liegt bei 120mHz.
Als Techniker sollte die korrekte Verwendung von physikalischen
Einheiten und Vorsätzen schon in Fleisch und Blut übergegangen sein.
> Die Leitungslänge liegt irgendwo zwischen 20 und> 30mm genau sagen kann ich das noch nicht da ich noch nicht Layoutet> habe.
Bei so kurzen Leitungen sehe ich das ziemlich unkritisch.
> In den Datenblättern habe ich nichts dazu gefunden
Ich denke, du weißt nur nicht, wonach du suchst.
Die Problematik hängt ja direkt mit den Anstiegszeiten der Treiber
zusammen, aber auf beiden Seiten (uC und RAM).
Zum Timing gibt es aber sicher Informationen in den Datenblättern.
> und von ST gibt es auch keine Informationen.
Das ist eher Allgemeinwissen von Elektronikern.
> Auf einem Eval Board mit diesem µP wurden die Leitungen Terminiert da> sind aber auch Leitungslängen von ca. 150mm zwischen den Bauteilen.
Ist ja deutlich länger. Außerdem wird amn bei einem Evalboard eher alles
tun, was State of the art ist.
> Auf einem Modul von EmCraft sind die Leitungen definitiv nicht> Terminiert, nur ein Length Matching wurde vorgenommen +/- ??mm
Da wird oft aus Angst ein gewisser Kult betrieben. Manche Leute
diskutieren dann die Toleranz des Längenmatching im
Sub-Millimeterbereich. Man sollte die Kirche aber im Dorf lassen. Die
Größenordnung von ca. 5...10mm scheint da eher sinnvoll und auch
machbar.
Ich habe einen M3 mit RAM. Da habe ich nur den RAM dicht neben den uC
plaziert (siehe Anhang, nur Top und Bottom, ohne Powerplanes). Nach
derzeitigen Erkenntnissen läuft das sauber.
Gruß Öletronika
U. M. schrieb:> Manche Leute> diskutieren dann die Toleranz des Längenmatching im> Sub-Millimeterbereich. Man sollte die Kirche aber im Dorf lassen. Die> Größenordnung von ca. 5...10mm scheint da eher sinnvoll und auch> machbar.
Das stimmt schon so, aber(!) man hat sehr viele Möglichkeiten hier etwas
falsch zu machen. Wenn man nun das Längenmatching (was bei den
Frequenzen tatsächlich noch nicht extrem kritisch ist, die
Ausbreitungsgeschwindigkeit auf der LP ist in etwa 15cm/ns) etwas
genauer macht ist es dennoch "leicht verdientes Geld". Das was man hier
mit relativ wenig Aufwand gewinnt, kann man andersweitig, wo man
schwerer dran kommt, als Reserve drauf packen.
Deshalb halte ich es auch so, daß ich hier lieber etwas Zeit investiere
und das Längenmatching zumindest in den Bereich +/- 3mm Bringe. Bei
Differential Pairs sollte es jedoch innerhalb des pairs genauer sein.
Lass das Mal den Falk nicht lesen ?
Je nach Taktfrequenz und Timingreserve darf die Längedifferenz sehr viel
größer sein und es bringt nullkommanichts sich hier zu verkünsteln. Die
Zauberwörter sind Setup und hold Zeiten.
Btw kenne ich keinen Stm32F4 der für 120 MHz Sdram spezifiziert ist...
Schau nochmal nach...
Du hattest recht es sind nur 90MHz.
zu den 120mHz, auch Techniker sind nicht vor Tippfehlern gefeit.
Das mit dem Längenmatching habe ich verstanden die +/- 3mm habe ich auch
schon wo anders gelesen. Die tn-46-14 von Micron habe ich gelesen
(Hersteller gibt an Längenmatching und Terminieren).
Aber was ist mit Z0 (Impedanz der Leiterplatte) so wie in der tn-46-14
auf 50-60Ω einstellen oder komplett ignorieren, ist ja auch ein
Kostenfaktor?
Damit bin ich wieder bei der Fausformel vom Anfang dieses threads
Und noch was zu den Taktfrequenzen:
Das CPU-Takt und der Takt mit dem du die Pins toggeln kannst nicht
dasselbe sind hast du ja eben rausgefunden. Und wenn du noch die HAL
benutzt wird das Ganze sicherlich noch sehr viel langsamer werden.
Außerdem kannst du die Flankensteilheit beim F4 sogar einstellen
(zumindest hab ich die Funktion des SPEED-Registers so verstanden).
Vorschlag: Miß doch mal an einem Oszilloskop wieviel schnell du die Pins
in deinem Programm tatsächlich toggeln kannst und ob du die
Flankensteilheit flacher bekommst.
Es könnte gut sein daß Längenabgleich und vielleicht sogar
Terminierung/Impedazkontrolle danach hinfällig werden.
Das Buch würde ich dennoch mal lesen. Hilft beim nächsten Projekt und
erweitert den Horizont allemal.
Es gibt Stimmen, die sagen:
- Bei SDR SDRam ist Längenanpassung bei kurzen Leitungslängen unnötig.
Wer keine Hand voll ps für Laufzeitunterschiede an Timingreserve hat,
der hat was ganz anderes im Controller verkackt!
- Nutze das aus was Dein Fertiger an Leiterbahnen produzieren kann.
Dünnere Leiterbahnen = weniger Umstände beim Layout = kürzere
Leiterbahnen = besser.
Zur Not kann man den SDRAM im STM32 AFAIK mit 1/2 oder 1/3 HCLK
betreiben, was aus Sicht der Timingreserve in der 1/3 HCLK Variante
"unendliche" Freiheiten eröffnet. Brauchst Du tatsächlich unbedingt die
volle Geschwindigkeit oder kannst Du zur not auf 32 bit gehen und den
Takt reduzieren?
Wenn es um mehrere Teilnehmer am Bus geht wird es aus Sicht der
Signalintegrität interessant. Hier hilft dann nur noch Simulation oder
Erfahrung. Dabei ändert sich das ganze System je nach aktivem Treiber.
Hallo,
> Michael schrieb:> Du hattest recht es sind nur 90MHz.
Aha, da wird es jetzt auch noch etwas moderater.
> Aber was ist mit Z0 (Impedanz der Leiterplatte) so wie in der tn-46-14> auf 50-60Ω einstellen oder komplett ignorieren, ist ja auch ein> Kostenfaktor?
Wenn du die Leitungen nicht terminueren willst, weil das bei den kurzen
Längen nicht nötig ist, dann ist die diskussion über Wellenwiderstand
völlig überflüssig.
> Damit bin ich wieder bei der Fausformel vom Anfang dieses threads
Es gibt folgende Faustformel: Wenn Leitungslängen länger als ca.
Lambda/10 sind, muß man mit HF-Effekten rechnen.
Das heißt, dass man mit Signalverfälschungen durch Reflexionen rechnen
muß. Um die zu verhindern, wird terminiert. Damit man überhaupt weiß,
wie man terminieren soll, muß man wissen, welche Impedanz die Leitungen
überhaupt haben. Deshalb stellt man dann die Impedanz einheitlich für
alle betreffenden Signale ein.
Die Frage ist dann nur noch, mit welchen Frequenzen muß man rechnen, um
die Wellenlänge zu bestimmen. Da zählt aber nicht die Clockfrequenz,
sondern die Anstiegszeiten der Signalflanken, welche natürlich deutlich
höhere Frequenzen als Oberwellen generieren.
Bei Anstiegszeiten im Bereich von angenommen 2ns kann man mit Frequenzen
bis min. ca. 300MHz rechnen. Bei Wellenlängen von ca. 0,6...0,7m sollte
man also bei Leitungslängen bis ca. 70mm keine starken HF-Effekte
bekommen.
Um also auch mit längeren Leitungen ohne großen Aufwand zurecht zu
kommen, muß man die Steilheit der Signalflanken möglichst auf das
notwendige Maß begrenzen. Das kann man z.B. auch durch Reihenwiderstände
an Treiberausgängen bewirken, welche in Verbindung mit unvermeidbaren
Kapazitäten als Tiefpass wirken.
Falls du dir die Signalflanken mit einem Oszi ansehen willst, beachte
dass jede Tastspitze auch schon eine Kapazität darstellt. Mit den
üblichen 5...7pF einer passiven 10:1 Tastspeitze kann man sehr
hochfrequente Signale schon deutlich verfälschen (Nach dem Motto: "Wer
mißt, mißt Mist").
Gruß Öletronika
U. M. schrieb:> Bei Anstiegszeiten im Bereich von angenommen 2ns
Moderne CMOS-Bausteine sind durchaus schneller.
U. M. schrieb:> muß man die Steilheit der Signalflanken möglichst auf das> notwendige Maß begrenzen. Das kann man z.B. auch durch Reihenwiderstände> an Treiberausgängen bewirken, welche in Verbindung mit unvermeidbaren> Kapazitäten als Tiefpass wirken.
Meinst du damit die typischen 20R ...50R?
Wenn ja: das ist die Terminierung und die ergibt keinen Tiefpass!
@Michael
Alles, was mit der Flanke wirkt (typ. der Takt), sollte mit einer
Serienterminierung versehen werden. Und für diese Leitungen würde ich
schon einen konstanten Wellenwiderstand anstreben. Ob der jetzt 40R oder
60R ist, ist weniger wichtig. Der Widerstand macht dich nicht arm, die
richtige Leitung kostet nichts aber beides sorgt für
Funktionssicherheit.
Hallo,
> HildeK schrieb:> Meinst du damit die typischen 20R ...50R?
Ich schrieb ja, dass die Steilheit auf das notwendige Maß begrenzt
werden sollte. Abhängig vom Anwendungfall können auch Reihenwiderstände
in der Größenordnung von 100 Ohm und mehr zweckmäßig sein.
Der Witz dabei ist ja gerade, dass damit auch längere Leitungen
bezüglich HF-Effekten unkritisch werden und damit Impedanzbetrachtungen
keine Rolle mehr spielen. Man muß sich das Leben ja nicht schwerer
machen als unbedingt notwendig.
Natürlich geht das nicht mit sehr schellen Signalen.
> Wenn ja: das ist die Terminierung und die ergibt keinen Tiefpass!
Der Widerstand alleine nicht.
Ein Reihenwiderstand in Verbindung mit nachfolgenden Kapazitäten gegen
gnd ist zwangläufig immer auch ein Tieffpass, was den sonst?
Gruß Öletronika