VHDL模拟混乱

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';

我有一个条件,在这个条件下,某个变量将被设置为1。这是一个条件:

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;