当信号不正确时,我的程序将暂停。但是,输入信号需要时间来重新生成,并且该过程重用旧信号。它导致代码停止,无法恢复操作。
例如
process(A,B,startRun)
begin
if (A = 1) then
case (B) is
when 0 =>
-- do something
when others =>
if(startRun = '1')then
halt <= '1';
end if;
end case;
else
-- do something else
end if;
end process;
我的问题是当A = 1时,但B是旧值,比如说1.在B成为新值后,halt总是设置为1.程序最终会停止。我该如何解决这个问题?
答案 0 :(得分:0)
我同意&#34; Jonathan Drolet&#34;。我无法看到您将信号halt
重置为零的位置。设置halt
后,它始终为1
,并且没有重置语句。
每当不需要暂停时,您可以使用else
语句将halt
重置为零:
process(A,B,startRun)
begin
if (A = 1) then
case (B) is
when 0 =>
halt <= '0';
-- do something
when others =>
if(startRun = '1')then
halt <= '1';
else
halt <= '0';
end if;
end case;
else
halt <= '0';
-- do something else
end if;
end process;
此外,您可以在流程开始时将halt
重置为0
,但如果(A = 1
和B /= 0
以及startRun = '1'
)确保设置{应用了{1}}到hlat
,因为在流程结束时应用了信号或端口分配:
1