关于VHDL语言的一个错误

entitychooser21isPort(a:inSTD_LOGIC;b:inSTD_LOGIC;s:inSTD_LOGIC;y:outSTD_LOGIC);endch... entity chooser21 is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
s : in STD_LOGIC;
y : out STD_LOGIC);
end chooser21;
architecture Behavioral of chooser21 is
begin
y <= a when s = '1' else
y <= b when s = '0';
end Behavioral;

关于“y <= b when s = '0'”,错误提示是这样,
ERROR:HDLCompiler:288 - "D:\ISE Project Location\Chooser2-1\chooser2-1.vhd" Line 43: Cannot read from 'out' object y ; use 'buffer' or 'inout'

ERROR:HDLCompiler:1731 - "D:\ISE Project Location\Chooser2-1\chooser2-1.vhd" Line 43: found '0' definitions of operator "<=", cannot determine exact overloaded matching definition for "<="

不是很能理解
展开
 我来答
nereus78e904
2012-08-14 · TA获得超过1.5万个赞
知道大有可为答主
回答量:5463
采纳率:90%
帮助的人:1932万
展开全部
这个语句是个并行信号赋值语句,因此在这个并行语句当中,只能对y赋值一次,也就是说,在这个语句当中只能存在一个赋值号“<=”。
你的描述中,一个并行赋值语句却存在两个赋值号,所以出现错误。
threegn
2012-08-13 · TA获得超过147个赞
知道答主
回答量:83
采纳率:0%
帮助的人:49.6万
展开全部
很简单哦,把程序改为:y <= a when s = '1' else b;
追问
嗯,谢谢,答案我知道了,但是我不是很清楚为什么这个写法是错的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式