常工作可就不行了。设计者需要从各个方面考虑来决定这个频率,不会仅仅为了降低亚稳态发生的概率而无限制的降低系统的时钟频率。如此分析,发现这个Fclk基本也是一个比较固定的值,不是可以随便说降就降的。降低Fclk其实也就是在增大Tmet时间,因为它是Tmet公式计算中的被减数,哈哈,好像是一环扣一环。另外,在不降低采样频率Fclk的情况下,通过使用使能信号的方式得到一个二分频时钟去采样信号也可以达到降频的目的,只不过这样会多耗费几个时钟周期用于同步,但是有时也能够明显改善性能。
特权同学的二分频采样思路如图5所示,前两级采样电路都做了2分频,然后第三级使用原来时钟进行采样。它的好处在于给第一级和第二级同步寄存器更多的Tmet时间,将亚稳态抑制在第二级寄存器输入之前,从而保证第三级寄存器的可靠采样。虽然它在一、二级寄存器的输入端增加了一些逻辑,可能会增大Tdata,但是相比于这个采样时钟的一半将额,它的变化是可以忽略不计的。
图5
另一种办法是在不降低每级寄存器的采样频率的情况下采用更多的同步寄
存器,尽量去使用后级的寄存器,这也是一个笨办法。Altera的笔记里打了一个比喻,如果一个设计你使用了9级的同步寄存器,那么MTBF是100年,而当你使用了10级的同步寄存器,那么MTBF是1000年。这个办法其实有点类似冗余,这是所有人都知道的可以提高可靠性的原始办法。这种思路的弊端和前面提到的方法一样,需要付出多个时钟周期为代价。
最后看这个Fdata,这个是发送时钟域的数据变化率,似乎也是由系统决定
的,设计者也无法做太多改变。
其实对于一般的应用,如果系统的时钟频率不太高,器件的特性还算可以(只
是一些泛泛的说法,具体问题要具体分析),特权同学觉得上篇博文提出的握手信号同步方法就足以应付亚稳态问题。如果到高频范畴来讨论亚稳态,那将会是一项更有挑战性的任务,只可惜特权同学目前接触的最高频也只不过100MHz而已。特权同学自觉才疏学浅,班门弄斧了。
无独有偶,特权同学这篇博文即将收官之际,无意中看到船长的博客中《理
解FPGAs中的亚稳态》一文也涉及到了altera的这篇笔记,也做了一下翻译,似乎比特权同学翻译的好。不过在此做个声明,特权同学的博文一贯坚持原创,即便参考其它资料,也大都有所提及,并且有自己的评论和思考,这应该是每位电子工程师应该有的严谨和认真的态度。