Hardware Reference
In-Depth Information
natorischen Prozesses von einer nachfolgenden Signalzuweisung überschrieben
werden. Eine Fortsetzung einer If-Anweisung mit einem Elsif-Zweig wird in
einen zweiten Multiplexer übersetzt, der wieder zwischen zwei Werten aus-
wählt. Mehrere Elsif-Zweige werden in eine Multiplexerkette übersetzt (Abb.
2.6).
signal a, b, c, d, p, q, r, y: std_logic;
...
process(a, b, c, d, p, q, r)
begin
if p= '1' then y <= a;
elsif q= '1' then y <= b;
elsif r= '1' then y <= c;
else
a
b
1
y
1 0
c
1
0
0
d
p
q
r
y <= d;
end if;
end process;
Web-Projekt:P2.1/SynthMux2.vhdl
Abb. 2.6. Nachbildung einer If-Elsif-Anweisung durch Multiplexer
Operatoren mit Bitvektoren als Operanden und komplexe Fallunterschei-
dungen werden als parametrisierte Funktionsblöcke extrahiert und an Schal-
tungsgeneratoren weitergereicht. Das erste Beispiel sei die Auswahlanweisung
in Abb. 2.7. Die Auswahlgröße ist ein 2-Bit-Vektor mit vier zulässigen Wer-
ten. Die Synthese bildet diese Auswahlanweisung durch einen Multiplexer
mit vier Dateneingängen nach. Im Gegensatz zur Beschreibung mit If-Elsif-
Anweisungen, die durch mehrere verkettete Multiplexer mit je zwei Daten-
eingängen nachgebildet werden, überlässt die Auswahlanweisung die Struk-
turentscheidung dem Schaltungsgenerator, der auf diese Weise mehr Optimie-
rungsmöglichkeiten erhält.
signal s:std_logic_vector( 1 downto 0 );
signal x1, x2, x3, x4, y:std_logic_vector( 3 downto 0 );
...
process (s, x1, x2, x3, x4)
begin
case s is
when "00" => y <= x1;
when "01" => y <= x2;
when "10" => y <= x3;
when others => y <= x4;
end case;
end process ;
4
x 1
x 2
x 3
x 4
s
00
01
4
4
10 y
4
4
11
2
Web-Projekt:P2.1/SynthCase.vhdl
Abb. 2.7. Multiplexerbeschreibung mit einer Auswahlanweisung
 
Search WWH ::




Custom Search