Finite State Machine
Contents
Finite State Machine
有穷自动机本身是一个比较简单的概念,不过这里的主要难点是考虑将异步信号转换为同步
课程地址: Finate State Machine
本课程中自动机的表示图
异步时钟
当电路中的时钟信号和输入变量的时钟信号不一样时,需要将输入的时钟信号转换为与电路时钟同步的信号,从而使得电路能正常工作。
The bounded-time Synchronizer
当IN
和CLK
的上升沿到来时间$t_{IN}$和$t_{CLK}$相差大于$t_{E}$时,Synchronizer将输出至少持续$t_{D}$时长的0或1。但如果IN
和CLK
的上升时间沿到来时间之差小于$t_E$时,就无法确定Synchronizer的输出。为什么无法确定?个人理解是因为上升沿实际是要一段时间才能完成的,如果两者上升沿到来时间相差太短,当CLK
达到1时,IN
可能还在中间。
那么该如何用逻辑电路来实现这个Synchronizer,当然要靠D-Register啦!
上图是用D-Register实现的Synchronizer, 用$t_{setup}$和$t_{hold}$来充当$t_{E}$,看起来很美好,但还没有解决IN
和CLK
的上升沿同时到来的问题!
当IN
和CLK
的上升沿同时到来时,可能会让D-latch进入metastable状态:
解决办法:加D-Register!