Forum: FPGA, VHDL & Co. Datentyp real in std_logic_vector nach IEEE754


von Till (Gast)


Lesenswert?

Hallo Leute,

ich suche nach einem Package, das mir zu dem Datentyp real aus VHDL 
einen 32-Bit std_logic_vector nach dem IEEE754-Standard erzeugt. Das 
Ganze muss natürlich nicht synthetisierbar sein.

Es geht um Folgendes: ich habe einen Floating-Point Core, der 
Floating-Point Berechnungen nach dem IEEE754-Standard durchführen soll. 
In einer Testbench möchte ich jetzt mehrere Testwerte durch den Core 
jagen, um die Ergebnisse zu überprüfen. Die ganze Testbench wäre sehr 
viel übersichtlicher, wenn ich das in der folgenden Form tun könnte, 
anstelle für den Floating-Point-Wert 1.0 den Vektor 
"00111111100000000000000000000000" hinzuschreiben...

1
adderinput1 <= CONVERSION ( 1.0 );
2
adderinput2 <= CONVERSION ( 1.0 );
3
wait for adderdelay;
4
assert adderoutput = CONVERSION ( 2.0 ) report "ERROR IN ADDER!";

Würde mich sehr über eine hilfreiche Antwort freuen! Bin mir total 
sicher, dass es sowas geben muss und wunder mich sehr, dass ich 
scheitere es irgendwo etwas zu finden :(

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


Lesenswert?

Till schrieb:
> Bin mir total sicher, dass es sowas geben muss...
Such mal auf
http://www.eda.org/fphdl/
das float_pkg_c.vhdl
1
function to_slv (arg : UNRESOLVED_float) return STD_LOGIC_VECTOR;

von Till F. (tillf)


Lesenswert?

Das sieht wirklich ziemlich gut aus. Auch wenn ich etwas verwundert bin, 
dass es kein Standard-Package gibt, das gleich bei der Xilinx ISE dabei 
ist...

Für deinen Vorschlag fehlt mir leider die benötigte library 
ieee_proposed, welche man laut google ebenfalls auf der von dir 
verlinkten Seite findet. Nur bin ich wohl zu blind sie zu sehen...

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


Lesenswert?

Nimm den VHDL-Quelltext und kompiliere dir die Lib selber. Oder binde 
den VHDL-Quelltext in dein Projekt ein...

von Till F. (tillf)


Lesenswert?

Mh, danke... Aber ich befürchte ich sehe den Wald vor Bäumen nicht...

Wenn ich die float_pkg_c.vhdl (ich denke du meinst das mit 
"VHDL-Quelltext"?) in mein Projekt einbinde, dann fehlt mir beim 
Ausführen die Library, welche in der float_pkg_c.vhdl referenziert wird:

1
library ieee_proposed;
2
use ieee_proposed.fixed_float_types.all;
3
use ieee_proposed.fixed_pkg.all;

Den Quelltext der Library kann ich auf der angegebenen Seite nicht 
finden (und auch sonst nirgends im Internet). Allerdings bin ich auch 
etwas verunsichert, was man bei VHDL unter eine "Library" versteht. Bin 
jetzt davon ausgegangen, dass das ein Verzeichnis ist, in dem sich eine 
oder mehrere VHDL-Dateien/Packages befinden (wobei der Name dises 
Verzeichnisses oder der Dateien irgend etwas mit dem Library-Namen zu 
tun hat).

von Duke Scarring (Gast)


Lesenswert?

Till Fischer schrieb:
> Allerdings bin ich auch
> etwas verunsichert, was man bei VHDL unter eine "Library" versteht. Bin
> jetzt davon ausgegangen, dass das ein Verzeichnis ist, in dem sich eine
> oder mehrere VHDL-Dateien/Packages befinden (wobei der Name dises
> Verzeichnisses oder der Dateien irgend etwas mit dem Library-Namen zu
> tun hat).

Es empfielt sich pro Library auf ein eigenes Verzeichnis zu verwenden. 
Schon alleine wegen der besseren Übersicht.

Allerdings mußt Du Modelsim und ISE explizit mitteilen zu welcher 
Bibliothek Deine Datei gehört.

Hier mal ein typischer Modelsim/vcom-Aufruf:
1
vcom -2008 -work s3estarter fpga_components.vhd

Duke

von Till F. (tillf)


Lesenswert?

Auch wenn es jetzt schon eine Weile her ist (ich bin erst heute wieder 
auf mein Problem zurückgekommen), noch ein kurzer Kommentar:

Inzwischen ist mir klar geworden, wie eine Library funktioniert, danke 
;)

Allerdings wäre das gar nicht nötig gewesen: beim aktuellen ModelSim 
wird eine bereits fix- und fertig kompilierte Library namens 
"floatfixlib" mitgeliefert. Tatsächlich handelt es sich dabei um die von 
Lothar Miller vorgeschlagene Lösung (mit VHDL2008 übrigens Teil der IEEE 
Library).

Da ich die gesuchte Konvertierung ja nur zur Simulation benötige, ist 
das exakt was ich gesucht habe.

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.