05.07.2013 Aufrufe

VHDL Kompakt - CES

VHDL Kompakt - CES

VHDL Kompakt - CES

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.

5.1 Anweisungen<br />

Loop Modellierung verschiedener Schleifen. Neben der Vereinfachung von Ausdrücken,<br />

lassen sich so auch Wiederholungen von Strukturen, beispielsweise der Bitbreite entsprechend,<br />

beschreiben.<br />

Syntax<br />

[ 〈label〉:] while 〈expression〉 loop | boole’sche Bedingung<br />

for 〈rangeVar〉 in 〈range〉 loop | Schleifenvariable, Wertebereich<br />

loop beliebig oft<br />

〈sequential statements〉<br />

end loop [ 〈label〉 ];<br />

Die Laufvariable der for-Schleife muss nicht extra deklariert werden; 〈loopVariable〉<br />

gilt als lokale Variable in der Schleife; Zuweisungen sowie externer Zugriff sind nicht<br />

möglich.<br />

Next bewirkt den vorzeitigen Abbruch eines Schleifendurchlaufs, die zusätzliche Angabe<br />

einer Bedingung ist möglich.<br />

Syntax<br />

[ 〈label〉:] next [ 〈loop label〉 ] [when 〈condition〉 ];<br />

Beispiel<br />

L1: for I in 1 to ITER_MAX loop äußere Schleife<br />

SUM := 0;<br />

L2: while SUM < SUM_MAX loop innere Schleife<br />

...<br />

next L1 when SUM < 0; Sprung, neue Iteration<br />

...<br />

end loop L2;<br />

...<br />

end loop L1; Sprungziel<br />

Exit Sprung aus einer Schleife, optionale Bedingung.<br />

Syntax<br />

[ 〈label〉:] exit [ 〈loop label〉 ] [when 〈condition〉 ];<br />

Beispiel<br />

A_IND := -1;<br />

for I in Q’range loop<br />

if (Q(A_IND) = A) then A_IND := I;<br />

exit; Sprung aus Schleife<br />

end if;<br />

end loop;<br />

if (A_IND = -1) ... Sprungziel<br />

33

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!