以下VHDL代码什么意思?急!

a<=‘1’;b<=xxorz;caseciswhen“00”=>a<=xory;when“01”=>b<=y;whenothers=>a<=c(1);endcase;(... a <= ‘1’; b <= x xor z;
case c is
when “00” => a <= x or y;
when “01” => b <= y;
when others => a <= c(1);
end case;
(1).为什么以上代码能变成:
a <= (not c(0) and not c(1) and (x or y)) or c(0) or c(1);
b <= ((c(1) or not c(0)) and (x xor z))or (not c(1) and c(0) and y;
(2).请问这其中c(1)和c(0)是什么意思?
展开
 我来答
清河大侠
2018-04-04 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.6万
采纳率:100%
帮助的人:1191万
展开全部

VHDL是较常用的硬件描述语言。它的主要功能就是对硬件进行“逻辑”表达。

case c is
when “00” => a <= x or y;
when “01” => b <= y;
when others => a <= c(1);
end case;

上面这段代码包含了一个信息:
信号c,是个2-bit的bus,通常定义可能是:

c(1 downto 0)

这样就回答了你的问题(2):
c(1)    是总线c的高位
c(0)    是总线c的低位

回到那个代码本身,“case”和“endcase”中间,描述了
a, b, x, y和c的逻辑关系。分析那3条“when”可以发现:

1.   当c(1) = 0时,
1.1    c(0) = 0时,a = (x or y)
1.2    c(1) = 1时,b = (y)
2.   当c(1) = 1时,
a = c(1)

然后把上面的分析整理一下,就可以知道a,b实际和c以及x,y的逻辑关系。注意上面的描述中:
c(0) = 0
对应的VHDL代码是:
and not c(0)

这样就解释了你的第一个问题。

希望我说明白了,仔细换个角度想一想,不是很难。谢谢。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式