我有一个等式(抱歉格式不佳,无法找到合适的符号):
Q t x 1 ∨!x 1 ((x 2 ⊕ x 3 )∨!x 4 )Q t ∨(x 2 ∧ !x 3 ∨x 4 )!Q t )
假设这是JK触发器:
C =!x 1
J =(x 2 ∧!x 3 ∨x 4 )
K =(x 2 ⊕x 3 )∨!x 4
Q t !C∨!x 1 (!KQ t ∨J!Q t )< / p>
原理图如下:
然而,当我尝试使用此测试来模拟时,它完美地翻译了:
clock_proc : process begin -- synchro signal
x1 <= '0';
wait for 4 ns;
x1 <= '1';
wait for 4 ns;
end process ;
reset_proc : process begin -- reset
reset <= '0';
wait for 4 ns;
reset <= '1';
wait ;
end process ;
test_proc : process begin -- triggers
x2 <= '0'; x3 <= '0'; x4 <= '0'; --write 0
wait for 10 ns;
x2 <= '0'; x3 <= '1'; x4 <= '1'; --save
wait for 10 ns;
x2 <= '1'; x3 <= '1'; x4 <= '1'; --write 1
wait for 10 ns;
x2 <= '1'; x3 <= '0'; x4 <= '1'; --save
wait for 10 ns;
x2 <= '0'; x3 <= '0'; x4 <= '1'; --inverse
wait for 10 ns;
x2 <= '0'; x3 <= '1'; x4 <= '1'; --save
wait for 10 ns;
end process ;
end TB_ARCHITECTURE;
我得到的只是这个错误:
KERNEL:错误:KERNEL_0160 Delta计数溢出。使用asim的-i参数或模拟首选项中的匹配条目增加迭代限制。
错误:模拟过程中发生致命错误。
我对触发器相当缺乏经验,并且不太了解可能导致问题的原因所以如果有人解释的话,我会感到非常满意。
答案 0 :(得分:1)
在没有实际的VHDL源的情况下,由于缺少复位或者在反馈路径中具有匹配延迟,在零时间建模的JK触发器中发生Δ循环振荡。请注意,这发生在时钟的下降沿,J和K均为高电平,Q为高电平,nQ为低电平。这是一个零延迟反馈环路,只要时钟为低电平就会继续。
使用定时门模型,在一个反馈路径(中间信号)上添加增量循环延迟,在Q或nQ之一上使用延迟,或者如果两者都不匹配延迟。 (Q <= expression1 after 400 ps; nQ <= expression2 after 401 ps;
)。如果添加匹配延迟,您实际上可以看到意外的门控打击振荡器。
实际上,如果反馈路径有可能精确匹配,设备供应商将通过播放走线宽度,长度或晶体管尺寸来平衡延迟。
你可以在T触发器零定时VHDL模型中得到相同的东西。