Hardware Reference
In-Depth Information
Bei einem Auswahlwert vom Typ std_logic_vector gibt es eine Be-
sonderheit. Die VHDL-Sprachdefinition verlangt, dass jeder Auswahlwert, den
der Auswahlausdruck annehmen kann, in genau einem Auswahlfall berück-
sichtigt wird, selbst wenn er in der Schaltungsbeschreibung gar nicht auf-
treten kann. Das gilt auch für die schaltungstechnisch nicht darstellbaren
Pseudo-Werte von std_logic. Auch diese sind als Auswahlfälle zu berück-
sichtigen. Sie dürfen aber in einer Synthesebeschreibung nicht explizit aufge-
listet werden. Der Workaround ist der Auswahlwert »others«. Er erfasst alle
nicht explizit aufgezählten Werte inkl. der Pseudo-Werte. Der letzte Auswahl-
wert in einer Multiplexerbeschreibung mit einem Auswahlausdruck vom Typ
std_logic_vector muss deshalb immer wie in Abb. 2.7 »others« sein.
Logische Bedingungen für die Kontrollflusssteuerung mit If-Elsif-Anwei-
sungen werden mit Vergleichsoperatoren gebildet. Bei der Übersetzung von
true in »1« und false in »0« werden Bitvergleiche mit »1« in eine Iden-
tität, Bitvergleiche mit »0« in einen Inverter und der Test zweier Bits auf
Ungleichheit in ein EXOR-Gatter übersetzt (Abb. 2.8).
x 1 x 0 6 =0 x 0 =1 x 0 6 =1 x 1 = x 0 x 1 6 = x 0
x 0
x 0 =0
00 TRUE FALSE FALSE TRUE TRUE FALSE
(1) (0) (0) (1) (1) (0)
01 FALSE TRUE TRUE FALSE FALSE TRUE
(0) (1) (1) (0) (0) (1)
1
0
(0) (1)
FALSE TRUE
11
(1) (0)
TRUE FALSE
x 0
x 1 ==
x 0
x 1 =1
x 0
x 0 x 0
x 0
Abb. 2.8. Schaltungsnachbildung von Bitvergleichen
Der Test auf größer, größer gleich etc. ist standardmäßig nur für Zahlen-
typen und für Bitvektortypen zur Zahlendarstellung definiert. Es gibt un-
terschiedliche Zahlentypen (ganzzahlige oder solche mit Nachkommastellen,
vorzeichenfreie oder vorzeichenbehaftete). Diese unterscheiden sich in der Co-
dierung der Werte und verlangen unterschiedliche Schaltungen für dieselbe
Operation (siehe später Abschnitt 2.4.5). Die Synthese extrahiert für diese
Operatoren außer der Operandenbitbreite auch die Art der Zahlendarstellung
als Parameter. Wir werden im Weiteren in synthesefähigen Beschreibungen
nur zwei Bitvektortypen für die Zahlendarstellung verwenden:
-- für ganzzahlige vorzeichenfreie Zahlen
tUnsigned is array (natural range <>) of std_logic;
-- für ganzzahlige vorzeichenbehaftete Zahlen
tSigned is array (natural range <>) of std_logic;
Beide sind gemeinsam mit den arithmetischen und logischen Operatoren
im Package »Tuc.Numeric_Synth« so definiert, dass die Synthese sie unter-
stützt (siehe später Abschnitt 3.2.7). Die extrahierten Vergleicherschaltungen
 
Search WWH ::




Custom Search