mikrocontroller.net

Forum: FPGA, VHDL & Co. Geschwindigkeit messen


Autor: Ein Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Master Snoman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spezifiziere "bestimmte Aktion" mal etwas genauer, dann kann dir 
vielleicht geholfen werden!

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> berechneten (!) Werte garantiert sind.

garantierte Maximalwerte sind, um Haare zu spalten :-)

Autor: Ein Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Christian R. (supachris)
Datum:

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

Autor: Sebastian B. (sfreak) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ein Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok alles klar, dann mache ich nochmal eine Timing Simulation.

Danke für die Hilfe!

Autor: Klaus Falser (kfalser)
Datum:

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

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.