MAXPLUS II编译时LOOP语句的使用
本帖最后由 fpgaw 于 2010-7-6 05:23 编辑在PROCESS中使用EXIT语句可以吗?如下例
lp1: FOR i IN 0 TO 7 LOOP
IF inp(i)='1' THEN inp(i )<='0';
ELSE inp(i)<='1';EXIT lp;
END IF;
END LOOP;
可使用MAXPLUS II编译时为什么总出错? 好像exit只能跳出本循环语句lp1 谢谢!<br>
我是想退出LP1,但问题是编译时给出如下的错误信息:<br>
Unsupported feature error:a next or an exit statement is supported only in an uncomditional loop.<br>
我不明白是MAXPLUS本来就不支持这种写法,还是我的MAXPLUSII有问题? lp1: FOR i IN 0 TO 7 LOOP<br>
IF inp(i)='1' THEN inp(i )<='0';<br>
ELSE inp(i)<='1'; EXIT lp1;<br>
END IF;<br>
END LOOP;<br>
不是你的防真器出错你的exit后面应该是lp1,那样你只执行一次循环,你想执行什么功能啊<br>
如果想跳出本次循环那就用关键字next。 想实现补码的转换,实际上主要是想看看LOOP语句的用法。源代码全文如下:<br>
LIBRARY IEEE;<br>
USE IEEE.Std_logic_1164.ALL;<br>
ENTITY inve IS<br>
PORT(inp:IN Std_logic_vector(7 DOWNTO 0);<br>
qout:OUT Std_logic_vector(7 DOWNTO 0));<br>
END inve;<br>
ARCHITECTURE str OF inve IS<br>
BEGIN<br>
<br>
PROCESS(inp)<br>
VARIABLE n_inp:std_logic_vector(7 DOWNTO 0);<br>
BEGIN<br>
n_inp:=inp;<br>
IF (inp(7)='1') THEN <br>
FOR I IN 7 DOWNTO 0 LOOP<br>
n_inp(I):=NOT n_inp(I);<br>
END LOOP; --最高位为‘1’,取反<br>
Loop1:FOR I IN 0 TO 7 LOOP<br>
IF (n_inp(I)='1' )THEN n_inp(I):='0';<br>
ELSE n_inp(I):='1'; <br>
EXIT loop1;<br>
END IF;<br>
END LOOP; --末位加‘1’<br>
END IF;<br>
qout<=n_inp;<br>
END PROCESS;<br>
END str;<br>
<br>
谢谢指教!!! EXIT loop1;你的循环标志号要和前面的一样<br>
<br>
LIBRARY IEEE;<br>
USE IEEE.Std_logic_1164.ALL;<br>
ENTITY inve IS<br>
PORT(inp:IN Std_logic_vector(7 DOWNTO 0);<br>
qout:OUT Std_logic_vector(7 DOWNTO 0));<br>
END inve;<br>
ARCHITECTURE str OF inve IS<br>
BEGIN<br>
<br>
PROCESS(inp)<br>
VARIABLE n_inp:std_logic_vector(7 DOWNTO 0);<br>
BEGIN<br>
n_inp:=inp;<br>
IF (inp(7)='1') THEN <br>
FOR I IN 7 DOWNTO 0 LOOP<br>
n_inp(I):=NOT n_inp(I);<br>
END LOOP; --最高位为‘1’,取反<br>
Loop1:FOR I IN 0 TO 7 LOOP<br>
IF (n_inp(I)='1' )THEN n_inp(I):='0';<br>
ELSE n_inp(I):='1'; EXIT Loop1; <br>
END IF;<br>
<br>
END LOOP; --末位加‘1’<br>
END IF;<br>
qout<=n_inp;<br>
END PROCESS;<br>
END str;<br>
这样就可以了 不过你这个补码程序有错误!!完成不了补码功能,自己找找呵呵<br>
对你有好处!!
页:
[1]