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?
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.
Spezifiziere "bestimmte Aktion" mal etwas genauer, dann kann dir vielleicht geholfen werden!
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.
> berechneten (!) Werte garantiert sind.
garantierte Maximalwerte sind, um Haare zu spalten :-)
@ 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.
> 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...
Also die Timing-Simulation im Modelsim mit den Xilinx Bibliotheken stimmt erschreckend genau mit der Wirklichkeit überein.
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
Ok alles klar, dann mache ich nochmal eine Timing Simulation. Danke für die Hilfe!
Blödsinn, man braucht wirklich keine Timing-Simulation um festzustellen wieviel Takte eine "Aktion" braucht !!!
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.
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....
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.