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

2025-03-02 00:17:12
推荐回答(1个)
回答1:

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)

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

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