Forum: FPGA, VHDL & Co. Geschwindigkeit messen


von Ein Gast (Gast)


Lesenswert?

Hallo!

Ich würde gern die Zeit messen, die mein FPGA für eine bestimmte Aktion 
benötigt. Spontan würde mir einfallen, einen eigenen Prozess dafür zu 
spendieren, der pro Takt einen Zähler inkrementiert und zusätzlich 
sensitiv auf das Signal ist, das meine Aktion startet und auf das 
Signal, das anzeigt, dass meine Aktion beendet ist. Durch den Zähler und 
die Taktfrequenz, kann ich mir ja dann die benötigte Zeit errechnen, 
oder?

Gibt es noch andere (bessere?) Möglichkeiten die Geschwindigkeit zu 
messen, oder ist das wie oben beschrieben die sinnvollste Lösung?

von Master Snoman (Gast)


Lesenswert?

du schreibst von einem prozess (ich kann noch nicht VHDL) aber wenn das 
ein zeitilicher "ablauf" ist und du über ein oszilloskop verfügst, 
kannst du anfang des prozesses ein portpin auf 'high' setzen und am 
schluss au 'low'; und dann mit dem oszilloskop messen wie lange der pin 
auf 'high' ist.

von Gast (Gast)


Lesenswert?

Spezifiziere "bestimmte Aktion" mal etwas genauer, dann kann dir 
vielleicht geholfen werden!

von Klaus F. (kfalser)


Lesenswert?

Ja, es gibt eine bessere Lösungen :

a) Deine Aktion ist getaktet :
Dann verwende eine Simulator um zu sehen, wieviele Takte benötigt 
werden.

b) Deine Aktion ist kombinatorisch :
Dann verwende die Analysetools des FPGA-Herstellers zum Berechnen der 
Durchlaufzeit. Diese hängen sehr stark von Temperatur, 
Versorgungsspannung und Bauteiltolereanzen ab, sodass nur diese 
berechneten (!) Werte garantiert sind. Eine Dimensionierung aufgrund 
irgendwelcher Messwerte von Durchlaufzeiten ist unprofessionell und 
höchst riskant.

von Gast (Gast)


Lesenswert?

> berechneten (!) Werte garantiert sind.

garantierte Maximalwerte sind, um Haare zu spalten :-)

von Ein Gast (Gast)


Lesenswert?

@ Gast: Es geht um die Auswertung einer (großen) Matrix.

@ Klaus Falser: Ja, meine Aktion ist getaktet. Simuliert habe ich 
bereits mit ModelSim. Aber es ist eben nur eine Simulation... Da ich mir 
nicht sicher bin, wie verlässlich  die Simulation ist, wollte ich die 
Geschwindigkeit auch nochmal "live" messen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Ja, meine Aktion ist getaktet.
> Da ich mir nicht sicher bin, wie verlässlich die Simulation ist...
Dann solltest du morgens aber auch kontrollieren,
ob die Erde noch rund ist ... ;-)

Die Simulation ist genauso verlässlich, wie du das, was du simuliert 
haben willst, beschrieben hast. Wenn du natürlich die falschen Stimuli 
auf die Simulation gibst, oder deine Schaltung falsch beschrieben hast 
(Übergang zwischen Taktdomänen) dann verhält sich die Implementation 
anders als die Simulation.
Allerdings hilft dir dann auch eine Laufzeitmessung nicht wirklich 
weiter...

von Christian R. (supachris)


Lesenswert?

Also die Timing-Simulation im Modelsim mit den Xilinx Bibliotheken 
stimmt erschreckend genau mit der Wirklichkeit überein.

von Sebastian B. (sfreak) Benutzerseite


Lesenswert?

Also fuer ganz praezises Timing gibt's die Simulation nach der 
Synthese, wie schon als "Timing Simulation" genannt. Besser als das 
wirst du wohl auch nicht messen koennen. Allerdings kann die Simulation 
von komplexen Ablaeufen (und dazu gehoeren Operationen mit "grossen" 
Matrizen auf jeden Fall) quasi beliebig lange dauern....

Sebastian

von Ein Gast (Gast)


Lesenswert?

Ok alles klar, dann mache ich nochmal eine Timing Simulation.

Danke für die Hilfe!

von Klaus F. (kfalser)


Lesenswert?

Blödsinn, man braucht wirklich keine Timing-Simulation um festzustellen 
wieviel Takte eine "Aktion" braucht !!!

von Hansi (Gast)


Lesenswert?

Nur mal so nebenbei gefragt: Was ist denn der Unterschied zwischen einer 
"Timing Simulation" und einer "normalen" Simulation?

Ich würde bei getakteten Prozessen einfach die Durchläufe "per Hand" 
zählen. Sprich: Durch logisches Überlegen müsste man eigentlich auf die 
Anzahl der Takte kommen, wenn man weiß was man programmiert hat.

von Christian R. (supachris)


Lesenswert?

Klaus Falser wrote:
> Blödsinn, man braucht wirklich keine Timing-Simulation um festzustellen
> wieviel Takte eine "Aktion" braucht !!!

Richtig, man hat´s ja selber sequenziell beschrieben, dann weiß man, 
wieviele Takte es benötigt, oder man hat eine kombinatorische Logik, 
dann bekommt man durch die Timing-Simulation raus, wieviel Zeit 
meinetwegen die Addition benötigt, bis alle Ausgänge ihren Pegel 
angenommen haben. Aber ich glaub, den Unterschied hat der Fragesteller 
noch nicht begriffen. Wahrscheinlich ein C-Programmierer....

von Christian R. (supachris)


Lesenswert?

Hansi wrote:
> Nur mal so nebenbei gefragt: Was ist denn der Unterschied zwischen einer
> "Timing Simulation" und einer "normalen" Simulation?

Die "Timing Simulation" ist umgangsspachlich für die Post-Route 
Simulation, damit kann man sehen, ob der wirkliche Chip mit dem fertig 
gerouteten Design so funktioniert, wie man das beschrieben hat. Oder ob 
eventuell durch Gatter-Laufzeiten o.ä. irgendwelche Timings 
durcheinander kommen.

von Nephilim (Gast)


Lesenswert?

bei ner normalen simualtion werden die gatterlaufzeiten nicht beachtet. 
sprich ein kombinatorischer pfad wird dort quasi sofort ohne meßbaren 
zeitverlust durchlaufen.
bei einer timing simulation werden diese Gatterlaufzeiten jedoch mit 
einberechnet, wodurch man so erkennen kann, ob z.b. ein kombinatorischer 
Pfad zu lang ist um mit der restlichen synchronen schaltung 
zusammenzuarbeiten. Wenn ein kombinatorischer Pfad nicht zu den 
Taktflanken mit der abarbeitung fertig ist, dann werden falsche werte 
für die weitere berechnung übernommen.

von Klaus Falser (Gast)


Lesenswert?

Eine Timing Simulation zu verwenden, um zu sehen, ob alle 
Gatterlaufzeiten eingehalten werden, grenzt schon an Wahnsinn.
Man hätte bei tausende Pfade die man im Simulator graphisch 
kontrollieren müßte.
Genau für diesen Zweck gibt es den Timing Analyzer, der die alle 
angegebenen Pfade überprüft. Dies nennt man statische Timing-Analyse, 
weil die Durchlaufzeiten nicht von den Signalverläufen abhängen.

Man sollte den Anfängern nicht noch auch unnötige Blödsinne beibringen, 
VHDL ist für manche knifflig genug ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.