Hardware Reference
In-Depth Information
function "+" (a, b: tUnsigned) return tUnsigned is
constant cXX: tUnsigned(max(a'length, b'length)- 1 downto 0 )
:=( others => 'X' );
begin
if is_x(a) or is_x(b) then return cXX;
else return to_tUnsigned(to_Unsigned(a)+to_Unsigned(b));
end if ;
end function ;
) WEB-Projekt:Tuc/Numeric_Sim.vhdl
Wie in Abb. 3.14 gezeigt, gibt es des Weiteren auch ein vierstufiges Konvertie-
rungsschema von t
signed nach integer und umgekehrt. Die entsprechen-
den Konvertierungsfunktionen werden für die Initialisierung von Bitvektoren
mit Zahlenwerten und für die Umwandlung von Bitvektorwerten in Indexwerte
für die Adressierung von Feldern benötigt.
Beim Übergang von der Simulation zur Synthese ist das Package »Tuc.Nu-
meric_Sim« durch das Package »Tuc.Numeric_Synth« zu ersetzen und um-
gekehrt. So werden numerische Operationen mit Gültigkeitsinformation si-
muliert und die Synthese wird nicht mit Informationen belästigt, die sie nicht
verarbeiten kann. Die beiden Numeric-Packages sind relativ umfangreich, aber
nach einem einfachen Schema programmiert. Nach demselben Schema lassen
sich weitere von der Synthese zu unterstützende Bitvektortypen mit den zu-
gehörigen Operatorfunktionen definieren, z.B. Bitvektortypen für Gleitkom-
maformate.
Das Entwurfssystem ISE von Xilinx, das in Abschnitt 2.1 zum Testen der
Synthese-Beispiele genutzt wurde, schreibt beim Erzeugen einer neuen VHDL-
Datei in den Vorspann die Import-Anweisungen für die nicht standardi-
sierten Packages ieee.std_logic_arith, ieee.std_logic_unsigned und
ieee.std_logic_signed. Diese Packages der Firma Synopsis stellen auch
überladene arithmetische Operatorfunktionen für mit std_logic_vector
eng verwandte Bitvektortypen bereit. Sie sind jedoch nicht ganz mit dem
VHDL-Standard kompatibel und sollten nur in Systemen genutzt werden,
die sie ausdrücklich unterstützen. In diesen Systemen haben sie den Vor-
teil, dass die Sonderbehandlungen für ungültige Werte bei der Synthese ge-
nau wie bei der Verwendung des Packages ieee_std_logic_1164 auto-
matisch deaktiviert werden, so dass nicht wie bei »Tuc.Numeric_Sim« und
»Tuc.Numeric_Synth« das Package ausgetauscht werden muss. Das Packa-
ge std_logic_arith definiert die Typen unsigned und signed als Vek-
tortypen mit Elementen vom Typ std_logic und exportiert dafür die-
selben Operatorfunktionen und Unterprogramme, wie das standardisierte
Package ieee.numeric_bit für die gleichnamigen mit bit_vector eng
verwandten Typen. Beide Packages dürfen deshalb nicht zusammen genutzt
werden. Das Package ieee.std_logic_unsigned überlädt die arithmeti-
schen Operatoren für den Typ std_logic_vector mit den arithmeti-
schen Operatorfunktionen für vorzeichenfreie ganze Zahlen und das Packa-
ge ieee.std_logic_signed mit den arithmetischen Operatorfunktionen für
[
Un
]
 
Search WWH ::




Custom Search