LOOP

Sequentielle Anweisungen – LOOP

ENTITY n_time_left_shift IS

GENERIC (n : natural := 2) ; -- Anzahl der Stellen
PORT (in_table : IN bit_vector (0 TO 31);
out_table : OUT bit_vector (0 TO 31)) ;

END n_time_left_shift ;

--------------------------------------------------------

ARCHITECTURE behavioral OF n_time_left_shift IS

BEGIN

PROCESS (in_table)

VARIABLE count : natural ;
VARIABLE table : bit_vector (0 TO 32) ; -- zus. Bit

BEGIN

count := 0 ;
table(0 TO 31) := in_table ;

n_time_loop : WHILE count < n LOOP

count := count + 1 ;
table(table'HIGH) := table(table'LOW) ;
left_shift_loop : FOR j IN table'LOW TO table'HIGH - 1 LOOP

table(j) := table(j+1) ;
END LOOP ;

END LOOP n_time_loop ;


out_table <= table(0 TO 31);

END PROCESS ;

END behavioral ;
Dieses Beispiel rotiert den Eingangsvektor in_table um n Stellen nach links und gibt den neuen Vektor über den Port out_table aus.

Die äußere Schleife ist eine WHILE-Schleife, deren innere sequentielle Anweisungen sooft durchlaufen werden, bis die vorgegebene Zahl an Schiebevorgängen (GENERIC n) durchgeführt worden sind.

Die innere Schleife ist aus FOR-Schleife ausgeführt und realisiert die Verschiebung des 32-bit breiten Vektors um jeweils eine Stelle.