以下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)是什么意思? 展开
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)是什么意思? 展开
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)
这样就解释了你的第一个问题。
希望我说明白了,仔细换个角度想一想,不是很难。谢谢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询