Hardware Reference
In-Depth Information
int(...)
(4)
tounsigned(...),tosigned(...)
(4)
(...)
(1)
UNSIGNED
(...)
(1)
(...)
(2)
TOBITVECTOR
(...)
(3)
STDLOGICVECTOR
(...)
(1)
TOINTEGER
SIGNED
tUnsigned
tSigned
UNSIGNED
SIGNED
STDLOGICVECTOR
BITVECTOR
INTEGER
tUnsigned(...)
(1)
tSigned(...)
(1)
(...)
(3)
TOUNSIGNED
(...)
(3)
(...)
2
TOSTDLOGICVECTOR
(...)
(1)
BITVECTOR
TOSIGNED
totUnsigned(...),totSigned(...)
(4)
totUnsigned(...),toSigned(...)
(4)
(1)
engverwandteTypen,KonvertierungmitdemBezeichnerdesZieltyps
definiertimPackage
IEEE.STDLOGIC
IEEE.NUMERICBIT
(2)
1164
(3)
definiertimPackage
definiertindenPackagesTuc.NumericSimundTuc.NumericSynth
(4)
Abb. 3.14. Konvertierungsschema zur Nachbildung von Operationen für die selbst
definierten Bitvektortypen »tUnsigned« und »tSigned« mit Operationen für die
standardisierten Typen std_logic_vector, unsigned, signed und integer
function
to_unsigned(x: tUnsigned)
return
unsigned
is
begin
return
unsigned(to_bitvector(std_logic_vector(x)));
end function
;
function
to_tUnsigned(x:unsigned)
return
tUnsigned
is
begin
return
tUnsigned(to_stdlogicvector(bit_vector(x)));
end function
;
Die komplette Operatorfunktion für die Addition von Operanden vom Typ
»tUnsigned« lautet:
function
"+" (a, b: tUnsigned)
return
tUnsigned
is
begin
return
to_tUnsigned(to_Unsigned(a)+to_
unsigned(b));
end function
;
)WEB-Projekt:Tuc/Numeric_Synth.vhdl
Das ist aber nur die Beschreibung für die Synthese, bei der die Pseudo-Werte
ignoriert werden. Die Simulation benötigt zusätzlich eine Sonderbehandlung
für ungültige Summanden. Da die Gültigkeitsinformation bei der Konvertie-
rung nach
[un]signed verloren geht, muss diese Sonderbehandlung vor der
Konvertierung erfolgen. In der nachfolgenden Operatorfunktion für die Simu-
lation der Addition wird zuerst geprüft, ob die Summanden gültig sind. Nur
wenn das der Fall ist, folgen die Konvertierung und die Ergebnisberechnung.
Im anderen Fall wird der Pseudo-Wert für ungültig zurückgegeben: