菜鸟弱问,关于VHDL

[复制链接]
 楼主| iceen 发表于 2008-11-8 13:18 | 显示全部楼层 |阅读模式
用QuartusII编译说&nbsp;<br />Error&nbsp;(10500):&nbsp;VHDL&nbsp;syntax&nbsp;error&nbsp;at&nbsp;ep111.vhd(49)&nbsp;near&nbsp;text&nbsp;&quot;when&quot;;&nbsp;expecting&nbsp;&quot;;&quot;&nbsp;<br /><br />程序如下::&nbsp;<br /><br />library&nbsp;IEEE;&nbsp;<br />use&nbsp;IEEE.STD_LOGIC_1164.ALL;&nbsp;<br />use&nbsp;IEEE.STD_LOGIC_ARITH.ALL;&nbsp;<br />use&nbsp;IEEE.STD_LOGIC_UNSIGNED.ALL;&nbsp;<br /><br />entity&nbsp;ep111&nbsp;is&nbsp;<br />Port&nbsp;(&nbsp;clk&nbsp;:&nbsp;in&nbsp;STD_LOGIC;&nbsp;<br />reset&nbsp;:&nbsp;in&nbsp;STD_LOGIC;&nbsp;<br />dir&nbsp;:&nbsp;in&nbsp;STD_LOGIC;&nbsp;<br />A&nbsp;:&nbsp;out&nbsp;STD_LOGIC;&nbsp;<br />B&nbsp;:&nbsp;out&nbsp;STD_LOGIC;&nbsp;<br />C&nbsp;:&nbsp;out&nbsp;STD_LOGIC);&nbsp;<br />end&nbsp;ep111;&nbsp;<br /><br />architecture&nbsp;Behavioral&nbsp;of&nbsp;ep111&nbsp;is&nbsp;<br />Signal&nbsp;abc&nbsp;:&nbsp;STD_LOGIC_VECTOR(2&nbsp;DOWNTO&nbsp;0);&nbsp;<br />begin&nbsp;<br /><br />process(clk,reset)&nbsp;<br />begin&nbsp;<br />if&nbsp;rising_edge(clk)&nbsp;then&nbsp;<br />if&nbsp;reset='1'&nbsp;then&nbsp;<br />abc&nbsp;&lt=&nbsp;&quot;100&quot;;&nbsp;<br />elsif&nbsp;dir='0'&nbsp;then&nbsp;<br />abc&nbsp;&lt=&nbsp;&quot;110&quot;&nbsp;when&nbsp;abc=&quot;100&quot;&nbsp;else&nbsp;<br />--就是这里有问题&nbsp;<br />&quot;010&quot;&nbsp;when&nbsp;abc=&quot;110&quot;&nbsp;else&nbsp;<br />&quot;011&quot;&nbsp;when&nbsp;abc=&quot;010&quot;&nbsp;else&nbsp;<br />&quot;001&quot;&nbsp;when&nbsp;abc=&quot;011&quot;&nbsp;else&nbsp;<br />&quot;101&quot;&nbsp;when&nbsp;abc=&quot;001&quot;&nbsp;else&nbsp;<br />&quot;100&quot;&nbsp;when&nbsp;abc=&quot;101&quot;&nbsp;else&nbsp;<br />&quot;000&quot;;&nbsp;<br />elsif&nbsp;dir='1'&nbsp;then&nbsp;<br />abc&nbsp;&lt=&nbsp;&quot;101&quot;&nbsp;when&nbsp;abc=&quot;100&quot;&nbsp;else&nbsp;<br />&quot;001&quot;&nbsp;when&nbsp;abc=&quot;101&quot;&nbsp;else&nbsp;<br />&quot;011&quot;&nbsp;when&nbsp;abc=&quot;001&quot;&nbsp;else&nbsp;<br />&quot;010&quot;&nbsp;when&nbsp;abc=&quot;011&quot;&nbsp;else&nbsp;<br />&quot;110&quot;&nbsp;when&nbsp;abc=&quot;010&quot;&nbsp;else&nbsp;<br />&quot;100&quot;&nbsp;when&nbsp;abc=&quot;110&quot;&nbsp;else&nbsp;<br />&quot;000&quot;;&nbsp;<br />end&nbsp;if;&nbsp;<br />end&nbsp;if;&nbsp;<br />end&nbsp;process;&nbsp;<br /><br />A&nbsp;&lt=&nbsp;abc(2);&nbsp;<br />B&nbsp;&lt=&nbsp;abc(1);&nbsp;<br />C&nbsp;&lt=&nbsp;abc(0);&nbsp;<br /><br />end&nbsp;Behavioral;
g19860529 发表于 2008-11-9 12:32 | 显示全部楼层

可能是你的嵌套乱了

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

本版积分规则

2

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部