打印

菜鸟弱问,关于VHDL

[复制链接]
1820|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
iceen|  楼主 | 2008-11-8 13:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用QuartusII编译说 
Error (10500): VHDL syntax error at ep111.vhd(49) near text "when"; expecting ";" 

程序如下:: 

library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
use IEEE.STD_LOGIC_ARITH.ALL; 
use IEEE.STD_LOGIC_UNSIGNED.ALL; 

entity ep111 is 
Port ( clk : in STD_LOGIC; 
reset : in STD_LOGIC; 
dir : in STD_LOGIC; 
A : out STD_LOGIC; 
B : out STD_LOGIC; 
C : out STD_LOGIC); 
end ep111; 

architecture Behavioral of ep111 is 
Signal abc : STD_LOGIC_VECTOR(2 DOWNTO 0); 
begin 

process(clk,reset) 
begin 
if rising_edge(clk) then 
if reset='1' then 
abc <= "100"; 
elsif dir='0' then 
abc <= "110" when abc="100" else 
--就是这里有问题 
"010" when abc="110" else 
"011" when abc="010" else 
"001" when abc="011" else 
"101" when abc="001" else 
"100" when abc="101" else 
"000"; 
elsif dir='1' then 
abc <= "101" when abc="100" else 
"001" when abc="101" else 
"011" when abc="001" else 
"010" when abc="011" else 
"110" when abc="010" else 
"100" when abc="110" else 
"000"; 
end if; 
end if; 
end process; 

A <= abc(2); 
B <= abc(1); 
C <= abc(0); 

end Behavioral;

相关帖子

沙发
g19860529| | 2008-11-9 12:32 | 只看该作者

可能是你的嵌套乱了

出错的地方你使用了when-else语句一方面esle也既可以when语句的关键词,也可以是elsif的关键词,这样就会出现混乱;另外process是顺序执行的语句,里面可能是不能用when-else这样的并行语句的。我把它改成了case-is-when编译后通过了
我也是刚学的,仅供参考

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

1

帖子

0

粉丝