运行结果的波形图如图2.24所示。
图2.24 波形结果图

|
执行过程解释:
该电路共有6个信号,其中2个输入信号: Clk, Cin; 2个输出信号: Cout,
Bout; 2个内部信号: ExorOut, DffOut,即可作为信号赋值语句的输入,也可作为其输出。电路的行为描述中共有3个并行信号赋值语句:
L1, L2, L3,可看成3个进程; 1个进程语句。L1,L2,L3的敏感信号分别为其右边表达式中的各信号;进程的敏感信号指定为Clk,与其中信号赋值语句的右边的信号ExorOut无关。其中所有的语句都无时间延迟的指定,故均为d延迟。外部输入信号为带时间延迟的激励波形指定。时钟按照激励波形指定中的时刻由小到大前进。在每一个时钟步,要按d延迟前进。
模拟开始,t=0ns:假定所有信号的初值均为0。根据进程的执行规则,所有进程都激活,4个语句都是活跃进程,即执行所有4个并行语句。这时,前3个语句分别使3个信号值为0,延迟时间为δ,分别记在相应的事项处理表中。L4中,因为if语句中条件为假,赋值语句不执行没有事项处理。因为由事项处理,要先对他们进行处理,记下一个模拟周期为0+δ时刻。
t=0+δ:接受3个新值,因为它们的值与老值相同,故没有事件,不激活任一进程。此时,不再有事项处理。但因为出入激励波形还在变化,下一时刻(t=1)由Clk的事件,因而时钟前进到1ns。
t=1:Clk由0变到1,有事件,激活L4。此时Clk=1,其中赋值语句执行,因而得到DffOut=0, 延迟为d。安排一个事项处理。
t=1+δ:处理DffOut的事项处理,新值与老值相同,无新的事项处理。
t=2:Cin的值由0变到1,激活L2,L3。Clk由1变为0,也有一个事件,激活L4。L2,L3得到新的事项处理(ExorOut=1,Cout=0)。L4无新的事项处理。
t=2+δ:接受新值,ExorOut有事件,但不是敏感信号,不激活任何进程。
t=3:Clk由0变到1,激活L4。此时得到DffOut=1, 延迟为d。安排一个事项处理。
t=3+δ:接受DffOut的值,形成事件,又激活L1,L2,L3。得到3个事项处理。因为仍有延迟为d的事项处理,时钟再前进d时间。
t=3+2δ:接受ExorOut,Bout,Cout的3个值,虽然它们的新值与老值都不同,但都不激活进程。
t=4:Cin和Clk的值都由1变到0,激活L2,L3,L4。L2,L3得到新的事项处理(ExorOut=1,Cout=0)。L4无新的事项处理。
t=4+δ:接受新值,ExorOut有事件,但不是敏感信号,不激活任何进程。
t=5:以此类推,读者自己完成整个过程。
|