Forum: FPGA, VHDL & Co. Dezimalzahl mit Kommastellen in ISIM darstellen


von Xilinx-Kritiker (Gast)


Lesenswert?

Ich habe den output eines Moduls, der mir das 32768fache eines 
Ergenisses darstellt, welches zwischen -10000 und +10000 rangiert. 
Insgesamt sind es 30bit

Den Vorkommawert kann ich durch WK <= ouput (30 downto 15) erhalten und 
er wird auch korrekt angezeigt. Wie füge ich die Nachkommastellen 14 to 
0 so hinzu, dass ich Kommastellen sehe?

Es würde mir reichen, wenn ich sie in einem zweiten Vektor hätte. Muss 
ich das manuell machen, also z.B. in der Testbench *1000/32768, und mir 
das Komma denken, oder gibt es eine Möglichkeit, einen Real zu erzeugen, 
der die Werte als Kommazahl darstellt.

Real = "converto_real" (vector) / 32768 oder so

von user (Gast)


Lesenswert?

das sollte funktionieren

real = 1.0 * conv_integer(vector) / 32768.0;

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


Lesenswert?

user schrieb:
> conv_integer
Nicht mit der numeric_std.
Auch eine Multiplikation von real mit integer ist nicht definiert...

Ich empfehle daher:
1
  r <= real(to_integer(unsigned(v))) / 32768.0;

von Xilinx-Kritiker (Gast)


Lesenswert?

Lothar Miller schrieb:
> r <= real(to_integer(unsigned(v))) / 32768.0;

Das schaut gut aus - werde ich probieren.
Danke!

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


Lesenswert?

Xilinx-Kritiker schrieb:
> Das schaut gut aus
Und nicht vergessen: nimm die numeric_std statt der alen Synopsys-Libs.
Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete"

von Xilinx-Kritiker (Gast)


Lesenswert?

Schon klar.

ok, es funktioniert, allerding nur für die reduzierte Auflösung. Wenn 
ich einen grossen Vekttor einspeise, kommen komische Werte raus.

Ich benutzte übrigens real(to_integer(*signed*(v))) /

Ich habe mir nun so geholfen, dass ich den Vektor kürze und auf einige 
Stellen verzichte. Dem Prinzip nach kommt aber das richtige raus.

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.