图3.14 模拟运行过程举例





(c) 模拟时事项处理表的运行过程

  参看图3.10c模拟事项处理表。当t = 0时,有外部输入的事项处理(a, '0', 0), (b, '0', 0),还有作为初始值其它各点的信号事项处理(c, '0', 0), (d, '0', 0), (e, '0', 0), (f, '0', 0)。 各信号当前值均为'0'。事项处理(a, '0', 0), (b, '0', 0)引起C计算,得(c, '1', 3);(b, '0', 0), 还引起D计算,得(d, '1', 2);(c, '0', 0), (d, '0', 0)引起E计算,得(e,'0', 4);(c, '0', 0), (e, '0', 0)引起F计算,得(f, '1' 3)。计算完毕,将当前事项处理删除(图中未做删除标志,但应认为已不存在)。
  当t = 1时,无外部输入事项处理,也无当前事项处理。于是时钟直接走到下一周期,t = 2。
  当t = 2时,有当前事项处理(d, '1', 2),接收状态值d = '1',其余信号值不变。该事项处理引起E计算,因此时c='0',故得新事项处理(e, '1',6)。注意此时事项处理表中存在事项处理(e, '0', 4),属惯性延迟冲突,应将(e, '0', 4)删除,安排(e, '1',6)。
  当t = 3时,有(c, '1', 3), (f, '1', 3)两个事项处理,接收新状态值c = '1', f = '1'。c引起E, F的计算,得(e,'0', 7),(f, '1' , 6)。这时可看到(e, '1' 6)属惯性延迟,删除(e, '1',6),安排(e, '0', 7),(f, '1', 6)。
  当t = 4时, 无当前事项处理。
  当t = 5时, 有外部输入信号事项处理(a, '1', 5),接收a = '1',引起C计算,得(c, '1',8)。
  当t = 6时,有事项处理(f, '1' , 6)。此时f值未变,删除该事项处理。
  当t = 7时,有事项处理(e, '0', 7),此时e值未变,删除该事项处理。
  当t = 8时,有事项处理(c, '1' , 8)。此时c值未变,删除该事项处理。
  当t = 10时, 有外部输入信号事项处理(b, '1', 10),接收b = '1',引起C, D计算,得(c,'0',13), (d,'0',12)。
  当t = 12时,有外部输入信号事项处理(a, '0', 12),有事项处理(d, '0' , 12),接收a = '0', d = '0',引起C, E计算,得(e, '1',16), (c, '1', 15)。这时(c,'0',13)属惯性延迟,删除(c,'0',13)。
  当t = 15时,有事项处理(c, '1', 16)。c值未变,删除。
  当t = 16时,有事项处理(e, '1',16)。接收e = '1',引起F计算,得(f, '0',19)。
  当t = 18时, 有外部输入信号事项处理(a, '1', 18),接收a = '1',引起C计算,得(c, '0',21)。
  当t = 19时, 有事项处理(f, '0',19),接收f = '0',无需要计算的元件。
  当t = 20时, 有外部输入信号事项处理(b, '0', 20),接收b = '0',引起C, D计算,得(c,'1',23), (d,'1',22)。这时(c,'0',21)属惯性延迟,删除(c,'0',21)。
  当t = 22时, 有事项处理(d, '1', 22),接收d = '1',引起E计算,得(e, '0',26)。
  当t = 23时,有事项处理(c, '1' , 23)。此时c值未变,删除该事项处理。
  当t = 26时, 有事项处理(e, '0', 26),接收e = '0',引起F计算,得(f, '1',29)。
  当t = 29时, 有事项处理(f, '1',29),接收f = '1',无需要计算的元件。
  此时,已无任何未处理事项处理,模拟结束。