Hardware Reference
In-Depth Information
package
tFloat32_pack
is
type
tFloat32 ...;
-- Konvertierung in einen Ausgabetext
function
str(x: tFloat32; fmt:character:=
'2'
)
return
string;
-- Initialisierung mit einer Zahlenkonstante
function
to_tFloat32(x:real)
return
tFloat32;
-- Test ob ungültig
function
is_x(x: tFloat32)
return
boolean;
-- arithmetische Operatorfunktionen
function
"+"(a, b: tFloat32)
return
tFloat32;
function
"-"(a, b: tFloat32)
return
tFloat32;
...
end package
;
Mit einem solchen Package sieht eine Funktionsbeschreibung mit Gleitkom-
mazahlen nicht viel anders aus als eine Beschreibung mit ganzen Zahlen:
variable
a, b, c, d: tFloat32;
...
a := to_tFloat32(
18.25
);
b := to_tFloat32(
-2.151E-2
);
c := to_tFloat32(
1.170E-39
)
d := (a+b)*c;
Zur Demonstration, um wie viel übersichtlicher eine strukturierte Beschrei-
bung mit Packages ist, sollen den Variablen a bis c ihre Werte auch einmal
ohne die Konvertierungsfunktion »to_tFloat32(...)« zugewiesen werden. Da-
zu sind als erstes die Gleitkommakonstanten manuell in Bitvektorkonstanten
umzurechnen. Das ist für die drei speziellen Zahlenwerte bereits in Abschnitt
2.4.4 in Abb. 2.68 erfolgt. Das Ergebnis steht in der nachfolgenden Tabelle
rechts. Links daneben sind dieselben Zuordnungen in VHDL in unterschiedli-
cher Weise beschrieben:
variable
a, b, c: tFloat32;
...
a := (s=>
'0'
, m=>(
20
|
17
=>
'1'
,
others
=>
'0'
), c=>
x"83"
);
b := (s=>
'1'
, m=>
x"CB3A1"
&
"110"
, c=>
x"79"
);
c := (s=>
'0'
, m=>
"000"
&
x"CBD19"
, c=>(
others
=>
'0'
));
Bitnummer
31
24 16
23 15
87 0
s
c m
0
1 1
00000 0
1
0010010000000000000000
a
8 3
2017
1
0111100111001011001110100001110
b
7 9 C B 3 A 1
0
0000000000011001011110100011001
c
C B D 1 9
Bei der Mantisse der Variablen a sind die Bitstellen, denen »1« zugeordnet
wird, zusammengefasst und allen anderen Bitstellen ist der Wert »0« zuge-
ordnet. Den 8-Bit-Charakteristika von a und b sind zwei Hexadezimalziffern
zugeordnet. Die Werte der 23-Bit-Mantissen für die Variablen b und c sind
aus fünf Hexadezimalziffern und drei Einzelbits zusammengesetzt. Alle drei
Zuordnungen haben eines gemeinsam. Die beabsichtigte Zielfunktion - die