K述列 915NEXT语句 NEXT 第一种语句格式 NEXT LOOP标号; 第二种语句格式 NEXT LOOP标号WHEN条件表达式;-第三种语句格式 【例97】 【例9-6】 工x: FoR cnt va1ueIN1 To 8 LOOP L1: FOR cnt value in 1 to 8 sl: a(cnt value): =0 LOOP k 0 sl: a(cnt value): =0; NEXT When (b=c)i s2:b(k):='0'; s2: a(cnt value +8): =0 NEXT L X WHEN END LOOP LI (e>f); s3:b(k+8):="0'; k:=k+1 NEXT LOOP L y i NEXT LOOE工x;
KX 康芯科技 9.1.5 NEXT语句 NEXT; -- 第一种语句格式 NEXT LOOP标号; -- 第二种语句格式 NEXT LOOP标号WHEN条件表达式; -- 第三种语句格式 【例9-6】 ... 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; 【例9-7】 ... 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 ;
K述列 91.6EXIT语句 Ex工T 第一种语句格式 Ex工 T' LOOP标号; 第二种语句格式 EXIT LOOP标号WHEN条件表达式; 第三种语句格式 【例98】 s工GAa,b: STD LOGIC VECTOR(工 DOWNTO0) SIGNAL a less then b: Boolean; a less then b < FALSE 设初始值 FOR i IN 1 DOWINTO 0 LOOP IF (a(i)='l ANd b(i)=0 )THEN a less then b < FAlSe a>b ElSIF (a(i)=0 and b(i)=1)THEN a less then b < trUe a< b EXIT; ELSE NULL END工F; END LOOP 当=1时返回LOOP语句继续比较
KX 康芯科技 9.1.6 EXIT语句 EXIT; -- 第一种语句格式 EXIT LOOP标号; -- 第二种语句格式 EXIT LOOP标号WHEN条件表达式; -- 第三种语句格式 【例9-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语句继续比较
K述列 917WAI语句 WAIT; 第一种语句格式 AIT ON信号表 第二种语句格式 A工TUN乎工L条件表达式; 第三种语句格式 WAIT FOR时间表达式; 第四种语句格式,超时等待语句 【例99】 SIGNAL S1 S2 STD LOGIC PROCESS BEG工N WAIT ON S1, s2 END PROCESS 【例910】 (a)陋AI乎UI结构 (b) WAIT ON结构 Wait until enable=l Wait on enable EXIT WHEN enable =1 END LOOP
KX 康芯科技 9.1.7 WAIT语句 WAIT; -- 第一种语句格式 WAIT ON 信号表; -- 第二种语句格式 WAIT UNTIL 条件表达式; -- 第三种语句格式 WAIT FOR 时间表达式; -- 第四种语句格式, 超时等待语句 【例9-9】 SIGNAL s1,s2 : STD_LOGIC; ... PROCESS BEGIN ... WAIT ON s1,s2 ; END PROCESS ; 【例9-10】 (a) WAIT_UNTIL结构 (b) WAIT_ON结构 ... LOOP Wait until enable ='1'; Wait on enable; ... EXIT WHEN enable ='1'; END LOOP;
K述列 917WAI语句 一般地,只有 WAIT UNTII格式的等待语句可以被综合器接受(其余语 句格式只能在HDL仿真器中使用), WAIT UNTI语句有以下三种表达 方式 WAIT UNTIL信号= Value WAIT UNTIL信号 EVENT AND信号=Vaue; --(2) WAIT UNTIL NOT信号 STABLE AND信号= Value; 如果设cock为时钟信号输入端,以下四条WAIT语句所设的进程启动条 件都是时钟上跳沿,所以它们对应的硬件结构是一样的: WAIT UNTIL clock="1 WAIT UNTIL rising_edge(clock) WAIT UNTIL NOT clock STABLE AND clock =1 WAIT UNTIL Clock ="1 ANd clock' Event
KX 康芯科技 9.1.7 WAIT语句 一般地,只有WAIT_UNTIL格式的等待语句可以被综合器接受(其余语 句格式只能在VHDL仿真器中使用) ,WAIT_UNTIL语句有以下三种表达 方式: WAIT UNTIL 信号=Value ; -- (1) WAIT UNTIL 信号’EVENT AND 信号=Value; -- (2) WAIT UNTIL NOT 信号’STABLE AND 信号=Value; -- (3) 如果设clock为时钟信号输入端,以下四条WAIT语句所设的进程启动条 件都是时钟上跳沿,所以它们对应的硬件结构是一样的: WAIT UNTIL clock ='1'; WAIT UNTIL rising_edge(clock) ; WAIT UNTIL NOT clock’STABLE AND clock ='1'; WAIT UNTIL clock ='1' AND clock’EVENT;
【例9-11】 K述列 PROCESS BEG工N WAIT UNTIL clk =l'i ave <= ai WAIT UNT工Tc1k=11 ave < ave t ai WALT UNT工c1k 1 ave < ave t ai WAIT UNTIL clK =1 ave <=(ave a)/4 END PROCESS 【例912】 PROCESS BEG工N rst1o。p:ooP WAIT UNⅣTLc1ock=11,ANDc1ock′VNT; 等待时钟信号 NEXT rst loop When (rst=1)i 检测复位信号xst <=a; 无复位信号,执行赋值操作 WATT UNⅣTLc1ock=1,ANDc1ock′VNT; 等待时钟信号 NEXT rst loop When (rst=1)i 检测复位信号xt y <=b i 无复位信号,执行赋值操作 END LOOP rst1。op END PROCESS
KX 【例9-11】 康芯科技 ... PROCESS BEGIN WAIT UNTIL clk ='1'; ave <= a; WAIT UNTIL clk ='1'; ave <= ave + a; WAIT UNTIL clk ='1'; ave <= ave + a; WAIT UNTIL clk ='1'; ave <= (ave + a)/4 ; END PROCESS ; 【例9-12】 PROCESS BEGIN rst_loop : LOOP WAIT UNTIL clock ='1' AND clock’EVENT; -- 等待时钟信号 NEXT rst_loop WHEN (rst='1'); -- 检测复位信号rst x <= a ; -- 无复位信号,执行赋值操作 WAIT UNTIL clock ='1' AND clock’EVENT; -- 等待时钟信号 NEXT rst_loop When (rst='1'); -- 检测复位信号rst y <= b ; -- 无复位信号,执行赋值操作 END LOOP rst_loop ; END PROCESS;