Forum: FPGA, VHDL & Co. time'image(now) in ns, us oder ms?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Parcher (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

in meiner Simulation möchte ich gerne VHDL Timestamps z.B. für Logfiles 
verwenden. Hierzu nutze ich time'image(now). Leider erhalte ich dabei 
immer den Timestamp in ps, was die Zahlen leider schlecht lesbar macht. 
In der Regel bei meinen Simulationen mindestens eine Granularität von 1 
ns.

Gibt es eine Möglichkeit, eine time to string Conversion durchzuführen 
und dabei die präferierte unit selbst zu definieren?

Die Verwendung von write funktioniert in meinem Fall nicht, da ich einer 
Log Funktion nur einen String übergeben will.

Viele Grüße
  Parcher

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Parcher schrieb:
> in meiner Simulation
Mit welchem Simulator?

von Duke Scarring (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Du kannst einfach durch die gewünschte Zeit(-auflösung) dividieren:
1
entity time_sim is
2
end entity time_sim;
3
4
architecture testbench of time_sim is
5
begin
6
7
    main: process
8
    begin
9
        report( time'image( now));
10
        report( integer'image( now / 1 ns) & " ns");
11
        wait for 1 ms;
12
        report( time'image( now));
13
        report( integer'image( now / 1 ns) & " ns");
14
        wait;
15
    end process;
16
17
end architecture testbench;

Duke

von Patrick J. (ho-bit-hun-ter)


Bewertung
-1 lesenswert
nicht lesenswert
Hi

Parcher schrieb:
> Leider erhalte ich dabei
> immer den Timestamp in ps, was die Zahlen leider schlecht lesbar macht.

Dann 'streich nen paar Nullen weg' (aka, versetze einfach das Komma)
Wenn Piko-Sekunden gegeben sind, ist es doch ein Leichtes, daraus 
Nano-Sekunden zu machen (:1000), daraus µ (wieder :1000), daraus m 
(wieder :1000), daraus ganze Sekunden (erneut :1000).

Dabei musst Du 'nur' das Komma in Deinem String suchen und um jeweils 3 
Stellen nach links setzen.
Fehlende Stellen mit 0 auffüllen, obsolete Nullstellen links entfernen.

Das riecht doch förmlich nach 'Regex':
https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

MfG

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Patrick J. schrieb:
> Das riecht doch förmlich nach 'Regex':

Magst du mir verraten, wie man Regexe in VHDL benutzt? Würde mich 
nämlich auch interessieren.

von Patrick J. (ho-bit-hun-ter)


Bewertung
-1 lesenswert
nicht lesenswert
Hi

S. R. schrieb:
> in VHDL benutzt? Würde mich nämlich auch interessieren.

Sorry, da hatte ich versäumt, mir den entsprechenden Hintergrund (das 
VHDL ist ja sogar verlinkt) anzusehen :/
Mir kam 'nur' der Lösungsansatz in den Sinn, als ich das vermeintliche 
Problem sah und zumindest im Terminal (Linux) ist (sind?) Regex 
unglaublich hilfreich, mna muß das System dahinter 'nur' verstanden 
haben (ist ganz schön kompliziert) ... und man sollte nicht lange 'raus' 
sein.
Meine Kreationen dazu sind schon in die Jahre gekommen, müsste schauen, 
ob das Zeug überhaupt auf der aktuellen Platte drauf ist (ging um 
Dateinamen, Deren Aufbau immer identisch zusammen gesetzt war - aber 
halt ohne explizite Trennzeichen, z.B. das Datum und die Uhrzeit waren 
'Schlüsselworte', von dort konnte man vor und zurück - bzw den die 
Strings davor/dahinter entsprechend verarbeiten ... wow, schreibt sich 
sogar kompliziert, kein Wunder, daß ich da über Wochen Spaß mit hatte)

MfG

von Charles G. (Firma: Ingenieurbuero Gardiner) (cfgardiner)


Bewertung
2 lesenswert
nicht lesenswert
Ab VHDL 2008 gibt es auch folgende Möglichkeit:

report "Timebase : Time now is " & to_string(now, us);

fs, ps, ns etc. geht natürlich auch.

Ab VHDL 2008 kannst du sogar to_string() auf jeden Scalar Typ anwenden.

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]
  • [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.