VHDL模拟混乱
我有一个条件,在这个条件下,某个变量将被设置为1。这是一个条件:VHDL模拟混乱,vhdl,wait,alarm,Vhdl,Wait,Alarm,我有一个条件,在这个条件下,某个变量将被设置为1。这是一个条件: process(key, belt) is begin alarm <='0'; if key ='1' then if Seconds > 4 and belt ='0' then alarm <='1'; else alarm <='0';
process(key, belt) is
begin
alarm <='0';
if key ='1' then
if Seconds > 4 and belt ='0' then
alarm <='1';
else
alarm <='0';
end if;
end if;
end process;
过程(钥匙、皮带)是
开始
报警4和皮带class='0',然后
报警当灵敏度列表中的一个信号发生变化时,您的进程将运行一次。因为秒不在敏感度列表中,单纯的时间流逝不会触发你的过程
它看到的情况如下:
在时间0时更换钥匙和皮带。您的进程正在运行,钥匙在点火开关中,但没有经过4秒,因此没有报警
6秒钟后更换皮带,皮带已系上,因此钥匙已插入,皮带已系好。没有警报
钥匙在7秒时拔出点火开关。点火开关中没有钥匙,因此没有报警
10秒后更换皮带。皮带被取下,但钥匙不在点火开关中,因此没有报警
14秒时更换钥匙(!)。安全带仍处于关闭状态,钥匙处于点火状态,时间大于4秒(14秒)。警报处于激活状态
你应该发一封信。我现在只能看到Seconds
丢失了过程灵敏度。你能帮我一下吗?间接指向为什么这里有问答指南。成功的问题是未来读者的搜索资源,他们应该能够理解问题和解决方案,并找到问题。没有人可能会搜索“VHDL模拟混乱”或“你能帮我一把吗?”缺少一种方法无法验证答案,只是猜测。根据列出的第一个过程,前14秒似乎是正确的行为。请注意,两个测试台进程的间隔分别为14秒和10秒。钥匙和皮带的相对位置发生变化,并将产生报警。
process is
begin
key<='1';
wait for 7000 ms;
key<='0';
wait for 7000 ms;
end process;
--simluate beltOn after 6sec
process is
begin
belt<='0';
wait for 6000 ms;
belt<='1';
wait for 4000 ms;
end process;