(1) 无条件loop语句
  无条件loop语句是简单循环语句,其中包含一个无限循环执行的语句集,其形式为;
    标号:loop
      语句;
    end loop 标号;
  循环标号是可选项。从语法上讲,循环体中的语句中还可以有循环语句,因而在一个循环语句里可以嵌套另外的循环语句。
  如果语句中没有exit语句,则这样的循环语句无限循环,不会停止。但exit语句可以使它结束循环,参看下面的exit语句的介绍。

  (2) forloop语句
  forloop语句类似于程序设计语言的for 语句。循环次数由一个离散范围的循环变量来控制。其形式为:
    标号:for 循环变量 in 离散范围 loop
       语句;
    end loop [标号];
  循环变量由离散范围确定其类型,无需声明。循环变量可用在循环体中,但一旦循环结束,循环变量不再起作用,即不能把循环变量的值带到循环体外。标号可以省略。离散范围的表示与数组类型下标范围定义相同。可以用to,downto,和表示离散范围的属性T'Range等。

  (3) whileloop语句
  while循环的条件是布尔类型。并且在条件为假时结束循环。while循环语句的一般形式是:
    标号:while 条件表达式 loop
       语句;
    end loop 标号;
  每次执行完循环体之后,都要检测条件表达式的值是真还是假。只要其值为真,就要在执行一次循环体内的语句。

  (4) next语句
  该语句控制循环提前进入下一次循环,即跳过该语句后面的语句执行指定标号的下一个循环

    next [标号] [when 条件];

  循环标号与条件都是可选项。执行了next语句之后.控制就转到由循环标号标识的循环体的尾部(如果未给出循环标号,就转到当前循环的尾部),并且开始新的一次循环。for循环通过循环变量的递增来控制循环,而while循环则通过不断地测试所给的条件,从而达到控制循环的目的。如果next语句有判断条件,则对条件进行测试,并且测试结果为真时,就退出当前一轮循环,同时进入下一轮迭代;若测试结果为假,则不执行next语句,直接执行该语句后面的语句。
  若不指定标号,指当前的循环。若指定了条件,则在不满足条件的情况下该语句无效。


  (5) exit语句
  exit语句使得从循环标号所标明的循环中退出。
    exit [标号] [when 条件] ;
  如果指定条件,必须要在所绐条件为真的前提下,才从循环标号所标明的循环中退出。两种情况下的循环标号都是可选项。如果语句中末给出循环标号,则从当前循环中退出。
  例:
    signal S: Integer;
    process (S)
     variable B: Integer := 1;
    begin
      B := 100;
      loop1:
      for A in 10 downto 1 loop
        loop2:
        while B >= (A*A) loop
           B := B-A;
        end loop loop2;
        …;
      end loop loop1;
      S <= …;
    end process;

  上例中loop2部分等价于:
    loop2:
      loop
        B := B-A;
        next loop1 when B<(A*A);
      end loop loop2;