05.07.2013 Aufrufe

VHDL Kompakt - CES

VHDL Kompakt - CES

VHDL Kompakt - CES

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5. Sequenzielle Beschreibungen<br />

std_logic_1164 noch zwei zusätzliche Packages zur Verfügung, die eine vorzeichenlosestd_logic_unsigned<br />

oder 2’-Komplement Zahlendarstellung std_logic_signed direkt für<br />

den Datentyp std_logic_vector definiert. 1 Für Funktionen mit zwei Argumenten ist auch<br />

die gewohnte Infix-Notation möglich.<br />

In dem Beispiel wird eine Addition für bit_vector definiert.<br />

Beispiel<br />

function "+" (L, R : bit_vector) return bit_vector is<br />

constant SIZE : natural := MAX(L’length, R’length); siehe oben: MAX<br />

variable CAR : bit := ’0’;<br />

variable L_OP, R_OP : bit_vector (SIZE-1 downto 0);<br />

variable RESULT : bit_vector (SIZE-1 downto 0);<br />

begin<br />

if L’length = SIZE L normieren<br />

then L_OP := L;<br />

else L_OP(SIZE-1 downto L’length) := (others=> ’0’);<br />

L_OP(L’length-1 downto 0) := L;<br />

end if;<br />

if R’length = SIZE R normieren<br />

then R_OP := R;<br />

else R_OP(SIZE-1 downto R’length) := (others=> ’0’);<br />

R_OP(R’length-1 downto 0) := R;<br />

end if;<br />

for I in RESULT’reverse_range loop Volladdierer Schleife<br />

RESULT(I) := L_OP(I) xor R_OP(I) xor CAR; Summe<br />

CAR := (L_OP(I) and R_OP(I)) or (L_OP(I) and CAR) or<br />

(R_OP(I) and CAR); Carry<br />

end loop;<br />

return RESULT;<br />

end function "+";<br />

1 Der Standard ist die Benutzung des Package numeric std und die Interpretation durch die beiden Datenty-<br />

pen signed/unsigned<br />

40

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!