Hardware Reference
In-Depth Information
(Wert zehn) multipliziert. An das Zwischenergebnis wird eine führende »0«
konkateniert, um es auf acht Bit zu verlängern. Anschließend wird der zweite
3-Bit-Operand addiert. Die 8-Bit-Summe wird an das Ausgabesignal zugewie-
sen. In der extrahierten Schaltung wird die Multiplikation mit der Konstanten
durch einen Multiplizierer, die Konkatenation durch eine Zusammenführung
mit einem Einzelbit und die Addition durch einen Addierer nachgebildet.
signal a, b:
tUnsigned(
2
downto
0
);
signal y:
tUnsigned(
7
downto
0
);
...
process(a, b)
variable v:
tUnsigned(
6
downto
0
);
begin
A1: v := a *
"1010"
;
A2: y <= (
'0'
& v) + b;
end process;
0
3
7
∗
10
3
8
a
8
+
y
b
⇒
Web-Prolekt:P2.1/SynthRW1.vhdl
Abb. 2.11. Beschreibung eines Spezialrechenwerks mit arithmetischen Operationen
Das Beispiel in Abb. 2.12 beschreibt eine Schaltung mit einer arithme-
tischen Operation, einer Vergleichsoperation, einer Fallunterscheidung und
logischen Operationen. Wenn der Wert des 4-Bit-Vektors
größer 3 (binär
»0011«) und eines der binären Signale e oder f »1« ist, wird dem Ausga-
besignal
a
zugewiesen.
Die Register-Transfer-Synthese extrahiert die Teilschaltungen für die beiden
Auswahlalternativen, einen Addierer für die Summe von
y
die Summe von
a
und
b
und sonst der Wert von
b
a
und
b
und eine Ver-
bindung für »nur
«. Dann extrahiert sie die Schaltung für die Bildung des
Auswahlwertes, einen Vergleicher von
b
mit »3« und die logische Verknüpfung
des Vergleichsergebnisses mit den bitorientierten Signalen e und f. Die Fall-
a
signal a, b, y:
tUnsigned(
3
downto
0
);
signal e, f:
std_logic;
...
process(a, b, e, f)
begin
if
(a>
"0011"
)
and
(e
or
f)=
'1'
then
y <= a+b;
else
y <= b;
end if;
end process;
4
a
b
4
+
1
4
4
y
0
a
b
a>b
0011
&
e
f
≥
1
⇒
Web-Projekt:P2.1/SynthRW2.vhdl
Abb. 2.12. Beschreibung einer Schaltung mit einem Addierer, einem Vergleicher,
logischen Verknüpfungen und einem Multiplexer