Unsigned -> IEEE754 Single

Gast #3690409
Lesenswert?

Guten Abend werte HDL-Freunde,

in einem Design möchte ich einige Berechnungen in Float durchführen. 
Eine passende FPU habe ich mir bereits bei Opencores besorgt. Meine 
Datenquelle, ein differentieller ADC liefert allerdings nur Binary 
Offset Daten. Keine Eingangsspannungsdifferenz 0d, maximale Differenz 
4095d. Um die Berechnungen in Float durchzuführen, muss ich die 
Eingangszahl noch nach Float umsetzen. Gibt es dafür bereits 
synthesefähige Implementierungen oder gar ein Package?

Vielen Dank für eure Hilfe.


mfg
Andreas
#3690502
Lesenswert?

Sollte nocht so schwer sein, das selbst zu schreiben. Vorzeichenbit ist 
ja einfach, Exponent nach höchstwertigstem Einser bestimmen und die 
diesem höchstwertigsten Einser folgenden Bits in der Mantisse 
speichern.....

Wenn man sich einfach mal anschaut, wie das alles so definiert ist, 
scheint das nicht so schwer zu sein: 
https://de.wikipedia.org/wiki/IEEE_754#Zahlenformate_und_andere_Festlegungen_des_IEEE-754-Standards
Gast #3690782
Lesenswert?

Jonas K. schrieb:
> Wenn man sich einfach mal anschaut, wie das alles so definiert ist,
> scheint das nicht so schwer zu sein:

Ja, am Beispiel 4095d => 111111111111,0 => 1,11111111111 * 2^11
-> damit wäre es Normalisiert

11d  => 1011b
127d => 01111111b

01111111
    1011
--------
10001010 -> Exponent

Die Mantisse ist Reschts des Kommas.

0,10001010,11111111111000000000000 -> et voilà
s,    e   ,           m


Peterle schrieb:
> Du fragst uns hier nicht im Ernst, wie man einen INT in einen FLOAT
> umsetzt?

Ja wieso denn nicht, wäre doch schön gewesen wenn es eine fertige 
parametrierbare Implemnetierung gegeben hätte, oder nicht?!?


VG
Andreas
Gast #3694973
Lesenswert?

Hallo,

anbei meine VHDL Quellen zum Umsetzen von unsigned in Float. Das Ganze 
synthetisiert unter Leonardo in der XH018 ohne Warnings. Der längste 
Pfad liegt bei 10ns. Soweit schon ganz in Ordnung. Bei weiteren 
Anregungen bitte nochmal schreiben.

VG
Andreas
Gast #3695033
Lesenswert?

Beifall für die Übersichtlichkeit des VHDL-files.
Ich frage mich aber auch, ob FP32 wirklich genauer ist, als ein 
angepasstes INT-Format.

Andreas schrieb:
> Soll später mal ein IIR Filter weren, bei dem ich mit der Eckfrequenz
> sehr weit von der Samplefrequenz entfernt bin fg=10kHz, Fs=1MHz. Da das
> Ganze im Moment etwas zeitkritisch ist, werfe ich auf das Problem
> Hardware.
Audio?
Moderator (Firma: Titel) Persönliche Seite #3695062
Lesenswert?

lowtzow schrieb:
> dachte immer die arith lib sollte man vermeiden und die numeric
> verwenden.
Tja, es wäre konsistenter. Aber die alten Synopsys Libs sind eben 
trotzdem noch in den Lehrbüchern...

@Andreas
Der gefällt mir:
-- finds leftest Element in Vector
"leftest" fehlt tatsächlich noch im englischen Vokabular. Dazu müssen 
die doch tatsächlich "leftmost" sagen. Oder technisch dann eher "most 
significant bit". Du könntest deine Kommentare natürlich auch einfach in 
Deutsch reinschreiben...

Ich habe mir das auch mal angeschaut:
http://www.lothar-miller.de/s9y/archives/55-Finde-das-MSB.html
Gast #3695456
Lesenswert?

Lothar Miller schrieb:
> Du könntest deine Kommentare natürlich auch einfach in
> Deutsch reinschreiben...

Ja, man merkt, das ich noch ein wenig üben muss ;-)

lowtzow schrieb:
> dachte immer die arith lib sollte man vermeiden und die numeric
> verwenden.

Würde ich auch so einschätzen, da die OpenCores FPU aber ebenfalls das 
arith package nutzt, bin ich auch nochmal auf dieses gegangen.

aber der wechsel ist kein Problem:

aus conv_std_logic_vector(int) wird std_logic_vector(to_unsigned(int));
aus conv_integer(stv) wird to_integer(stv);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren