11.10.2013 Aufrufe

Unterlagen zu Versuch 2

Unterlagen zu Versuch 2

Unterlagen zu Versuch 2

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.

Praktikum <strong>zu</strong> RgS 2 <strong>Versuch</strong>2: VHDL-VERHALTENSBESCHREIBUNG<br />

Im VHDL Modell wollen wir nun <strong>zu</strong>r Multiplikation auf einen Bitvektor für den Operanden übergehen.<br />

Dies wurde uns oben bereits im C-Programm etwas näher gebracht. Den Bitzähler n für die gesetzen<br />

Bits wollen wir <strong>zu</strong>nächst als Integer-Typ belassen. Unser Modell ist also so noch nicht vollständig synthetisierbar!<br />

Der Test des niedrigstwertigen Bits im Datenwort mit dem Wert 1 zeigt hier die Bitfauflösung<br />

mit dem Bitvektor (d and "00000001"). Interessant und wichtig für die weiteren Betrachtungen ist die<br />

Schiebeoperation, die hier durch die Zuweisung d := ’0’ & d(7 downto 1); erreicht wird. Das ist nur<br />

<strong>zu</strong> verstehen, wenn man weiß, dass ein Bitvektor eine Zeichenkette ist und der &-Operator Zeichen aneinander<br />

kettet. Hier wird also die neue Zeichenkette d gebildet durch die ’0’, an die das verschobene d<br />

gekettet wird!<br />

entity numbits is<br />

port( inp :in bit_vector(7 downto 0);<br />

num :out integer);<br />

end numbits;<br />

architecture behavior of numbits is<br />

begin<br />

count: process(inp)<br />

variable d : bit _vector(7 downto 0);<br />

variable n, k : integer := 0;<br />

begin<br />

d := inp;<br />

for k in 1 to 8 loop<br />

if (d and "00000001") = "00000001" then<br />

n := n + 1;<br />

end if;<br />

d := '0' & d(7 downto 1);<br />

end loop;<br />

num

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!