【例7-5】SIGNAL a, b, c : STD LOGIC_VECTOR (1 TO 3);此段程序等效于顺序执行以下FORnIN1TO3LOOP三个信号赋值操作:a(n) <= b(n) AND c(n);END LOOP;a(1)<=b(1) AND c(1);a(2)<=b(2) AND c(2);a(3)<=b(3) AND c(3);注意:LOOP循环的范围最好以常数表示,否则LOOP体内的逻辑可以重复任何可能的范围,将导致消耗过大的硬件资源
【例7-5】 SIGNAL a, b, c : STD_LOGIC_VECTOR (1 TO 3); . FOR n IN 1 TO 3 LOOP a(n) <= b(n) AND c(n); END LOOP; 此段程序等效于顺序执行以下 三个信号赋值操作: a(1)<=b(1) AND c(1); a(2)<=b(2) AND c(2); a(3)<=b(3) AND c(3); 注意:LOOP循环的范围最好以常数表示,否则 LOOP体内的逻辑可以重复任何可能的范围,将导致 消耗过大的硬件资源
7.1.5NEXT语句口第一种语句格式:无条件跳转到前面LOOP语句的起始点;NEXT;口第二种语句格式:无条件跳转到前面LOOP标号语句的起始点:NEXTLOOP标号:口第三种语句格式:条件为Ture时,跳转到前面LOOP标号语句的起始点;NEXTLOOP标号WHEN条件表达式:
7.1.5 NEXT语句 第 一 种 语 句 格 式 : 无 条 件 跳 转 到 前 面 LOOP语句的起始点; NEXT; 第 二 种 语 句 格 式 : 无 条 件 跳 转 到 前 面 LOOP标号语句的起始点; NEXT LOOP 标号; 第三种语句格式:条件为Ture时,跳转到 前面LOOP标号语句的起始点; NEXT LOOP 标号 WHEN 条件表达式;
NEXT语句【例7-7】多层LOOP循环,LOOP【例7-6单层LOOP循环,可省去关标号不可省!键词NEXT与WHEN之间的“LOOP标号”L x: FORcnt valueIN1TO8LOOPL1:FORcnt valueIN1TO8LOOPsl:a(cnt value):='0:sl:a(cnt value):='o';k:=0;NEXT WHEN (b=c);L_y:LOOPs2:a(cnt value+8):='0';$2:b(k) :='0';ENDLOOPL1;NEXTL X WHEN (e>f);$3:b(k+8) := *0';k := k+1;NEXTLOOPL_Y;NEXTLOOP L X ;
NEXT语句 【例7-6】单层LOOP循环,可省去关 键词NEXT与WHEN之间的“LOOP标 号” 。 . L1 : FOR cnt_value IN 1 TO 8 LOOP s1:a(cnt_value) := '0'; NEXT WHEN (b=c); s2:a(cnt_value + 8 ):= '0'; END LOOP L1; 【例7-7】多层LOOP循环,LOOP 标号不可省! . L_x: FOR cnt_value IN 1 TO 8 LOOP s1: a(cnt_value):= '0'; k := 0; L_y: LOOP s2: b(k) := '0'; NEXT L_x WHEN (e>f); s3: b(k+8) := '0'; k := k+1; NEXT LOOP L_y ; NEXT LOOP L_x ;
7.1.6EXIT语句口第一种语句格式:无条件跳转到LOOP语句的结束处;EXIT;口第二种语句格式:无条件跳转到LOOP标号语句的结束处;EXITLOOP标号;口第三种语句格式:条件为Ture时,跳转到LOOP标号语句的结束处;EXITLOOP标号WHEN条件表达式:
7.1.6 EXIT语句 第一种语句格式:无条件跳转到LOOP语 句的结束处; EXIT; 第二种语句格式:无条件跳转到LOOP标 号语句的结束处; EXIT LOOP 标号; 第三种语句格式:条件为Ture时,跳转到 LOOP标号语句的结束处; EXIT LOOP 标号 WHEN 条件表达式;
EXIT语句【例7-8】SIGNALa,b:STD LOGIC_VECTOR(1DOWNTO0);SIGNALa less then b:Boolean;--设初始值a less then b<=FALSE:FORiIN1DOWNTOOLOOPIF(a(i)-'I'ANDb(i)='O)THEN--a>ba less then b<=FALSE:EXIT :ELSIF(a(i)='0'ANDb(i)-'1)THEN--a<ba less then b<=TRUE;EXIT;ELSENULL;ENDIF:ENDLOOP;“-当i=1时返回LOOP语句继续比较
EXIT语句 【例7-8】 SIGNAL a, b : STD_LOGIC_VECTOR (1 DOWNTO 0); SIGNAL a_less_then_b : Boolean; . a_less_then_b <= FALSE ; - 设初始值 FOR i IN 1 DOWNTO 0 LOOP IF (a(i)='1' AND b(i)='0') THEN a_less_then_b <= FALSE ; - a > b EXIT ; ELSIF (a(i)='0' AND b(i)='1') THEN a_less_then_b <= TRUE ; - a < b EXIT; ELSE NULL; END IF; END LOOP; - 当 i=1时返回LOOP语句继续比较