在进行FPGA设计时,往往只关心“0”和“1”两种状态。然而在工程实践中,除了“0”、“1”外还有其他状态,亚稳态就是其中之一。亚稳态是指触发器或锁存器无法在某个规定时间段内达到一个可确认的状态[1]。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在亚稳态期间,触发器输出一些中间级电平,甚至可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。亚稳态是异步数字电路设计中的固有现象,但是由于其偶发性和温度敏感性的特点,在产品前期测试过程中很难发现。当前多个型号的FPGA产品研制过程中暴露的质量问题均与亚稳态有关,而且多是在设备研制后期进行高低温试验时出现,严重影响了产品研制。因此,亚稳态对系统的危害性应该引起足够重视,并在设计初期阶段应采取有效缓解措施,以提高系统的可靠性。
1 亚稳态产生的原因
所有数字器件(包括FPGA)的信号传输都有一定的时序要求,以保证每个器件将捕获的输入信号正确输出。对于触发器,为了确保操作的可靠性,输入信号必须在时钟沿的某段时间(触发器的建立时间)之前保持稳定,并且持续到时钟沿之后的某段时间(触发器的保持时间)才能改变,而且该触发器的输入反映到输出还需要经过一定的延时(时钟到输出的时间)。如果数据信号的变化违反了建立时间或者保持时间的要求,则触发器的输出会处于亚稳态。此时,触发器的输出会在高电平“1”和低电平“0”之间盘旋一段时间,这也意味着触发器的输出达到一个稳定的高或者低电平的状态所需要的时间会大于时钟到输出的时间。这样触发器输出端Q在有效时钟沿之后较长一段时间处于不确定状态,这段时间称为决断时间。在这段时间里Q端可能为毛刺、振荡或某一固定电压值,而不是等于数据输入端D的值。经过决断时间之后Q端将稳定到“0”或“1”上,但究竟是“0”还是“1”,是随机的,与输入没有必然的联系。图1所示是第一级触发器存在建立时间或保持时间冲突时导致Q1出现亚稳态的示意图。 |