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.
|