VHDL Kompakt - CES
VHDL Kompakt - CES
VHDL Kompakt - CES
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