1.亚稳态现象、产生原因:
在按键消抖例程中,key_in是外部产生的异步信号,key_in与系统时钟无关。
异步信号就会存在这样一个问题:“有可能会使系统时钟采集到不稳定状态,无法确定异步信号的01状态”,而D触发器只认识01。当输入不稳定状态时,触发器的输出会产生振荡,最终会稳定下来,但有可能稳定是0也有可能是1。
因此,在对异步信号进行采集时,一旦采集到不确定状态,D触发器的输出就会有两种随机可能。显然,这不是我们希望看到的。
2.亚稳态解决方法:
用两级寄存器(D触发器)进行外部异步信号的同步处理,使外部异步信号同步到系统时钟域来,达到波形稳定的目的。