亚稳态是FPGA系统中的一个常见的问题,亚稳态的出现轻则导致输出错误,严重的甚至会导致系统崩溃。因此对亚稳态的了解也必不可少。
一、概念
想要了解亚稳态问题,这里首先得了解四个时间
1.建立时间
触发器在时钟上升沿来临时对数据进行采样,产生对应的输出。但实际上器件无法瞬间完成数据采样这一过程,需要数据在时钟上升沿前后均稳定一定的时间,即引入了(触发器的)建立时间和保持时间这一个概念。
建立时间Tsu(set up):时钟有效沿来临之前数据必须保持稳定的最小时间
保持时间Th(hold):时钟有效沿来临之后数据必须保持稳定的最小时间
2.恢复时间与去除时间
恢复时间(Recovery time):与同步电路中的建立时间类似,是指异步控制信号(如寄存器的异步清除和置位控制信号)在“有效时钟沿”来临之前变无效的最小时间长度。这个时间的意义是,异步控制信号在时钟上升沿来临Trecovery时间就要保持稳定,如果保证不了这个最小恢复时间,也就是说“有效时钟沿”来临时,这个异步控制信号不能保证正常执行。
去除时间(Removal time):与同步电路中的保持时间类似,是指异步控制信号(如寄存器的异步清除和置位控制信号)在“时钟有效沿”之后变无效的最小时间长度。这个时间的意义是,异步控制信号在时钟上升沿后仍需保持Tremoval的稳定时间,如果保证不了这个去除时间,也就是说这个异步控制的解除与“有效时钟沿”离得太近,那么依旧不能保证这一异步控制信号正常执行。
3.亚稳态
亚稳态是指触发器无法在某个规定的时间段内到达一个可以确定的状态。即:如果触发器的输入电压采样时间过短,则触发器需要花很长的时间来实现输出逻辑达到标准电平,在这段时间里输出端在高低电平之间处于震荡状态,而不是等于理想输出值。也就是说,电路处于中间态的时间变长,使得电路“反应迟钝”,这就是亚稳态。(例如输入信号在时钟有效沿的建立时间和保持时间之间改变了,导致不满足触发器的建立时间和保持时间,导致输出有一段时间的不稳定态,就是亚稳态。)
注意:
①亚稳态的中间态时间边长:亚稳态是触发器一个固有属性,正常采样也会有一个亚稳态时间。当建立时间和保持时间满足时,触发器也会经历采样——亚稳态——随后输出稳定。而出现亚稳态问题时,亚稳态的中间态的时间边长。
②亚稳态的输出不一定正确:正常工作时,触发器经历较短的亚稳态时间,随后会正确输出;而出现亚稳态问题时,触发器经历较长的亚稳态时间,最终输出稳定但无法保证正确(是稳定的标准电平信号,但难以保证是输入对应的输出)。
二、亚稳态产生与消除
在同步系统中,输入总是与时钟同步,因此寄存器的建立时间和保持时间时满足的,一般情况下不会发生亚稳态的情况。(在同步逻辑中只要静态时序STA分析过了正常是不会遇到亚稳态问题的,STA静态时序分析以及保证了每个触发器都能满足自己的建立时间以及保持时间)。
1.跨时钟域信号传输
产生:在跨时钟域信号传输时,由于源寄存器时钟和目的寄存器时钟相移未知,所以源寄存器数据发出数据,数据可能在任何时间到达异步时钟域的目的寄存器,所以无法保证满足目的寄存器建立时间和保存时间的要求,从而产生亚稳态。
消除:对异步信号进行同步处理(添加两级D触发器、采用握手进行交互)
采用FIFO对跨时钟域数据通信进行缓冲设计
2.异步复位电路
产生:在异步复位电路中,复位信号的时间不定,难以保证满足恢复时间和去除时间,从而出现亚稳态。
消除:对复位电路采用异步复位,同步释放处理。
3.其他避免亚稳态的方法
①使用采样更快的触发器(亚稳态窗口小)
②降低采样速率
③避免使用dV/dt低的输入信号
④改善时钟质量,用边沿变化快速的时钟信号
注意:这些方法会降低系统的效率等问题,所以一般不使用
总结
亚稳态与系统的可靠性有非常密切的关系,当前对很多设计来说,实现需要的功能并不困难,难的是提高系统的稳定性、可靠性、较小的亚稳态发生的概率,并且降低系统对亚稳态错误的敏感程度可以提高系统的可靠性。