0

我有一个方程式(抱歉格式不正确,找不到合适的符号):

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 )

示意图如下所示:

示意图

然而,当我尝试用这个测试来模拟它时,它可以完美地翻译:

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 增量计数溢出。使用 asim 的 -i 参数或模拟首选项中的匹配条目来增加迭代限制。

错误:模拟过程中发生致命错误。

信号

我对触发器相当缺乏经验,并且并不真正了解可能导致问题的原因,所以如果有人解释它,我会非常感激。

4

1 回答 1

1

在没有实际 VHDL 源的情况下,零时间建模的 JK 触发器会由于缺少复位或反馈路径中存在匹配延迟而发生增量周期振荡。请注意,这发生在 J 和 K 为高电平、Q 为高电平、nQ 为低电平的时钟下降沿。这是一个零延迟反馈循环,只要时钟为低电平,它就会继续。

使用定时门模型,在一个反馈路径(中间信号)上添加一个增量周期延迟,在 Q 或 nQ 之一上使用后延迟,或者如果两者都不匹配延迟。( Q <= expression1 after 400 ps; nQ <= expression2 after 401 ps;)。如果您添加匹配延迟,您实际上可以看到意外的门控触发振荡器在运行。

实际上,如果反馈路径有可能精确匹配,设备供应商将通过调整走线宽度、长度或晶体管尺寸来平衡延迟。

您可以在 T 触发器零定时 VHDL 模型中得到相同的结果。

于 2013-11-13T01:58:17.450 回答