1 如果FPGA设计中包含不同频率的时钟,就会涉及异步时钟的问题。我们需要一些方法来使得时钟同步,从而保证FPGA设计的可靠性。
2 在建立和保持时间所构成的有效时间窗口内,数据输入到触发器进行转换。如果数据的到达时间不满足建立或者保持时间就会产生时序冲突。此时触发器的输出就有可能停留在非逻辑0 或1 的范围内(这个状态叫做准稳态),从而造成逻辑错误。
3 如果异步时钟的相位不能够完全对齐就有可能引起2中所述的故障,而且这种故障是不可再现的,也无法通过仿真发现。
4 解决方法,即时钟同步问题:
a, 相位控制,通过PLL(锁相环)DLL(延时锁相环)使得两个异步时钟的边沿对齐。
b, 双跳技术(双触发器技术),在可能引起准稳态的触发器后增加一级触发器,从而消除准稳态的影响。如图所示:
c, FIFO结构,解决异步时钟的问题的最有效方法是采用先进先出的队列结构,它通常由双口RAM来实现。
格雷码通常用在FIFO结构中进行异步时钟间的多位计数传递,对于格雷码每次只改变一位,可以消除多位计数器在异步时钟传递过程中未同时被改变的问题。
大多数现代的FPGA都集成了FIFO核,从而方便设计者使用。
5 同步寄存器应该分割成独立的外部模块,如下图所示:
原文地址:http://blog.csdn.net/zhuzhiqi11/article/details/38062059