Leitungsanpassung SDRAM

Hallo,

welche Gründe haben die Leitungslängenanpassung bei einem Datenbuss und Addressbus zwischen einem µC und einem 133MHz SDRAM, der sich 5-6 cm vom µC entfernt befindet?
In Foren liest man recht häufig, dass das gar keinen Sinn hat bei solch kurzen Leitungslängen und entsprechend niedrigen Frequenzen - jedoch sieht man es bei z.B. sehr vielen Festplatten wie von Iomega etc. trotzdem? Welche minimalen und maximalen Leitungslängen müssen einghalten werden und mit hilfe welcher mathematischen formeln kann man das berechnen?

Welche Länge muss die CLK-Leitung gegenüber den Addressleitungen besitzen? Gibt es dazu mathematische Formeln? Tclk

Hallo,

du kannst davon ausgehen, dass die Platinen auf Festplatten von qualifizierten Fachleuten entworfen wurden. Bei Foren dagegen ist es eher so, dass die überwiegende Mehrzahl der Teilnehmer keine Ahnung von der Materie hat.

Zur Berechnung: für die Signale steht jeweils ein bestimmtes Zeitfenster zur Verfügung (Grössenordnung ps bis ns), treffen Signale zu früh ein, muss die Leitung verlängert werden (das umgekehrte geht in der Regel nicht, man geht also von der längsten Leiterbahn als gegeben aus). Die Taktflanke ist normalerweise die Referenz, daher kann man mit einer Verzögerung des Taktsignals (Leitungsverlängerung) die zulässigen Verzögerungen der anderen Signale erhöhen, falls notwendig. Dabei muss natürlich beachtet werden, dass auch die Antwortzeiten im erlaubten Rahmen bleiben.

Grundlage ist die Signalverzögerung der betreffenden Leiterbahn, die mit geeigneter Software berechnet werden muss.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo patrick,

welche Gründe haben die Leitungslängenanpassung bei einem
Datenbuss und Addressbus zwischen einem µC und einem 133MHz
SDRAM, der sich 5-6 cm vom µC entfernt befindet?

Mit Lichtgeschwindigkeit kommt man in 1ns noch 30cm weit.
Deine leitungsgebundenen Signale sind aber einiges langsamer.

Das andere Problem ist noch, dass die Leitungskapazität proportional zur Länge ist. Somit haben die Treiber mit einer kürzeren Leitung eine geringere kapazitive Last und schalten deshalb schneller.

Übrigens:
Bei einem analogen Oszilloskop hat man das Problem, dass die Triggerstufe nur das aufbereitete Signal verarbeiten kann und du somit das Triggersignal erst dann erhältst (Die Triggerstufe hat ja auch eine Laufzeit) wenn die Triggerflanke schon durch ist.
Damit man die Flanke trotzdem noch sehen kann, hat man früher einfach ein paar Meter Koaxkabel als Verzögerungsleitung verwendet.

MfG Peter(TOO)

Zur Berechnung: für die Signale steht jeweils ein bestimmtes
Zeitfenster zur Verfügung (Grössenordnung ps bis ns), treffen
Signale zu früh ein, muss die Leitung verlängert werden (das
umgekehrte geht in der Regel nicht, man geht also von der
längsten Leiterbahn als gegeben aus).

ok - dann wurde mir das in einem anderen Forum total falsch erklärt… da meinten die teilnehmer, dass es egal ist ob Signale zu früh eintreffen, die bleiben dann halt am Eingang z.B. vom SDRAM solange bis die anderen Signale auch eingetroffen sind, stehen…

Gibt es über diese Thematik ein sehr gutes Buch? Ich weiß zwar mit welcher Frequenz der SDRAM getaktet werden soll - 80MHz und die Setup- und Hold-Zeiten kann ich aus dem Datenblatt herauslesen für die einzelnen Signale, aber aus welchen Zahlen ersieht man, um wieviel früher z.B. das CLK-Signal gegenüber die Daten- u. Adressleitungen am SDRAM ankommen muss und wieviel Zeitunterschied zwischen den einzelnen Datenleitungen eines Datenbusses noch gewährleistet können, ohne dass das Timing nicht mehr funktioniert.

Die Taktflanke ist
normalerweise die Referenz, daher kann man mit einer
Verzögerung des Taktsignals (Leitungsverlängerung) die
zulässigen Verzögerungen der anderen Signale erhöhen, falls
notwendig. Dabei muss natürlich beachtet werden, dass auch die
Antwortzeiten im erlaubten Rahmen bleiben.

Grundlage ist die Signalverzögerung der betreffenden
Leiterbahn, die mit geeigneter Software berechnet werden muss.

so ein programm hab ich leider nicht - jedoch hab ich in einem Buch eine Formel darüber gefunden, um den Kapazitätsbelag einer Leiterbahn ausrechnen zu können.

Gruß patrick

Hallo patrick,

ok - dann wurde mir das in einem anderen Forum total falsch
erklärt… da meinten die teilnehmer, dass es egal ist ob
Signale zu früh eintreffen, die bleiben dann halt am Eingang
z.B. vom SDRAM solange bis die anderen Signale auch
eingetroffen sind, stehen…

Unter gewissen Umständen stimmt das auch.

Ich weiß zwar
mit welcher Frequenz der SDRAM getaktet werden soll - 80MHz
und die Setup- und Hold-Zeiten kann ich aus dem Datenblatt
herauslesen für die einzelnen Signale, aber aus welchen Zahlen
ersieht man, um wieviel früher z.B. das CLK-Signal gegenüber
die Daten- u. Adressleitungen am SDRAM ankommen muss und
wieviel Zeitunterschied zwischen den einzelnen Datenleitungen
eines Datenbusses noch gewährleistet können, ohne dass das
Timing nicht mehr funktioniert.

Das steht alles im Datenblatt.
Das wichtige ist die Worst Case Berechnung.
Aus den Datenblatt ergeben sich Zeitfenster, welche sich direkt auf die Pins des ICs beziehen.
Du musst nun sicherstellen, dass die Signale unter allen Umständen innerhalb dieser Zeitfenster eintreffen.

z.B. musst du Sicherstellen, dass wenn du einen langsamen Adress-Treiber hast, dein RAM auch ein langsames ist und der Clock von einem ganz schnellen Treiber gesteuert wird, die Setup-Zeit nicht unterschritten wird.
Gleichzeitig darf aber die Hold-Time nicht unterschritten werden, wenn der Adress-Treiber schnell, der Clock-Treiber langsam und das RAM auch langsam ist.

Die Taktflanke ist
normalerweise die Referenz, daher kann man mit einer
Verzögerung des Taktsignals (Leitungsverlängerung) die
zulässigen Verzögerungen der anderen Signale erhöhen, falls
notwendig. Dabei muss natürlich beachtet werden, dass auch die
Antwortzeiten im erlaubten Rahmen bleiben.

Gleichzeitig musst du aber die Hold-Zeiten noch im Griff haben :wink:

Wenn du die Worst Case Berechnungen, ohne die Leiterbahnen, gemacht hast, weisst du wieviel „Luft“ du hast und kannst dann auch bestimmen wie kritisch die Verzögerungen durch die Leiterbahenen sind.

Dabei darfst du nicht vergessen, das die Kapatitäten sich je nach Eingang unterscheiden können und es auch eine Rolle spielt, wievile Pins an einer Leitung angeschlossen sind.

MfG Peter(TOO)

Hallo patrick,

ok - dann wurde mir das in einem anderen Forum total falsch
erklärt… da meinten die teilnehmer, dass es egal ist ob
Signale zu früh eintreffen, die bleiben dann halt am Eingang
z.B. vom SDRAM solange bis die anderen Signale auch
eingetroffen sind, stehen…

Unter gewissen Umständen stimmt das auch.

Das steht alles im Datenblatt.
Das wichtige ist die Worst Case Berechnung.
Aus den Datenblatt ergeben sich Zeitfenster, welche sich
direkt auf die Pins des ICs beziehen.
Du musst nun sicherstellen, dass die Signale unter allen
Umständen innerhalb dieser Zeitfenster eintreffen.

ja, die operating ac parameter. der Takt für den SDRAM ist 80MHz und die interne CLK für die Core vom µC läuft bei 180MHz. 80MHz = 12.5ns und auf FR4 hab ich ca. 14cm/ns Ausbreitungsgeschwindigkeit.

ist es dann so nach diesem pdf
http://www.samsung.com/global/business/semiconductor…

rechts als pdf anklickbar „timing diagramm“.

so, dass z.B: zum anlegen der Adresse nur die Input Setup Time Tss zur Verfügung steht? Und gleichzeitig auch über BA[0 1] die entsprechende Bank ausgewählt werden muss - gleichzeitig? Da seh ich jetzt z.B. keine Zeit die mir angibt wieviel Spiel (zeitlich gesehen) ich dabei habe. Und nach einer clk-time also 12.5ns später wird RAS aktiviert.

z.B. musst du Sicherstellen, dass wenn du einen langsamen
Adress-Treiber hast, dein RAM auch ein langsames ist und der
Clock von einem ganz schnellen Treiber gesteuert wird, die
Setup-Zeit nicht unterschritten wird.

also im Datenblatt des µC steht, dass ein angeschlossener SDRAM höchstens mit 80MHz Takt gefahren werden kann und der SDRAM selbst kann mit 133MHz betrieben werden.

Gleichzeitig darf aber die Hold-Time nicht unterschritten
werden, wenn der Adress-Treiber schnell, der Clock-Treiber
langsam und das RAM auch langsam ist.

das ist auch noch so eine frage. im Datenblatt wird die Hold-Time mit 0.8ns und die Setup-Time mit 1.5ns angegeben (bezogen auf Trise / Tfall = 1ns); ansonsten muss [(Tr + Tf)/2 +1]ns hinzuaddiert werden.

Wenn du die Worst Case Berechnungen, ohne die Leiterbahnen,
gemacht hast, weisst du wieviel „Luft“ du hast und kannst dann
auch bestimmen wie kritisch die Verzögerungen durch die
Leiterbahenen sind.

Dabei darfst du nicht vergessen, das die Kapatitäten sich je
nach Eingang unterscheiden können und es auch eine Rolle
spielt, wievile Pins an einer Leitung angeschlossen sind.

das ist mir als einziges bis jetzt klar… beim µC stets 10pF und beim SDRAM max. 3.8pF für die Addressen und max. 6.0pF für die Datenleitungen.

Gruß patrick

Hallo patrick,

ja, die operating ac parameter. der Takt für den SDRAM ist
80MHz und die interne CLK für die Core vom µC läuft bei
180MHz. 80MHz = 12.5ns und auf FR4 hab ich ca. 14cm/ns
Ausbreitungsgeschwindigkeit.

ist es dann so nach diesem pdf
http://www.samsung.com/global/business/semiconductor…

rechts als pdf anklickbar „timing diagramm“.

so, dass z.B: zum anlegen der Adresse nur die Input Setup Time
Tss zur Verfügung steht? Und gleichzeitig auch über BA[0 1]
die entsprechende Bank ausgewählt werden muss - gleichzeitig?
Da seh ich jetzt z.B. keine Zeit die mir angibt wieviel Spiel
(zeitlich gesehen) ich dabei habe. Und nach einer clk-time
also 12.5ns später wird RAS aktiviert.

Scheint ein recht einfaches Timing zu sein :wink:
Für alle Steuerleitungen gelten TSS und TSH.
Wobei beides minimal Zeiten sind.
In den grauen Bereichen können die Signale frei wechseln.

Im Prinzip kannst du das Timingdiagramm des RAMs massstabsgerecht aufzeichnen.
Das Selbe machst du dann mit dem Timing des µC und den Verzögerungen durch noch evtl. vorhandenen Logik-Bausteinen.
Wenn du beides übereinanderlegst, darf der µC nur innerhalb der grauen Bereiche seine Signale ändern.
Bei 7cm langen Leiterbahnen verschiebt sich dann das µC Diagramm um 0.5ns.

MfG Peter(TOO)

Scheint ein recht einfaches Timing zu sein :wink:
Für alle Steuerleitungen gelten TSS und
TSH.
Wobei beides minimal Zeiten sind.
In den grauen Bereichen können die Signale frei wechseln.

Im Prinzip kannst du das Timingdiagramm des RAMs
massstabsgerecht aufzeichnen.
Das Selbe machst du dann mit dem Timing des µC und den
Verzögerungen durch noch evtl. vorhandenen Logik-Bausteinen.

Bustreiber haben nur den Vorteil, die Kapazität, die die Trise Zeit verlängern, zu verkleinern, oder?

Wenn du beides übereinanderlegst, darf der µC nur innerhalb
der grauen Bereiche seine Signale ändern.
Bei 7cm langen Leiterbahnen verschiebt sich dann das µC
Diagramm um 0.5ns.

ok… danke für den tipp mit den grauen bereiche. Jetzt wird mir das ganze schön viel klarer.

D.h. bezüglich der Längen der Leiterbahnen dürfen sich diese fast gar nicht unterscheiden, weil es in dem pdf z.B. auch Bereiche gibt, in denen ein Takt lang die eine Speicherbank anliegt und im nächsten Takt bereits die nächste Speicherbank anliegen soll. -> bei einer Hold-Time von 0.8ns und einer Setup-Time von 1.5ns - wieviel spiel hätte ich dar noch? wenn die Leitungen z.B. 7cm lang sind --> 0.5ns Zeit auf der Leiterbahn. --> beide BAs müssen gleich lang sein und die nächste Adresse 0.5ns vor beginn der setup-time abschicken?

Gruß patrick

Hallo patrick,

Das Selbe machst du dann mit dem Timing des µC und den
Verzögerungen durch noch evtl. vorhandenen Logik-Bausteinen.

Bustreiber haben nur den Vorteil, die Kapazität, die die Trise
Zeit verlängern, zu verkleinern, oder?

NEIN.
Das Problem ist auch, dass dein µC nur eine beschränkte Anzahl Pins direkt treiben kann, da musst du auch die Ströme beachten. Wenn das nicht reicht brauchst du Verstärker, welche aber wieder ein zusätzliche Verzögerung bewirken.

Die Logik-Bausteine können auch normale Gatter sein, welche als zusätzliche Adress-Dekodierung benötigt werden.

Ich habe ja keine Ahnung was da alles an deinen µC angeschlossen werden soll ?!?!

Auch geht aus deinen Ausführungen nicht hervor ob du nur ein RAM benötigst oder z.B. eine Bank aus 32 Bausteinen ???

D.h. bezüglich der Längen der Leiterbahnen dürfen sich diese
fast gar nicht unterscheiden, weil es in dem pdf z.B. auch
Bereiche gibt, in denen ein Takt lang die eine Speicherbank
anliegt und im nächsten Takt bereits die nächste Speicherbank
anliegen soll. -> bei einer Hold-Time von 0.8ns und einer
Setup-Time von 1.5ns - wieviel spiel hätte ich dar noch?

Diese Frage lässt sich nur beantworten, wenn man auch das Timing des µC kennt.

wenn
die Leitungen z.B. 7cm lang sind --> 0.5ns Zeit auf der
Leiterbahn. --> beide BAs müssen gleich lang sein und die
nächste Adresse 0.5ns vor beginn der setup-time abschicken?

Also spätestens 0.5ns vorher !

MfG Peter(TOO)

Das Problem ist auch, dass dein µC nur eine beschränkte Anzahl
Pins direkt treiben kann, da musst du auch die Ströme
beachten. Wenn das nicht reicht brauchst du Verstärker, welche
aber wieder ein zusätzliche Verzögerung bewirken.

Wie berechnet man die zeitliche Verzögerung auf der Leiterbahn aus? Ein Haupteil kommt doch schon durch die Lastkapazitäten der angeschlossenen ICs zustande, oder? R = U/I - für U die Output lowlevel voltage und welcher Wert muss für I eingesetzt werden?

Die Logik-Bausteine können auch normale Gatter sein, welche
als zusätzliche Adress-Dekodierung benötigt werden.

Ich habe ja keine Ahnung was da alles an deinen µC
angeschlossen werden soll ?!?!

zwei SDRAM ICs sollen angeschlossen werdne, um den vollen Datenbus ausnutzen zu können sowie ein Flash-Speicher und ein kleines LCD-Display.

Gruß patrick

ok - dann wurde mir das in einem anderen Forum total falsch
erklärt… da meinten die teilnehmer, dass es egal ist ob
Signale zu früh eintreffen, die bleiben dann halt am Eingang
z.B. vom SDRAM solange bis die anderen Signale auch
eingetroffen sind, stehen…

Hallo Patrick,

nur um das auch noch klarzustellen: natürlich können Signale zu früh eintreffen, gerade dynamische Rams brauchen z.B. Mindestabstände von einem Zyklus zum nächsten. Wenn z.B. das RAM noch Daten ausgibt, die der Prozessor schon gelesen hat, und dieser schaltet zu früh seine eigenen Daten wieder auf den Bus, gibt es zahlreiche Kurzschlüsse der Daten mit hohen Kurzschlussströmen und EMV-Strahlungen und stark schwankender Stromversorgung, bis hin zur Zerstörung, wenn das zur Gewohnheit wird. Besonders Pins mit hoher Treiberleistung sind nicht dauerkurzschlussfest.

Du must nicht nur die Zyklen beachten, sondern auch die Übergänge von einem zum anderen!

Gruss Reinhard

Hallo patrick,

zwei SDRAM ICs sollen angeschlossen werdne, um den vollen
Datenbus ausnutzen zu können sowie ein Flash-Speicher und ein
kleines LCD-Display.

Toll, jetzt kenne ich deine Schaltung und kann alles berechnen ;-(

MfG Peter(TOO)

Toll, jetzt kenne ich deine Schaltung und kann alles berechnen
;-(

nur wenn du das wirklich willst?

wo ich grad noch nicht wirklich weiterkomme ist die berechnung der Verzögerungszeit auf dem Bus durch die angeschlossenen ICs.

Zeitverzögerung = Lastwiderstand * parasitäre Kapazität

Aus welchen Spannungswerten und Stromwerten aus einem Datenblatt muss man den Lastwiderstand berechnen?

z.B. für den Flash-IC
http://www.spansion.com/products/S29GL128P.html

und wie berechnet man die parasitäre Kapazität? Die 30pF Lastkapazität - bei welchem Lastwiderstand wird diese erreicht?

Gruß patrick

Hallo patrick,

Toll, jetzt kenne ich deine Schaltung und kann alles berechnen
;-(

nur wenn du das wirklich willst?

Nein, nein, ich will dir nicht die Arbeit wegnehmen, ich habe Eigene :wink:)

wo ich grad noch nicht wirklich weiterkomme ist die berechnung
der Verzögerungszeit auf dem Bus durch die angeschlossenen
ICs.

Zeitverzögerung = Lastwiderstand * parasitäre Kapazität

Aus welchen Spannungswerten und Stromwerten aus einem
Datenblatt muss man den Lastwiderstand berechnen?

Die passende Formel steht auch meist irgendwo im Datenblatt. Eine andere Quelle sind meist die Application Notes des Herstellers.
Auf deiner Samsungseite gibt es da rechts einen Link. Diesem folgend findet man z.B. folgendes:
http://www.samsung.com/global/business/semiconductor…

Beim Datenbus musst du aber aufpassen. Sender kann ja der µC, das RAM, ROM und was da sonst noch am Bus angeschlossen ist sein.

z.B. für den Flash-IC
http://www.spansion.com/products/S29GL128P.html

und wie berechnet man die parasitäre Kapazität? Die 30pF
Lastkapazität - bei welchem Lastwiderstand wird diese
erreicht?

Die steht für die IC-Pins im Datenblatt.
Bei deinem RAM ist das Abschnitt 10.0,
beim FLASH-ROM unter 11.7.6.

Wenn Sockel verwendet kommt da noch etwas hinzu, steht dann im Datenblatt zum IC-Sockel.

MfG Peter(TOO)

Hallo Peter

Zeitverzögerung = Lastwiderstand * parasitäre Kapazität

Aus welchen Spannungswerten und Stromwerten aus einem
Datenblatt muss man den Lastwiderstand berechnen?

Die passende Formel steht auch meist irgendwo im Datenblatt.
Eine andere Quelle sind meist die Application Notes des
Herstellers.
Auf deiner Samsungseite gibt es da rechts einen Link. Diesem
folgend findet man z.B. folgendes:
http://www.samsung.com/global/business/semiconductor…

ok wie auch im Datenblatt vom SDRAM drinnen steht, müssen entsprechende Zeiten wie Hold-Time etc. geändert werden, wenn die Rise-Time und Fall-Time größer als 1ns wird…

Output logic high voltage min. 2.4V
Output logic low voltage max. 0.4V

aber eine Rechnung hab ich jetzt da auch nicht gefunden wie das dann ausgerechnet wird. Das Diagramm Figure5 zeigt zwar die Auswirkung aber bei 1.8V. Ist mit 1.8V die Differnez zwischen output low voltage (max) und output high voltage (min) gemeint?

Gruß patrick

Hallo,

eine Frage hab ich noch - und zwar wie berechnet man bei einer vorgegebenen kurzen Leiterbahnlänge für die CLK-Leitung die passende Leitungslänge für die Busse?

Gruß
patrick

Hallo patrick,

eine Frage hab ich noch - und zwar wie berechnet man bei einer
vorgegebenen kurzen Leiterbahnlänge für die CLK-Leitung die
passende Leitungslänge für die Busse?

Irgendwo hast du doch die Laufzeit in der Leiterbahn berechnet.

Unterschiedlichen Leiterbahnlängen ergeben somit unterschiedliche Verzögerungen für die Signale. Du musst halt sehen, dass in jeden Fall die Worst Case Bedingungen eingehalten werden.

Grundsätzlich musst du von der gegebenen längsten Leiterbahn ausgehen. Bei den anderen Leiterbahnen kannst du dann immer noch Schleifen legen, damit sie die Selbe Länge haben.

Schau dir mal ein modernes PC-Mainbord an.

MfG Peter(TOO)