In loop statement, label is optional. In this statement iterative scheme is used. The
iterative schemes used in loop statement are, 1) loop, 2) while...loop, and 3)
for...loop. Next and exit statements are used in loop. Sequential statements
are mainly implemented inside the loop. The next statement skips the remainder.
The syntax is :
[iteration_scheme] loop
{ statement }
{ next [
label ] [ when condition ] ; }
{ exit [
label ] [ when condition ] ; }
end loop;
1) Basic Loop : The basic loop statement do not have iteration scheme. It executes the statements unless and until exit or next statement are found. The syntax is :
loop
{ statements }
end loop;
Example :
for i in DR loop
-- Statements..
end loop;
2) While...loop : In while...loop if the condition evaluates true the loop is executed. The condition is repetitively calculated unless and until condition is true. When the condition is false, the loop is terminated. The syntax is : while condition
loop
{
statements }
end;
Example :
process begin while ef= 1 and test /= '1 loop clk <= not clk; wait for clk_time/4; end loop; end process;
3) For...loop :
The for loop has fixed number of iterations. The for loop has automatic declaration for index. You do not need to separately declare the index variable. The loop should not have numeric types and values. A for...loop statement have integer variable declared with the identifier. The identifier receives the first value of range, and the sequence of statements executes once. The syntax is :
for
identifier in range loop
{
statement }
end
loop;
Example :
library ieee;
use
ieee.std_logic_1164.all;
entity test is
port (D: in std_logic_vector(0
to 9);
DD:
out
std_logic);
constant WIDTH: integer := 10;
end test;
architecture behave of test is
begin
process(D)
variable otmp: Boolean;
begin
ot
:= false;
for i in 0 to D'length - 1 loop
if D(i) = '1' then
ot
:= not ot;
end
if;
end
loop;
if otmp then
DD
<= '1';
else
DD
<= '0';
end
if;
end
process;
end behave;