永发信息网

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

答案:2  悬赏:20  手机版
解决时间 2021-03-25 13:28
VHDL中IF不考虑所有情况 会怎样
最佳答案
使用顺序代码设计组合电路时,必须遵守下面两个原则:
原则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

顺便问一下,你是在自学吗?这个应该有人会提醒你的啊?
全部回答
相当于else NULL;也就是当出现11时,啥也没有做。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
A7 手机铃声如何自定义?
发酵箱怎么用
来几个恐怖小段子睡不着的可以瞅瞅
为什么我每次烙饼都硬硬的,太难受了,不知哪
贵定县城关中学地址好找么,我有些事要过去,
石油被称为“工业的血液”,在能源、化工等领
安全是指什么意思?
做面包用的水是生水还是开水?
人为什么会肚子叫?
原有业务员在离开公司后,将大量客户拉拢到别
上3+2的大专证和高考的大专证一样吗?
根据统计图回答下列问题.(第④题列式计算)
沙发左转还是右转好,如图。
MBA难考吗,怎样才能一次性考上的呢
苹果手机真的是去其糠糟取其精华吗?未来的苹
推荐资讯
我似乎真的是太累了,哪怕因为工作上出点问题
500人去玩,怎样租车合算?需要租金多少钱?一
我逼男友删掉了前女友,我让他很失望,说了有
为什么江浙一带食物偏甜呢?
120项链4孔可以弄什么浮石.LG用的
10-4(x-3)≤2(x-1)
解方程x-x除以10等于2.52
对500Hz的正弦信号 进行采样,采样频率 ,总
茅箭区十堰市气象局财务核算中心地址在哪,我
气象站对气温的观测,每天通常要进行A.三次B.
购买家具交完订金后是先送货安装还是先付全款
请问一下那里有男仕服装批发,价格都在3O元以
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?