FPGA设计中的亚稳态及其缓解措施
扫描二维码
随时随地手机看文章
摘 要: 亚稳态是异步数字电路设计中的固有现象。针对FPGA产品研制中的亚稳态问题,分析了其产生的原因,阐述了亚稳态对系统可靠性的影响和评估方法,并针对单比特异步传输、多比特异步传输和复位三种情况下的亚稳态提出缓解措施。该措施可以在工程实践中参考使用。
关键词: 触发器;亚稳态;MTBF;复位
在进行FPGA设计时,往往只关心“0”和“1”两种状态。然而在工程实践中,除了“0”、“1”外还有其他状态,亚稳态就是其中之一。亚稳态是指触发器或锁存器无法在某个规定时间段内达到一个可确认的状态[1]。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在亚稳态期间,触发器输出一些中间级电平,甚至可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。亚稳态是异步数字电路设计中的固有现象,但是由于其偶发性和温度敏感性的特点,在产品前期测试过程中很难发现。当前多个型号的FPGA产品研制过程中暴露的质量问题均与亚稳态有关,而且多是在设备研制后期进行高低温试验时出现,严重影响了产品研制。因此,亚稳态对系统的危害性应该引起足够重视,并在设计初期阶段应采取有效缓解措施,以提高系统的可靠性。
1 亚稳态产生的原因
所有数字器件(包括FPGA)的信号传输都有一定的时序要求,以保证每个器件将捕获的输入信号正确输出。对于触发器,为了确保操作的可靠性,输入信号必须在时钟沿的某段时间(触发器的建立时间)之前保持稳定,并且持续到时钟沿之后的某段时间(触发器的保持时间)才能改变,而且该触发器的输入反映到输出还需要经过一定的延时(时钟到输出的时间)。如果数据信号的变化违反了建立时间或者保持时间的要求,则触发器的输出会处于亚稳态。此时,触发器的输出会在高电平“1”和低电平“0”之间盘旋一段时间,这也意味着触发器的输出达到一个稳定的高或者低电平的状态所需要的时间会大于时钟到输出的时间。这样触发器输出端Q在有效时钟沿之后较长一段时间处于不确定状态,这段时间称为决断时间。在这段时间里Q端可能为毛刺、振荡或某一固定电压值,而不是等于数据输入端D的值。经过决断时间之后Q端将稳定到“0”或“1”上,但究竟是“0”还是“1”,是随机的,与输入没有必然的联系。图1所示是第一级触发器存在建立时间或保持时间冲突时导致Q1出现亚稳态的示意图。
2 亚稳态与系统可靠性
由于亚稳态输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值,因此亚稳态对系统的影响主要表现在以下两个方面:
(1)导致后端电路产生逻辑误判,尤其是多扇出电路中,由于扇出延时的差别会导致各负载端识别出不同的逻辑电平,使系统功能发生紊乱。
(2)输出0~1之间的中间电压值还会使下一级产生亚稳态,即导致亚稳态在系统中传播。
亚稳态的出现是一种概率现象,并且结果正确与否也是一种概率现象。因此,为了便于估算,工程实践中提出了一种统计模型来评估亚稳态所造成的危害程度,即平均无故障时间MTBF(Mean Time Between Failures)。MTBF的定义如下[2]:
MTBF的计算对象是一个触发器,在实际中器件生产厂家先通过特殊的测试手段得到产品的MTBF,然后再确定公式中的参数指标向外发布。用户可以根据这些参数指标定量计算当前设计的可靠性。对于常用的Actel公司的FPGA和Xilinx SRAM型FPGA,器件厂商均公布了T0和?子的数值[3-4],实际使用时可以进行评估计算。
3 FPGA设计中的亚稳态缓解措施
在FPGA设计中,只要不满足内部触发器的建立时间和保持时间要求,就会出现亚稳态。对于一个全同步设计来说,时钟和数据相位关系固定,所有触发器都由一个时钟信号驱动,虽然在不同点也存在相位差别,但开发工具会通过计算时钟信号线的走线长度来预测传输延时,并通过时钟域内的时钟树综合算法来求得优化的结构,使触发器的建立时间和保持时间满足要求,不出现亚稳态,这也是所有设计规范都推荐采用全同步设计的一个重要原因。但是,实际的系统一般都不只有一个时钟,而是一个多时钟系统,例如常见的下行链路数据复接设备,一般是有多少路输入就有多少个时钟,因而需要分析其中的异步传输路径并采取缓解措施。
3.1 针对单比特信号异步传输的亚稳态缓解措施
(1)慢时钟域信号进入快时钟域(两者周期相差1倍以上)
慢时钟域信号进入快速时钟域是工程实践中遇到最多的一种情况,输入信号从CLK1时钟域进入到CLK2时钟域时可以通过两级触发器级联的方式来缓解亚稳态,具体电路如图3所示。
图3电路中,由于无法预知异步输入信号ASY_IN的翻转时刻,所以同步器第一级触发器的输出Q1存在亚稳态,该信号通过FPGA布线路径传输至第二级触发器的输入端。设CLK2的时钟周期为T,且假定CLK2到两个触发器的时钟延时相等(即偏斜为零),第一级触发器输出到第二级触发器输入端的路径传输延时为tnet,其余时序参数定义同图1。则只要满足tco+tres+tnet+tsu≤T,Q1就有足够的时间从亚稳态恢复至稳定态,并满足第二级触发器的建立时间要求,所以第二级触发器的输出是稳定态。同时还要注意的是,信号在CLK2时钟域内会有T~2T的延时。
设计中,可以通过增加触发器级联的数目来获得更大的MTBF,但是这样会进一步增大信号延时并占用更多FPGA资源。综合考虑现有FPGA器件工艺和电气参数,一般情况下,二级触发器的级联已经可以满足实际要求了。
(2)慢时钟域信号进入快时钟域(两者周期相差1倍以内)
从亚稳态的机理可以知道,图3中Q1的亚稳态恢复结果可能是“0”也可能是“1”,所以要求CLK1的周期必须是CLK2周期的2倍以上,才能保证当异步输入信号为单周期脉冲时,在CLK2时钟域信号不丢失。所以对于两个时钟周期相差1倍以内的情况,图3的电路是不合适的,可以采用图4所示的脉冲扩展同步电路来缓解亚稳态。