24.12.2012 Aufrufe

Schaltungsdesign mit VHDL

Schaltungsdesign mit VHDL

Schaltungsdesign mit VHDL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

C Anwendung von <strong>VHDL</strong><br />

Syntheseprogramme. Besonders fällt hier auf, daß die Architektur cla<br />

(Carry-Look-Ahead) meist auf eine kleinere Schaltung als die Ripple-<br />

Carry-Architektur führt. Beim manuellen Entwurf hätte man durch<br />

Einsatz einer Ripple-Carry-Architektur eine kleinere Schaltung erzielt<br />

als <strong>mit</strong> der Carry-Look-Ahead-Architektur. Dies zeigt, daß die Syntheseprogramme<br />

die gegebenen Gleichungen nicht als Addierer erkennen<br />

können und in diesem Fall die Gleichungen für den Carry-Look-<br />

Ahead-Addierer offensichtlich mehr Spielraum für die Flächenoptimierung<br />

bieten.<br />

Bei neueren Versionen der Syntheseprogramme ist die Verwendung<br />

von arithmetischen Operatoren sinnvoller ist als die Angabe von logischen<br />

Gleichungen, da die Programme oft optimierte Module für die<br />

Synthese von arithmetischen Operatoren zur Verfügung stellen.<br />

2.3.5 Schleifen<br />

Von den drei Schleifenarten, die in <strong>VHDL</strong> möglich sind (FOR-<br />

Schleife, WHILE-Schleife und Endlosschleife) wird nur die FOR-<br />

Schleife von den Syntheseprogrammen uneingeschränkt unterstützt,<br />

weil hier die Anzahl der Schleifendurchläufe vor der Ausführung der<br />

Schleife bekannt ist.<br />

Das folgende Beispiel zeigt, wie durch einen für die Simulation korrekten,<br />

aber für die Synthese ungünstigen Einsatz von Schleifen ein<br />

hoher Flächenaufwand impliziert wird. Dazu soll das Modell eines<br />

Barrel-Shifters betrachtet werden, der 8-Bit breite Daten (data_in)<br />

in Abhängigkeit von einem Steuersignal (adresse) um bis zu sieben<br />

Stellen rotieren kann.<br />

ENTITY barrel IS<br />

PORT (data_in : IN std_ulogic_vector (7 DOWNTO 0);<br />

adresse : IN std_logic_vector (2 DOWNTO 0);<br />

data_out : OUT std_ulogic_vector (7 DOWNTO 0));<br />

END barrel;<br />

260 © G. Lehmann/B. Wunder/M. Selz

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!