Hardware Reference
In-Depth Information
2.6.6 Vergleicher
Vergleicher testen zwei Bitvektoren auf Übereinstimmung oder Nicht-Überein-
stimmung. Wenn die Bitvektoren Zahlen darstellen, ist auch ein Größenver-
gleich mit den Operatoren für »größer«, »größer/gleich« etc. möglich. Der
Ergebnistyp ist boolean. Die Synthese übersetzt den boolean-Wert false
in der Regel in eine »0« und true in eine »1« (vgl. Abschnitt 2.1.2).
Der Test auf Gleichheit zweier n-Bit-Vektoren erfolgt bitweise mit XNOR-
Gattern, deren Ausgänge UND-verknüpft sind (Abb. 2.88 a). Die Schaltung
für den Test auf Ungleichheit hat eine zusätzliche Ausgabeinvertierung. Mit
einer Konstanten als zweitem Operanden vereinfachen sich die XNOR-Gatter
bei der Konstantenelimination zu Verbindungen ohne logische Funktion oder
zu Invertern (Abb. 2.88b). Ein Vergleicher mit einer Konstanten ist praktisch
eine UND-Verknüpfung direkter und invertierter Operandenbits (Abb. 2.88 c).
signal a, b:std_logic_vector(n-1 downto 0 );
signal v:std_logic;
v<=(a=b);
v<=(a=”1001”)
a 0
b 0
a 1
b 1
···
a n −1
b n −1
0
==
a i v i
v 1 v 0
==
a 0
a 1
a 2
a 3
a i v i
==
. . . v
&
&
v
1
a i v i
==
v n −1
==
a)
b)
c)
a i v i
Abb. 2.88. Test auf Gleichheit a) Schaltung b) Regeln für die Konstantenelimi-
nation c) optimierter Vergleicher mit einem konstanten Bitvektor
Der Test auf »größer«, »größer gleich« etc. wird mit einer Subtraktion
nachgebildet. Für vorzeichenfreie Zahlen wird der Übertrag und für vorzei-
chenbehaftete Zahlen das Vorzeichenbit der Differenz ausgewertet (Abb. 2.89).
Die Schaltung ist in jedem Fall ein Subtrahierer bzw. ein Addierer mit dem
bitweise negierten Subtrahenden wahlweise mit oder ohne Eingangsübertrag
und ohne die Schaltungsteile für die Bildung der nicht benötigten Ausgabe-
bits.
Ein Test auf »größer« etc. kostet einen Subtrahierer, während ein Test auf
Gleichheit mit einer einfacheren Schaltung auskommt. Eine Optimierungsre-
gel für digitale Schaltungen lautet folglich, wenn möglich, einen Test auf (Un-)
Gleichheit statt eines Größenvergleichs zu verwenden. Das ist eine Optimie-
rung, die nur der Entwickler, nicht aber das Synthesesystem vornehmen kann.
2.6.7 Verschiebung und Rotation
Die Verschiebeoperatoren verschieben die Bits in einem Bitvektor um eine
vorgegebene Anzahl von Stellen. Dabei ist zwischen einer logischen Verschie-
 
Search WWH ::




Custom Search