1 假设FPGA设计,包括不同的频率的时钟,它会发出涉及异步时钟。

我们需要一些方法来使时钟同步,从而保证FPGA可靠性设计。


2 在建立和保持时间所构成的有效时间窗体内,数据输入到触发器进行转换。

假设数据的到达时间不满足建立或者保持时间就会产生时序冲突。

此时触发器的输出就有可能停留在非逻辑0 或1 的范围内(这个状态叫做准稳态)。从而造成逻辑错误。


3 假设异步时钟的相位不可以全然对齐就有可能引起2中所述的故障,并且这样的故障是不可再现的,也无法通过仿真发现。


4 解决方法,即时钟同步问题:

    a, 相位控制。通过PLL(锁相环)DLL(延时锁相环)使得两个异步时钟的边沿对齐。


    b,   双跳技术(双触发器技术),在可能引起准稳态的触发器后添加一级触发器,从而消除准稳态的影响。如图所看到的:

FPGA 异步时钟处理方_有效时间

   c, FIFO结构,解决异步时钟的问题的最有效方法是採用先进先出的队列结构,它通常由双口RAM来实现。

FPGA 异步时钟处理方_解决方法_02

格雷码通经常使用在FIFO结构中进行异步时钟间的多位计数传递。对于格雷码每次仅仅改变一位。能够消除多位计数器在异步时钟传递过程中未同一时候被改变的问题。


大多数现代的FPGA都集成了FIFO核。从而方便设计者使用。


5 同步寄存器应该切割成独立的外部模块,例如以下图所看到的:

FPGA 异步时钟处理方_可靠性设计_03


版权声明:本文博客原创文章,博客,未经同意,不得转载。