进入我们例题的时序分析。这里的时序分析我们要有几个外界理想条件的假设:

1.提供时序的硬件不会发生 扭曲(Skew),延迟等现象,一直是以5s间隔改变

2.忽略所有导线延迟


见下时序图,看我慢慢道来。

为了解说方便附上上一个part的状态表。

2.6从实例进入FSM初步--例子的时序分析 part3_FSM2.6从实例进入FSM初步--例子的时序分析 part3_感应器_02(这个表就是状态的二进制编码)2.6从实例进入FSM初步--例子的时序分析 part3_感应器_03

1.注意横轴是时间。时间t=0到Reset发生这段时间,系统处于未知状态可以看到 ?? 状态 也就是此时S和L可能取1也可能取0(注意图中的双线,代表0或1,分析的时候之选一条线就可以了)。

2.按照例题的假设,Ta马上检测到车流量所以Ta被感应器设为高电平(亦即初始的时候 输入Ta为1),紧接着我们就reset了整个系统。

2.当Reset时,S1:0,S`1:0,La1:0,Lb1:0都被设定为已知状态,图中的小括号内的数字代表所处状态的二进制编码。这里分别是(00)(00)(00)(10)(这里 S1:0这种写法以前也接触过,就是把两位捏在一起,其实就是相当于系统的Bus--总线)。注意     S`1:0   要稍微晚一些,这只是为了例子明显才这么做,实际上根据FF芯片设计的不同会有差别。根据Reset并不和时钟有关联,所以我们把它叫做非同步Reset。也就是和时序独立的。Reset保持高电平一段时间,原因以后说。

3.在10s左右Tb检测到有车流,但是Ta仍然是高电平(车没过完)所以看看我们part2的状态表可知只要Ta=1无论Tb如何S`1:0都是(00)。所以理所当然的下图中S1:0,S`1:0,La1:0,Lb1:0至少要保持之前的Reset状态到Ta下降沿

4.到16s左右Ta下降,根据我们的状态表,S`1:0进过系统中前面的几个逻辑们的延迟进入S1态。此时要等待时钟的下一个上升沿--20s FF被触发,把状态传播到S1:0也就是设定当前(21s)状态为S1:0(当然要经过FF内部逻辑门的延迟)。然后在经过一个逻辑们的延迟到达  La1:0,设定颜色为(01).

5.21s处的S1:0(01)状态根据我们的状态表需要S`1:0变为S2状态。此时信号根据电路图需要跑一圈来到S`1:0因此经过一段延迟(图里估计是2s左右也就是23s左右)才被设定。等待25s的时钟上升沿,才把FF状态(S1:0)设为S2.而La1:0根据例题说明要等5s才变   成红灯。这里正好经过一个5s的时钟,所以会保证没有错误的变为红灯。同时Lb1:0会变为绿灯。注意,如果黄灯要求延迟小于5s,会导致一个Glitch,也就是黄灯亮一会然后灭掉红灯亮起,而S1变化时又要把状态先拉回01然后在变为10.这个情况以后会具体讨论

6.剩下的就交给大家分析咯~~



2.6从实例进入FSM初步--例子的时序分析 part3_高电平_04