Hallo,
nun hab ich schon in einigen beiträgen gelesen, dass beim Datenbus
Addressbus etc. man sich keine gedanken machen muss ob die einzelnen
Busleitungen 2cm oder 3cm länger sind als manch andere...
aber wieso geht das? Innerhalb welcher Zeit müssen die Bits ankommen -
innerhalb der Setup-Time oder Hold-Time (abhängig von dem ob es sich um
einen Eingang oder Ausgang handelt) - ja. Aber gibt es einen Mindestwert
für die Setup-Zeiten oder Hold-Zeiten (meistens ja sogar 0ns)-> da würde
man ja gar kein oder sehr kleines spiel haben...
bei einer FR4 Leiterbahn bewegen sich die einzelnen bits ja mit 14cm/ns
-> bei 14cm unterschied zwischen den einzelnen Datenleitungen wäre der
zeitliche unterschied 1ns...
Natürlich ist das alles ziemlich untypisch, dass das passieren wird,
weil man natürlich unterhalb von 10cm bleibt... aber trotzdem innerhalb
welcher Zeit müssen die einzelnen Bits ankommen? Innerhalb der
Setup-Time?
Matthias Krämer
Die Frage ist doch vor allem auch, wie schnell Dein Bus ist.
Bei 'nem AVR mit 16 MHz hat man also 62,5 ns pro Takt, das muss man
erstmal
auf den Bus bekommen, eher wird's ein vielfaches davon.
Da kümmert es gerade mal garnicht wenn die Signale mit 1 ns Versatz
ankommen.
Und sowas wie einen Bus gibt es ohnehin immer weniger, jedenfalls stirbt
parallel ohnehin und die µC's haben mehr und mehr integriert.
ich meine natürlich eher SDRAMs, die dann mit 133MHz betrieben werden
--> 7.5ns pro Takt --> und dann ist 1ns knapp 14% der 7.5ns....
7.5ns * 14cm/ns = 105cm können mit 7.5ns durchlaufen werden.
Matthias Krämer
Wird das jetzt zur Epidemie? Jahrelang kümmert's keine Sau und die Leute
schliessen ihre SRAMs an den AVRs an wie sie wollen. Kümmern sich auch
nicht drum, dass Atmel jenseits von 8MHz von HCs abrät, weil's ja
trotzdem funktioniert. Ist wohl auch ok so, weil man einem '573 bei
miesem Layout und ohne VCC/GND-Planes möglicherweise mit 74HC besser
dran ist als mit 74AC/74AHC.
Und nun auf einmal ist irgendein Virus ausgebrochen und jeder dritte
Thread macht sich ins Hemd wegen einer halben Nanosekunde für die paar
cm Leitung zwischen SRAM und AVR. WAS IST HIER LOS? Seit ihr zum ersten
Mal den Begriffen Setup/Hold Time begegnet?
Setup/hold times am Beispiel für einen Eingang:
5nsec setup time: Eingang muss spätestens 5nsec vor T anliegen.
20nsec hold time: Eingang darf sich frühestens 20nsec nach T ändern.
Das ist alles Leute. Keine Zauberei. Wenn's 100nsec vorher und 200nsec
nachher sind stört das auch nicht.
> 7.5ns * 14cm/ns = 105cm können mit 7.5ns durchlaufen werden.
Und wenn du dann mal einen guten Oszi dranhältst, wirst du feststellen,
dass diese rechnerische Laufzeit das geringste deiner Probleme ist.
>Bei 'nem AVR mit 16 MHz hat man also 62,5 ns pro Takt, das muss man>erstmal>auf den Bus bekommen, eher wird's ein vielfaches davon.
heißt dass, das der AVR z.B. mit einer viel höheren Frequenz läuft als
der externe Bus EBI und dadurch man ein paar Nanosekunden sozusagen
geschenkt bekommt, die dann die Differenz zwischen den einzelnen
ankommenden Bits ausmacht..
also bei 180MHz CPU Takt und 133 MHz SDRAM (wie oben genannt) --> 5.55ns
pro CPU-Takt und 7.5ns pro Bustakt --> man braucht mindestens zwei
CPU-Zyklen --> 11.1ns
diese 11.1ns > tclk-to-outut + tsetup + thold + tleiterbahn --> wenn das
stimmt ist alles im grünen bereich?
Matthias
>5nsec setup time: Eingang muss spätestens 5nsec vor T anliegen.>20nsec hold time: Eingang darf sich frühestens 20nsec nach T ändern.
die werte bewegen sich ja eher in hold time = 0ns und setup time 2-5ns;
aber im prinzip ist sowieso zu achten, dass die leitungslänge kurz ist,
weil ansonsten kapazitätsbelag und vor allem auch die induktivität
steigt und somit das signal schlechter wird.
> die werte bewegen sich ja eher in hold time = 0ns und setup time 2-5ns;
War ein Beispiel. Die exakten Zahlen sind für's Verständnis unwichtig.
Man kann dann auch mal einer setup time von -3nsec (minus 3) begegnen,
ohne dass es einen aus der Kurve schmeisst.
> aber im prinzip ist sowieso zu achten, dass die leitungslänge kurz ist,> weil ansonsten kapazitätsbelag und vor allem auch die induktivität> steigt und somit das signal schlechter wird.
Jau. Aber zwischen AVR und RAM sind zig Leitungen. Wer Controller, Latch
und RAM an drei entgegengesetzte Enden seiner Platine plaziert, kriegt
doch schon bei Layouten den Vogel. Das regelt sich also gewissermassen
von selber.
hallo Andreas,
für mich ist das noch etwas unverständlich, warum man sich keine sorgen
machen muss obwohl die hold-time 0ns entspricht... bei der setup-time
von z.B. 4ns hab ich es jetzt so verstandenn, dass innerhalb dieser 4ns
das Bit ankommen muss...
kann man dass mit den bieden Frequenzen von µC (die um einiges höher
ist) und dem EBI erklären, so dass mind. zwei CPU-Takte von nöten sind,
um die daten zu empfangen und man so z.B. 12ns zeit hat?
Ingo
> bei der setup-time von z.B. 4ns hab ich es jetzt so verstandenn,> dass innerhalb dieser 4ns das Bit ankommen muss...
So kann Panik aufkommen. Nö. Es heisst, dass das Bit MINDESTENS 4ns
vorher (vor was?) ankommen muss. Darf aber auch schon 2 Stunden vorher
da sein. Und darf auch noch 3 Tage (>=0ns) danach anliegen.
Andersrum ausgedrückt: Es darf sich innerhalb der Zeit von 4ns vorher
und 0ns nachher nicht ändern. Womit es also das Gegenteil von deiner
These ausdrückt. Nun beruhigt?
>vorher (vor was?) ankommen muss.
da ist genau mein denkfehler.. welchen zeitbezug haben den die 4ns setup
time? ist die für alle datenbusleitungen gleich (also gleich lang und
zur gleichen zeit beginnend?)
wenn es einen zeitpunkt gibt, ab dem diese 4ns für alle inputs anfängt
und ein bit erst 6ns später ankommt ist es doch zu spät, oder?
Ingo
Vielleicht klappt's so: Die setup time entspricht den 1-2 Stunden, die
du vor dem Abflug nach Mallorca am Airport sein solltest und wenn du zu
spät kommst (setup time violation) oder vor dem tatsächlichen Abflug
wieder ausrückst (hold time violation) fliegen sie halt ohne dich.
EDIT: Oder, wenn nicht eingehalten, sie werden sauer und verfrachten
dich als Terrorist (Behinderung des Verkehrs) nach Gitmo. Um den
Vergleich etwas passender zu gestalten.
> wenn es einen zeitpunkt gibt, ab dem diese 4ns für alle inputs anfängt> und ein bit erst 6ns später ankommt ist es doch zu spät, oder?
Wenn man auf den Kopf steht, sieht die Welt irgendwie verkehrt aus. Und
so geht es dir. Die 4ns fangen nicht irgendwann an, sondern enden nur
irgendwann. Nämlich mit dem Referenzzeitpunkt, was immer das ist - NB:
ich würde mich da gern etwas weniger abstrakt ausdrücken, weiss aber
immer noch nicht um welche Signale es eigentlich geht.
Da will ich auch mal ne frage zu stellen...
Timings im Datenblatt:
http://www.atmel.com/dyn/resources/prod_documents/doc6221.pdf
Seite 763 ..
Also die Setup Zeit sagt wann vor Clock Fallend die Daten da sein
müssen, die Hold Zeit wie lange die Daten nach Clock Fallend noch
anliegen müssen.
In dem Fall also 0.2ns vor Clock da und bis 1.1ns nach Clock.. das heißt
ja bei 100MHz Takt also 10ns sind 8.7ns Zeit die Daten an den Controller
anzulegen, also knapp 130cm darf quasi die längste Leitung sein (?) was
ja schon relativ unrealistisch ist..
Die Out Valid Time sagt wann der Controller die Daten vor Clock anlegt
bzw. nach Clock noch anliegen hat ?
THX
> In dem Fall also 0.2ns vor Clock da und bis 1.1ns nach Clock.. das heißt> ja bei 100MHz Takt also 10ns sind 8.7ns Zeit die Daten an den Controller> anzulegen, also knapp 130cm darf quasi die längste Leitung sein (?) was> ja schon relativ unrealistisch ist..
Das hast du in wirklich jeder Hinsicht falsch verstanden. Aber noch
deutlicher als vorhin kann ich mich nicht mehr ausdrücken.
>Vielleicht klappt's so: Die setup time entspricht den 1-2 Stunden, die>du vor dem Abflug nach Mallorca am Airport sein solltest und wenn du zu>spät kommst (setup time violation) oder vor dem tatsächlichen Abflug>wieder ausrückst (hold time violation) fliegen sie halt ohne dich.
das hab ich verstanden - aber der fall, dass ich zu spät am flughafen
bin (die daten nicht innerhalb der setup time ankommen) darf ja nicht
auftreten. Und einen direkten Zeitbezug gibt es somit auch, weil das
flugzeug nur einmal startet.
ok die daten dürfen früher ankommen als die 4ns --> die setup time
könnte biliebig lange sein. Jedoch werden die daten nicht beliebig früh
auf die reise geschickt vom µC z.B. an einen speicher. --> ich muss
wissen wie lang die längste strecke eines bits ist und diese zeit auf
der längsten leiterbahn auf alle bits umrechnen und diese somit
entsprechend früh losschicken - mnanche kommen dann 6ns vorher an und
das letzte 4ns (was der setup-time im datenblatt entspricht) an - und
alles ist gut...
beim rückflug muss ich wider die längste leitung in der berechnung
berücksichtigen...
so?
> Also die Setup Zeit sagt wann vor Clock Fallend die Daten da sein> müssen, die Hold Zeit wie lange die Daten nach Clock Fallend noch> anliegen müssen.
Wobei dein "Clock" hier die NRD Leitung ist, und sich das auf dessen
steigende Flanke bezieht. So du SMC19/20 meinst.
> ok die daten dürfen früher ankommen als die 4ns --> die setup time> könnte biliebig lange sein. Jedoch werden die daten nicht beliebig früh> auf die reise geschickt vom µC z.B. an einen speicher.
Hättest du die Güte, nicht mittem im Satz das Schlachtfeld zu wechseln.
Eben noch Lesezyklus, jetzt auf einmal Schreibzyklus. Bleib mal bei
einem und verstehe den, dann nimm den nächsten.
Kleiner gut gemeinter Tip: Wenn du mit diesem Kenntnisstand ein 133MHz
SDRAM an einen ARM9 kleben willst, dann wird das höchstwahrscheinlich
nicht aufgrund deiner Rechnung funktionieren, sondern allenfalls
deshalb, weil Atmel diese Rechnung wahrscheinlich schon gemacht und das
Verhalten von SDRAMs im Timing des Controllers berücksichtigt hat.
Und wenn du davon mehrere dranhängen willst: Vergiss es. Sei froh wenn's
mit einem funktioniert. Weiteres zu diesem Thema setzt Kenntnisse
voraus, für die man in einem E-Technik-Studium längere Zeit büffeln darf
(behaupte ich als dummer Informatiker jetzt mal - und würde davon selber
die Finger lassen). Weil's mit Zeiten allein nicht getan ist.
also so wie ich das aus deiner erklärung herausgehört habe, ist es doch
so, dass jedes Bit die im Datenblatt angegebene Setup-Time möglichst
auch einhalten sollte. Daher fängt man mit dem DAtensenden so früh an,
dass das Bit mit der längsten Leitung früh genug ankommt, damit die
Setup-Time eingehalten werden kann. Dass die anderen Bits schon viel
länger am SDRAM anliegen ist völlig egal...
so hab ich das verstanden...
> auch einhalten sollte. Daher fängt man mit dem DAtensenden so früh an,> dass das Bit mit der längsten Leitung früh genug ankommt, damit die> Setup-Time eingehalten werden kann. Dass die anderen Bits schon viel> länger am SDRAM anliegen ist völlig egal...
Also bei welchen Zyklus sind wir grad? Lesezyklus oder Schreibzyklus?
Konkret bei welchen Signalen und welchen Zeiten im Datasheet (Name!)?
setup-time ist doch nur bei einem schreibzyklus vorhanden? also wenn die
daten vom µC in den SDRAM geschrieben werden. Ein Datensheet hab ich
nicht...
aber wenn die setup-time 4ns ist, die die daten am sdram anliegen
müssen, müssen die daten spätestens beim µC abgeschickt werden, so dass
gilt t = tsetup + tleiterbahn(längste) --> so dass manche Bits (auf
kürzeren Bahnen) länger als die 4ns setup time warten müssen und das Bit
welches die längste strcke zurücklegen muss genau die 4ns setup time hat
bevor es in den sdram geschrieben wird.
Ingo
> setup-time ist doch nur bei einem schreibzyklus vorhanden?
Nein. Beim Lesezyklus gibt's das auch, diesmal seitens des Controllers.
> aber wenn die setup-time 4ns ist, die die daten am sdram anliegen> müssen, müssen die daten spätestens beim µC abgeschickt werden, so dass> gilt t = tsetup + tleiterbahn(längste)
Mal so herum ausgedrückt: Wenn die Laufzeit auf der Leitung gross genug
ist, um dir die Suppe zu versalzen, dann ist diese einfache Rechnung
schon falsch, weil Aspekte von Hochfrequenztechnik und Platinenlayout
mit einbezogen werden müssen. Also mach die Leitung kurz und vergiss die
Laufzeit. Oder studier E-Technik, mit ein paar Postings lässt sich das
nicht ersetzen.
d.h. die buslängen sind nur ab bestimmte frequenzen bezüglich
high-speed-design-rules kürzer zu halten? weil die rise time steigt etc.
- ansonsten müsste terminiert werden
ja sowie ich das verstanden habe, spielen bei höheren frequenzen nur
noch die high-speed high-frequency effekte eine rolle, warum die max.
buslänge kürzer sein muss...
daher muss auch bereits die clk-leitung kürzer ausgeführt werden als die
datenleitungen.
Ingo
> d.h. die buslängen sind nur ab bestimmte frequenzen bezüglich> high-speed-design-rules kürzer zu halten?
Wobei dann unter Frequenz nicht (nur) die Datenrate zu verstehen ist,
sondern auch die Flankensteilheit. Je steiler die Flanke, desto kürzer
die ohne zusätzliche Massnahmen vertretbare Leitungslänge.