Hallo,
an einen EBI (Daten- und Adressbus des µC), hab ich zwei Flashs und zwei
SDRAMs installiert.
Die Load Kapazität vom µC ist für jeden Pin 10pF. die beiden
Flash-Speicher haben eine Kapazität von 30pF bzw. 10pF (für Input und
Output angegeben), die SDRAMs haben jeweils max. 6pF. --> ohne die
Leiterbahnkapazität zu berücksichtigen hängt also insgesamt eine
kapazität von 52pF an einem Pin des µC, der 10pF abkann.
Daher ist es wahrscheinlich von Nöten Bustreiber zu installieren, oder?
Um die zu große Kapazität zu bewerkstelligen. Wenn ich mir einen
Bustreiber anschaue, hat dieser aber auch schon alleine pro Pin 7.5pF,
so dass ich pro IC (Speicher) einen Bustreiber installieren muss?
Gleichzeitig benötige ich trotzdem 4 * 7.5pf = ca. 30pF die der µC nicht
aufweist.
Bsp. für einen Bustreiber für 3.3V
http://www.ortodoxism.ro/datasheets2/4/08gg3jyae2y0f8839asu1lu0h1py.pdf
oder hab ich mich bei der load Kapazität von 10pF beim AT91RM9200 vertan
(im Datenblatt hab ich dazu gar nichts passendes gefunden)
atmel.com/dyn/resources/prod_documents/doc1768.pdf
sonder nur in einer Application Note
http://atmel.com/dyn/resources/prod_documents/doc2620.pdf
Bernd
> Die Load Kapazität vom µC ist für jeden Pin 10pF.
Das ist nicht die Kapazität, die er treiben kann, sondern diejenige
Last, die der Pin mit in die Leitung einbringt. Eine maximale Last gibt
es meist nicht, nur werden mit steigender Lastkapazität die Flanken
langsamer und damit das Zeitverhalten insgesamt.
ah ok... d.h. zusammen mit dem jeweiligen Widerstand der ICs gibt das
ein schönes RC-Glied und damit langsamere Rise-Times auf den
leitungen...
Nimmt man für den R den Widerstand bei High-State von jedem IC in
Betracht?
am langsamsten geht es ja dann auf den Datenleitungen D0-D7 und den
Adressleitungen zu, da diese von jedem IC benötigt werden, sowie der
OE-Leitung.
Bernd
also wenn ich jetzt die R_out (high state) ausrechne komm ich auf 634
Ohm, bei 56pF ergibt das eine Rise Time von ca. 78ns und somit nur noch
einer max. Frequenz von 12.8MHz auf dem Daten und Addressbus.
Oder hab ich für R falsche Werte verwendet? R = max. VCC / max.
Output-Strom
Bernd
Übrigens: Warum nicht einfach mal das Datasheet lesen? Immerhin war
Atmel sogar so freundlich, das Timing in Abhängigkeit von der
Lastkapazität in grosser Detailfreude darzulegen.
>Deine Rechung bestimmt dem Mindestwert eines ohmschen Lastwiderstandes
aber mein Widerstand ist doch viel größer als 50 Ohm beim µC? Wie kann
das ein Mindestwert sein? 3.6V / 8mA = 450 Ohm?
Ich dachte man geht bei dieser Rechnung vom worse-case aus.
Bernd
Na dann erklär nochmal, woher du die 634 kriegst, ich hatte diesen Teil
nicht nachgerechnet weil so oder so falsch.
Ich nehme an, du beziehst dich auf das Absolute Maximum Rating vom Pin,
und dort auf den DC Output Current. Nur hast du dabei grosszügig das
"DC" übersehen. DC heisst hier Dauerstrom aka ohmsche Last, nicht
Impulsstrom aka kapazitive Last. Mit deiner Logik wäre der Pin schon von
seiner eigenen Pinkapazität überfordert ;-).
Und was bei der Rechnung mit dem zulässigen(!!!) Strom rauskommt ist
nicht der Innenwiderstand. Sondern eben der Strom der maximal dauerhaft
fliessen darf, also der minimal zulässige Lastwiderstand.
Zur Illustration sei das Datasheet vom ATMega32 empfohlen, weil Atmel da
freundlicherweise die Lastcharakteristik der eingebauten Pintreiber
grafisch dargestellt hat (i/o pin sink/source current vs voltage). Was
da zu sehen ist stimmt zwar nicht dem Wert nach aber doch dem Prinzip
nach auch beim AT91RM9200.
>Besser: Voh = Vdd-0,4V bei 8mA. Also 0,4V/8mA = 50 Ohm.
da hab ich nur nicht Vdd-0.4V sondern für den High-State max. VCC
genommen. Output High-Level Voltage und Ioh = 8mA
und die Timings im Datenblatt geben an für die Datenleitungen D0-D15
SDRAMC19 Rise Time 1.3ns
SDRAMC20 Fall Time 0.03ns --> oder wird das anders interpretiert?
und pro pF Load Capacitance die dranhängt verzögert sich das ganze um
0.044 ns/pF bei der Rise Time und ebenfalls bei der Fall time.
--> bei einer Gesamtkapazität von 56pF ergibt sich eine Verzögerungszeit
(nach dieser Rechnung) von 2.46ns.
Der SDRAM kann max. bei 80MHz arbeiten, wenn der Controller auf 180MHz
läuft. bei 80MHz ergibt sich eine Zeit von 12.5ns und da machen die
2.46ns nichts aus --> man braucht keinerlei Bustreiber etc. und kann es
ohne bedenken anschließen?
Die Verzögerung muss ich dann nur beim Timing (Setup hold time)
berücksichtigen bzw. hinzufügen, oder?
Bernd
> SDRAMC19 Rise Time 1.3ns> SDRAMC20 Fall Time 0.03ns
Nö. Rise/fall times und setup/hold times sind durchaus verschiedene
Dinge.
> und pro pF Load Capacitance die dranhängt verzögert sich das ganze um> 0.044 ns/pF bei der Rise Time und ebenfalls bei der Fall time.
Wobei die Verzögerung auf der SDCK Leitung dem engegenwirkt.
Wenn du anfängst, mit einstelligen Nanosekunden rumzurechnen, solltest
du bedenken das du mit dem Äquivalent von ein paarhundert MHz rechnest
und das Platinenlayout dementsprechend auslegen musst.
Um es deutlicher zu sagen: Du operierst hier in Bereichen weit jenseits
deines (und meines) Kenntnisniveaus und wenn das am Ende funktionieren
sollte, dann nicht weil du richtig gerechnet sondern weil du Glück
gehabt hast.
Ein ARM9 mit SDRAM ist nicht wirklich der beste Einstieg in ein solches
Thema.
>Zur Illustration sei das Datasheet vom ATMega32 empfohlen, weil Atmel da>freundlicherweise die Lastcharakteristik der eingebauten Pintreiber>grafisch dargestellt hat (i/o pin sink/source current vs voltage). Was>da zu sehen ist stimmt zwar nicht dem Wert nach aber doch dem Prinzip>nach auch beim AT91RM9200.
d.h. der lastwiderstand geht gegen unendlich wenn Voh gegen VCC geht,
weil der strom gegen null mA geht. mehr als trockene theorie kann ich
hier aber nicht rauslesen.
> d.h. der lastwiderstand geht gegen unendlich wenn Voh gegen VCC geht,
Wenn du ihm umdrehst ergibt der Satz sogar Sinn: Mit steigendem
Lastwiderstand geht Voh gegen Vdd. Nur hat das rein garnichts mit dem
Innenwiderstand zu tun. Der steckt nämlich in der Steigung der Kurve
drin.
> wieso wirkt die SDCK-Leitung dieser Verzögerung entgegen?
Sorry, ich war geistig beim Schreibzyklus. Da ist es so, beim Lesezyklus
ist es umgekehrt, da addiert sich das (weshalb der Pin für SDCK dicker
ist, d.h. der Innenwiderstand geringer).
>Wenn du anfängst, mit einstelligen Nanosekunden rumzurechnen, solltest>du bedenken das du mit dem Äquivalent von ein paarhundert MHz rechnest>und das Platinenlayout dementsprechend auslegen musst.
wenn er mit 80MHz Takt den SDRAM ansteuern möchte - 12.5ns - sind die
knapp 2.5ns zusätzliche Verzögerung kein Problem , weil die Setup und
Hold-Zeiten sich im Rahmen von ca.5ns spielt und somit noch genügend
zeit auf der strecke für 20cm leiterbahn oder ähnlichem bleibt.