Hallo allerseits.
Ich habe eine FPGA-Platine WaveShare CoreEP4CE10
(http://www.amazon.com/WaveShare-CoreEP4CE10-EP4CE10F17C8N-Development-Interface/dp/B00KM70BCI).
Das Board funktioniert eigentlich ganz gut, da läuft gerade ein
einfaches (VHDL-)Programm.
Nun wollte ich wissen wie die Laufzeitverzögerungen bei mir sind und bin
ein bisschen durcheinander. Der Quartus TimeQuest sagt mir: "Propagation
delays für Schaltsignale (rising-to-rising oder falling-to-falling
Flanken) um 8 ns".
Wenn ich es aber mit einem Oszi (Genauigkeit max. +-2ns) messe, bekomme
ich die Verzögerung 29 ns.
Meine Fragen an Kenner:
1. Warum so ein großer Unterschied?
2. Kann man überhaupt die Zahlen aus dem TimeQuest ernsthaft wahrnehmen?
Die entstehen doch nicht aus den Messungen, sondern nur analytisch,
oder?
Sorry wenn die Fragen naiv klingen, habe wenig Erfahrung.
Danke im Voraus, wenn jemand da weiterhelfen kann.
Jetzt hast du schon so ein schönes Oszi mit großem Schirm, und stellst
es so ein, dass man die Flanken mit der Lupe suchen muss...
Guck mal, ob es Optimierungseinstellungen gibt, die evtl. auf "möglichst
wenig Gatter" statt "Speed" eingestellt sind.
Und wie sieht denn dein VHDL Programm aus?
Du wirst vermutlich ein Signal A mit einer Clock CLK sampeln, und an
Ausgang B ausgeben.
Dazwischen liegt natürlich bis zu 1 Clock-Zyklus.
Joe F. schrieb:> Jetzt hast du schon so ein schönes Oszi mit großem Schirm,
;) nur gelegentlich, durch Gutmutigkeit des Besitzers.
> und stellst> es so ein, dass man die Flanken mit der Lupe suchen muss...
Auf dem Bildschirm sah's gut aus :). Damals, wo ich den Zugang zu dem
Oszi hatte.
> Guck mal, ob es Optimierungseinstellungen gibt, die evtl. auf "möglichst> wenig Gatter" statt "Speed" eingestellt sind.
naja, es ging nach meinem Verständnis um etwas anderes.
meine eigentliche Frage ist "warum trotz dem, dass mir das Synthesetool
8ns Laufzeitverzögerung zeigt, ist es bei Oszi 29ns". Mich wundert nicht
die Größe des Versatzes, sondern diese Unterschiede.
und natürlich die zweite Frage: "kann man den Werten aus dem TimeQuest
vertrauen?".
> Und wie sieht denn dein VHDL Programm aus?> Du wirst vermutlich ein Signal A mit einer Clock CLK sampeln, und an> Ausgang B ausgeben.
eigentlich ist es ein ungetaktetes Tri-State-Buffer:
a_aus <= a_in when b_in = '1' else 'z';
Auf Deinem Oszibild fehlt mir irgendwie klar und deutlich die Zeitangabe
(typisch Tektronix, könnte ich jetzt sagen). Außerdem schaut es so aus,
als ob die Anstiegszeit gemessen wird. Versuch die Aufnahme nochmal ohne
Zoom, dafür mit richtig guter Zeitauflösung, so dass beide Flanken
gerade noch so auf den Schirm passen. Die 'Messungen' werden fast immer
auf den Bildschirmdaten gerechnet. Wenn da die Zeitauflösung schlecht
ist, weil gezoomt (=interpoliert) wird, kann die Messung nicht
überzeugen.
IL schrieb:> meine eigentliche Frage ist "warum trotz dem, dass mir das Synthesetool> 8ns Laufzeitverzögerung zeigt, ist es bei Oszi 29ns". Mich wundert nicht> die Größe des Versatzes, sondern diese Unterschiede.
Berücksichtigt Dein Tool die Verzögerung der Eingangs- und
Ausgangsstufen?
Bei schnellen Bausteinen liegt die in der Größenordnung von 1 bis 2 ns,
bei langsameren eher in Richtung 8 ns.
Welche Last hast Du am Ausgang angeschlossen?
Duke
Duke Scarring schrieb:> Außerdem schaut es so aus, als ob die Anstiegszeit gemessen wird.
Naja, ich gehe davon aus, dass der TO den Marker je auf den Beginn des
Anstiegs der beiden Signale gesetzt hat, und so auf die 29ns kommt.
Dummerweise pass diese Zeit auch sehr gut zur Signalanstiegszeit (sowohl
Eingang als auch Ausgang).
Ich würde erwarten, dass auch genau hier die Diskrepanz zu suchen ist.
Ich denke es ist nicht wirklich zielführend, so lahme Flanken zur
Zeitmessung beizuziehen.
Der Propagation-Delay wird normalerweise als Zeit von X% des
Eingangspegels bis Y% des Ausgangspegels angegeben, oft auch unter der
Bedingung einer maximalen Anstiegszeit und/oder maximalen Last.
Du solltest diese Parameter in Erfahrung bringen, und mit Deinem Setup
vergleichen.
P. K. schrieb:> Ich denke es ist nicht wirklich zielführend, so lahme Flanken zur> Zeitmessung beizuziehen.
So ist es. Der Eingang schaltet ja nicht um, sobald man am Oszi den
Start der Flanke erkennt, sondern erst, wenn das Signal einen High-Pegel
annimmt. Und das ist irgendwo in der Mitte der Flanke (also rund 15ns
hinter der Position des ersten Cursors).
@IL: vielleicht kommen die schlappen Flanken ja erst durch deine Messung
zustande: an Kanal 2 (Ausgang) hast du z.B. ein Bandwidth Limit
eingestellt, die gemessene Flanke wird dadurch schlapper dargestellt,
als sie tatsächlich ist. Außerdem arbeitest du mit 250MS/s, du hast also
nur einen Messpunkt alle 4ns. Da wird es schwer, eine 8ns Verzögerung
sinnvoll aufzulösen.
Auch an Kanal 1 (Eingang) kann die Messung die Flanke tatsächlich
verzögern (nicht nur deren Darstellung auf dem Oszi). Was für einen
Tastkopf hast du zur Messung benutzt, mit wie viel pF belastest du das
Signal bei der Messung?
Duke Scarring schrieb:> Auf Deinem Oszibild fehlt mir irgendwie klar und deutlich die Zeitangabe> (typisch Tektronix, könnte ich jetzt sagen).
die eigentliche Messung (oben) hat 4µs/DIV, der Zoom (unten) 200ns/DIV
Sorry, ich war gestern nicht da, habe gerade auch begrenzte Möglichkeit
hier zu sein.
Ich hatte nicht erwartet, dass jemand noch antwortet. Danke erst mal an
alle, die diese Erwartung widerlegt haben.
IL schrieb:> Wenn ich es aber mit einem Oszi (Genauigkeit max. +-2ns) messe, bekomme> ich die Verzögerung 29 ns.
ja, 4ns, nicht 2 ist die Auflösung, mein Fehler.
Duke Scarring schrieb:> Berücksichtigt Dein Tool die Verzögerung der Eingangs- und> Ausgangsstufen?
Wenn ich die Beschreibung vom altera's TimeQuest richtig verstanden
habe, dann ja. Aber ich kann mich verwirren.
Duke Scarring schrieb:> Bei schnellen Bausteinen liegt die in der Größenordnung von 1 bis 2 ns,> bei langsameren eher in Richtung 8 ns.
Altera's Cyclone IV ist der Stein. Anscheinend gehört er zu langsamen...
Duke Scarring schrieb:> Welche Last hast Du am Ausgang angeschlossen?
Standartwert für Ausgangswiderstand (wenn Du das meinst) ist 50 Ohm, ich
habe ihn nicht geändert. sonst gab es keinen Last:
der Ausgang des FPGA's -> eine Kabelbrücke -> eingelöteter Stecker ->
Oszikopf
P. K. schrieb:> Naja, ich gehe davon aus, dass der TO den Marker je auf den Beginn des> Anstiegs der beiden Signale gesetzt hat, und so auf die 29ns kommt.
Genau so ist es
P. K. schrieb:> ... unter der Bedingung einer maximalen Anstiegszeit und/oder maximalen> Last. Du solltest diese Parameter in Erfahrung bringen, und mit Deinem> Setup vergleichen.
Danke Dir für den Tipp!
Achim S. schrieb:> Der Eingang schaltet ja nicht um, sobald man am Oszi den> Start der Flanke erkennt, sondern erst, wenn das Signal einen High-Pegel> annimmt. Und das ist irgendwo in der Mitte der Flanke (also rund 15ns> hinter der Position des ersten Cursors).
oh. OH. Ja, wenn Du es schreibst, ist es so offensichtlich, dass ich
mich nur frage: wie konnte ich nicht daran gedacht zu haben? Danke Dir
für die Erklärung.
Achim S. schrieb:> an Kanal 2 (Ausgang) hast du z.B. ein Bandwidth Limit> eingestellt
Nicht das ich wüsste. Woran siehst Du das? Ich sehe für Kanal 1 die
Bandbreite "Voll" und kann mich nicht daran erinnern, dass ich es bei
Kanal 2 anders gemacht habe. (wie gesagt: der Oszi steht nicht bei mir
in der Nähe, ich habe dort nur gelegentlich den Zugang).
Achim S. schrieb:> Was für einen> Tastkopf hast du zur Messung benutzt
TEK 6139 A. 1:10, 8.0pF, bis 500MHz, 10 MOhm, 300V.
> mit wie viel pF belastest du das Signal bei der Messung?
ich riskiere jetzt als ganz Beginner auszusehen (bin ich auch), aber ich
habe keine zusätzlichen Kapazitäten verwendet. Oder habe ich die Frage
falsch verstanden?
IL schrieb:> Nicht das ich wüsste. Woran siehst Du das? Ich sehe für Kanal 1 die> Bandbreite "Voll" und kann mich nicht daran erinnern, dass ich es bei> Kanal 2 anders gemacht habe.
Das sieht man in der Anzeige der Einstellungen zu Kanal 2 unterhalb des
Zoom-Fensters. Neben den "2 5.00V" steht ein "BW", das meiner Meinung
nach anzeigt, dass die Bandwidth limitiert wurde.
IL schrieb:> aber ich> habe keine zusätzlichen Kapazitäten verwendet. Oder habe ich die Frage> falsch verstanden?
es geht tatsächlich nicht um zustäzliche Kapazitäten, sondern um die
kapazitive Belastung, die sich durch Tastkopf und Oszi ergibt (du hast
ja wahrscheinlich an der Pfostenleiste gemessen, und das Signal "endet
dort", oder?).
Es gibt Leute, die benutzen einen Tastkopf ohne Teiler und belasten das
Signal dadurch mit rund 100pF, was eine ziemliche Bremse wäre. Dein
Tek6139A ist mit seinen 8pF schon gar nicht so schlecht. Ich verstehe
nicht wirklich, wieso das Augangssignal dann so langsam ansteigt (außer
das BW-Limit von Kanal 2 stünde auf 10MHz, dann würde es halbwegs
passen).
Tipp: Setz den zweiten Tastkopf auf den ersten und schau ob beide Kanäle
das gleiche Messen. Dann gibt es 3 Möglichkeiten:
1. du erkennst ein Zeitverzögerung, dann liegt es an den Tastköpfen
2. Signal verzerrt sich -> Tastköpfe haben starken Einfluss
3. alles gleich = alles ok am Messsystem :)
Achim S. schrieb:> Das sieht man in der Anzeige der Einstellungen zu Kanal 2 unterhalb des> Zoom-Fensters. Neben den "2 5.00V" steht ein "BW", das meiner Meinung> nach anzeigt, dass die Bandwidth limitiert wurde.
Wahrscheinlich hat es mit der 5V-Begrenzung zu tun? Für 3,3V -Signale
habe ich 5V Obergrenze gestellt. Aber ich bin mir nicht sicher, nur als
eine Idee.
Achim S. schrieb:> du hast> ja wahrscheinlich an der Pfostenleiste gemessen, und das Signal "endet> dort", oder?
Ja, ein Kopf war am Sender (verzweigt durch eine Steckplatine), der
andere war praktisch direkt mit dem FPGA-Ausgang verbunden.
Achim S. schrieb:> Ich verstehe> nicht wirklich, wieso das Augangssignal dann so langsam ansteigt (außer> das BW-Limit von Kanal 2 stünde auf 10MHz, dann würde es halbwegs> passen).
Ehrlich gesagt - ich habe erst jetzt den Ausmaß des Unterschieds
gemerkt. Jetzt will ich es auch wissen. :) Es kann natürlich sein, dass
ich bei den Einstellungen der Ausgangsstufe irgendwas verwechselt habe.
Ich schaue das nach. Sollte irgendwas kapazitives sein. Und an dem Oszi
sollte ich auch die Einstellungen prüfen, wenn ich wieder dort bin.
Klakx schrieb:> Tipp: Setz den zweiten Tastkopf auf den ersten und schau ob beide Kanäle> das gleiche Messen. Dann gibt es 3 Möglichkeiten:>> 1. du erkennst ein Zeitverzögerung, dann liegt es an den Tastköpfen> 2. Signal verzerrt sich -> Tastköpfe haben starken Einfluss> 3. alles gleich = alles ok am Messsystem :)
Danke für den Tipp, aber ich habe es mit den Köpfe damals schon gemacht,
wegen etwas anderes. Hat nicht viel geholfen, alles schien ok sein am
Messystem. Ganz gleich war es nicht, aber sah relativ ähnlich aus. Es
ging um folgendes:
Ich hatte an dem Tag auch ein schnelleres, 25MHz-Signal gemessen und
Kanal 2 hat mir etwas komisches gezeigt: Amplitude 500mv anstatt 3,3V.
Aber nach dem Tausch der Köpfe war es nicht viel anders. Obwohl der
Multimeter an dem Pin 3,3V zeigt. Bestimmt habe ich etwas mit
Einstellungen am Oszi falsch gemacht. Sonst war das System Ok.
IL schrieb:> Wahrscheinlich hat es mit der 5V-Begrenzung zu tun? Für 3,3V -Signale> habe ich 5V Obergrenze gestellt.
Begrenzung/Obergrenze sind hier ungeschickte Begriffe. Die 5V sind die
Empfindlichkeitseinstellung (ein Kästchen auf dem Bildschirm entsprechen
5V). Geschickt wäre bei einem 3,3V Signal sowas wie 1V/DIV (1 V pro
Kästchen) oder 500mV/DIV. Dann deckt deine Messung immer noch einen
Bereich von 10V bzw. 5V ab (weil das Oszi 10 Kästchen in y-Richtung
hat).
Das "BW" steht ziemlich sicher dafür, dass ein Bandbreitenlimit gesetzt
war (dass das gemessene Signal also künstlich "ausgebremst" wurde. Das
ist unabhängig von der 5V Einstellung, es sind halt nur beides
Einstellungen an Kanal 2).
Auch bei der Zeitablenkung wäre es geschickt, wenn du nicht erst einen
Riesenzeitbereich von vielen µs aufnimmst und dann später auf ns-Ebene
reinzoomst. Stelle den Trigger auf die Flanke und nimm insgesamt nur ein
paar 100ns auf. Dann bekommst du auch eine höhere Abtastrate als die
250MS/s, die für solche Messungen schon sehr niedrig sind. Die Kurve
wird zwar interpoliert, aber nochmal: du hast bei der bisherigen
Einstellung nur einen einzelnen Messpunkt alle 4ns.
Joe F. hatte seinen Hinweis wohl ähnlich gemeint:
Joe F. schrieb:> Jetzt hast du schon so ein schönes Oszi mit großem Schirm, und stellst> es so ein, dass man die Flanken mit der Lupe suchen muss...
Ja, das Maximum -- 2ns -- ist besser, als 4. Auch die Anzahl der Samples
pro Sekunde ist wichtig. Jetzt muss ich noch finden, wo diese Bandbreite
eingestellt werden kann.
Wenn jemand das Thread noch lesen wird: hier ist das neue Oszi-Bild.
Tja, anscheinend waren es am Anfang wirklich falsche Einstellungen :(
Und was die Sache betrifft, dass bei flachen Flanken die Einsen später
erkannt werden, ist wahrscheinlich hier doch nicht der Fall. Mein
Tristate-Buffer ist ungetriggert, der Eingang wird direkt zu einem der
Ausgänge gegeben. Sodurch geht es nicht um die Erkennung von Einsen und
Nullen.
Bei solchen Messungen empfiehlt es sich, sämtliche ach so hübschen
Interpolationsalgorithmen auf dem Oszi abzuschalten, die Markierung für
die Abtastpunkte einzuschalten und die Abtastrate auf Single-Shot
Maximum zu setzen. Dann fällt es wesentlich leichter, zu beurteilen,
welche Datenbasis zur Schätzung der Flankenlage überhaupt zur Verfügung
steht. Kann das Oszi nicht mehr als 250MSa/s? Bei einem so schönen,
bunten Bildschirm würde mich das wundern.
IL schrieb:> Mein> Tristate-Buffer ist ungetriggert, der Eingang wird direkt zu einem der> Ausgänge gegeben. Sodurch geht es nicht um die Erkennung von Einsen und> Nullen.
Es geht doch um ein digitales Bauteil, oder? Klar unterscheidet das, ob
am Eingang eine Null oder eine Eins anliegt und treibt dann den
entsprechenden Wert nach außen. Das ist kein Operationsverstärker, der
das Einganssignal linear auf den Ausgang abbildet.
Das hat nichts damit zu tun, ob die digitalen Daten erst eingetaktet
werden (das meinst du wahrscheinlich mit "ungetriggert"). Dein Signal
wird auf der Zeitachse kontinuierlich verarbeitet (also nicht
eingetaktet), auf der Spannungsachse ist es aus FPGA-Sicht aber immer
noch wertediskret (Null oder Eins).
Es gibt auch Ausnahmen davon (z.B. die Logikfamilie 74CB**, die einfach
nur ein passgate zwischen Eingang und Ausgang schaltet), aber ich glaube
nicht, dass du so etwas in deinem FPGA zwischen Eingang und Ausgang
hast.
IL schrieb:> Tja, anscheinend waren es am Anfang wirklich falsche Einstellungen
Die Einstellungen für Tastkopf und Bandwidth Limit sind jetzt besser.
Die für die Zeitachse sind aber immer noch nicht ideal. Du interessierst
dich für Vorgänge auf der ns-Zeitskala, aber du misst einen Zeitbereich
von 40ms (also über tausend mal mehr, als relevant wäre). Weil dein Oszi
"nur" 10 Mio Messwerte aufnimmt, hast du weiterhin nur einen Abtastpunkt
alle 4ns. Genau wie Wolfgang schreibt schaust du dir im Wesentlichen nur
die Interpolation an, die Abtastpunkte (d.h. die tatsächlich gemessenen
Werte) sind sehr, sehr weit auseinander.
Die eigentliche Messung ist der schmale Streifen oben auf dem Bildschirm
(PreVu). Mit dessen Einstellungen legst du fest, was deine Messung wert
ist. Der Haupbildschirm unten ist dann nur der (40tausendfache) Zoom in
die Messung oben. Du musst die Messung "oben" richtig einstellen, nur
dann kannst du unten was vernünftiges sehen. Das Ändern des Zoofaktors
macht die eigentliche Messung nicht besser.
Nur wenn du oben statt "H 4.00ms" etwas stehen hast wie "H 4.00µs" (oder
noch besser "H 100ns"), dann bekommst du eine Samplerate >GS/s und dann
kannst du Anstiegszeiten im ns-Bereich sauber bewerten.
Falls der Trigger nicht sauber laufen sollte, setze seine Schwelle von
3V runter auf 2V. Außerdem gehe bitte für beide Kanäle von den 5V/Div
auf 1V/Div. Damit wird die Messung dann auch in y-Richtung wenigstens
halbwegs bildschirmfüllend und man braucht keine Lupe zum Erkennen der
Flanke ;-)
Sorry für späte Antwort, hatte gestern/heute unerwartet keine Zeit.
Wolfgang schrieb:> Bei solchen Messungen empfiehlt es sich, sämtliche ach so hübschen> Interpolationsalgorithmen auf dem Oszi abzuschalten, die Markierung für> die Abtastpunkte einzuschalten und die Abtastrate auf Single-Shot> Maximum zu setzen.
Ja, Du hast absolut Recht. Ich kannte mich mit dem Gerät nicht so gut
aus, habe den Zugang ohne Vorführung bekommen. Dadurch die
nicht-optimalen Einstellungen. :(
Wolfgang schrieb:> Kann das Oszi nicht mehr als 250MSa/s? Bei einem so schönen,> bunten Bildschirm würde mich das wundern.
Das Gerät kann auf jeden Fall mit GS/s arbeiten. Ich habe sogar ein
anderes Signal mit 2,5 GS/s gemessen. Und bis ihr mir darauf hingewiesen
habt, war ich dummerweise voll Überzeugung, dass es bei allen Bilder so
ist.
Achim S. schrieb:> Klar unterscheidet das, ob> am Eingang eine Null oder eine Eins anliegt und treibt dann den> entsprechenden Wert nach außen. Das ist kein Operationsverstärker, der> das Einganssignal linear auf den Ausgang abbildet.
Ich stelle mir nur schwer vor, wie dieses passier, wenn keine Flipflops,
Schmitttrigger oder ähnliches auf dem Weg sind. Wie ich mir dachte,
werden die Leitungen zwischen den Ein- und Ausgangstreiber direkt
geschaltet. Die Signale (die sich natürlich im zulässigen
Spannungsbereich der Treiber befinden, also 0 bis 3,3V) werden dann so
wie sie sind einfach durchgeleitet. Soweit ich weiss ist es möglich, die
Leitungen im FPGA entsprechend konfigurieren. Aber es ist nur eine
Vorstellung - letzte Zeit habe ich mehrmals feststellen müssen, dass ich
die Dinge im Leben falsch sehe :).
Achim S. schrieb:> ... ob die digitalen Daten erst eingetaktet> werden (das meinst du wahrscheinlich mit "ungetriggert")
Ja, ganz genau :)
Achim S. schrieb:> auf der Spannungsachse ist es aus FPGA-Sicht aber immer> noch wertediskret (Null oder Eins).
Ja, wie gesagt - ich muss noch dazulernen, um es richtig zu verstehen.
:(
Achim S. schrieb:> Du interessierst> dich für Vorgänge auf der ns-Zeitskala, aber du misst einen Zeitbereich> von 40ms (also über tausend mal mehr, als relevant wäre). Weil dein Oszi> "nur" 10 Mio Messwerte aufnimmt, hast du weiterhin nur einen Abtastpunkt> alle 4ns. Genau wie Wolfgang schreibt schaust du dir im Wesentlichen nur> die Interpolation an, die Abtastpunkte (d.h. die tatsächlich gemessenen> Werte) sind sehr, sehr weit auseinander.
Tja, ich sage ehrlich - ich weiß nicht wie ich die Einstellungen wieder
auf die alte Werte umgestellt habe. Es war am Anfang doch 1,25-2,5 GS/s
und kleine Messbereiche. Naja, die Eile beim Messen ist kein guter
Helfer.
Achim S. schrieb:> Die eigentliche Messung ist der schmale Streifen oben auf dem Bildschirm> (PreVu). Mit dessen Einstellungen legst du fest, was deine Messung wert> ist. Der Haupbildschirm unten ist dann nur der (40tausendfache) Zoom in> die Messung oben. Du musst die Messung "oben" richtig einstellen, nur> dann kannst du unten was vernünftiges sehen. Das Ändern des Zoofaktors> macht die eigentliche Messung nicht besser.
Dummerweise weiss ich es (zumindest nachdem Du mir es damals erklärt
hast). In Theorie. Naja, hoffentlich mache ich keine so dummen Fehler
mehr.
Achim S. schrieb:> gehe bitte für beide Kanäle von den 5V/Div> auf 1V/Div. Damit wird die Messung dann auch in y-Richtung wenigstens> halbwegs bildschirmfüllend und man braucht keine Lupe zum Erkennen der> Flanke ;-)
Vielen Dank Dir für die guten Hinweise!