测试基本的JK触发器

时间:2013-11-13 00:08:09

标签: logic vhdl

我有一个等式(抱歉格式不佳,无法找到合适的符号):

  

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>

原理图如下:

schematic

然而,当我尝试使用此测试来模拟时,它完美地翻译了:

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参数或模拟首选项中的匹配条目增加迭代限制。

     

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

signals

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

1 个答案:

答案 0 :(得分:1)

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

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

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

你可以在T触发器零定时VHDL模型中得到相同的东西。