VHDL中IF不考虑所有情况 会怎样

比如只考虑了000110if中没用else11情况如何处理?... 比如只考虑了00 01 10if中没用else

11情况如何处理?
展开
 我来答
百度网友bf0869e
2014-11-21 · TA获得超过141个赞
知道小有建树答主
回答量:144
采纳率:100%
帮助的人:47.2万
展开全部
使用顺序代码设计组合电路时,必须遵守下面两个原则:
原则1:确保在PROCESS中用到的所有输入信号都出现在敏感信号列表中;
原则2:确保所有输入、输出的所有组合,也就是说,电路的真值表必须在代码中完整地反映出来。
给你举个例子:

我们要完成如下真值表所示的电路(是一个多路复用器)
sel x y
00 a 0
01 b 1
10 c
11 d
(真值表1)
用顺序代码设计:
library ieee;
use ieee.std_logic_1164.all;

entity example is
port(a,b,c,d:in std_logic;

sel: in iteger range 0 to 3;

x,y:out std_logic);

end example;

architecture bh of example is
begin
process(a,b,c,d,sel)

begin

if(sel=0)then

x<=a;

y<='0';

elseif(sel=1)then

x<=b;

y<='1';

elseif(sel=2)then

x<=c;

elsif

x<=d;

end if;
end process;

end bh;

上面的代码经过编译后,报告中并没有显示有锁存器生成。然而,仿真时,y的波形可能存在异常。对于同样的输入,y出现两种不同的输出值(当两次出现sel=3时,y的输出结果不同)。这表明编译时的确生成了某种记忆单元。事实上,如果观察QuartusII综合的结果,会发现y=(sel(0)and sel(1))or(sel(0)and y)or(sel(1)and y),这里面隐含着一个由与门和或门组成的锁存器,它造成了y的记忆。
为了避免生成锁存器,需要使用如下真值表,其中使用了'X'来表示“不确定”或“不需要考虑”。这样就可以消除异常。
sel x y
00 a 0
01 b 1
10 c X
11 d X

顺便问一下,你是在自学吗?这个应该有人会提醒你的啊?
nereus78e904
2014-11-22 · TA获得超过1.5万个赞
知道大有可为答主
回答量:5463
采纳率:90%
帮助的人:1976万
展开全部
相当于else NULL;也就是当出现11时,啥也没有做。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式