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)
这样就解释了你的第一个问题。
希望我说明白了,仔细换个角度想一想,不是很难。谢谢。