FPGA基础知识20(FPGA设计异步时钟处理分类及百度文库资料)

需求说明:IC设计基础

内容       :异步时钟处理

来自       :时间的诗


原文:http://xilinx.eetop.cn/viewthread-343495

提问

应该说“跨时钟域的异步信号交互问题”是数字前端设计里面一个重要话题。 这里我总结一下自己对这个问题的一些了接和认识,希望具有实际项目经验和扎实理论基础的  EETOPER们热烈讨论。 
1. 在两个异步的时钟域之间的信号交互可以分成不同的类别—— 按位数分(一位,多位); 按作用分(控制信号,数据信号); 按时钟频率分(快->慢,慢->快)。 

2. 采用的方法基本有同步器、格雷码加同步器、握手方法、异步FIFO等。 当然针对上面的四种分类和实际要求要采用不同的方法。 

3. 异步FIFO是采用得比较多的一种方法,异步FIFO本身的设计就涉及到跨时钟域的问题。 上面是我对这个问题一些比较片面和肤浅的看法,希望大家补充和完善,将这些方法具体化。

回答

1、控制信号的CDC,一般而言都是使用双寄存器方法实现CDC,当然这个也是有限制的,一般来说需要使用快时钟同步慢时钟,如果是慢时钟同步快时钟呢,我们就需要把控制信号展宽(具体展宽有多种方法,可以在设计时延长有效周期等);这种方法在实际中用的比较多; 

2、对于数据总线,一般使用握手机制或者是异步fifo来实现,握手机制实际上就是通过控制信号来告诉需要跨越的时钟何时采样数据是稳定的来达到安全可靠的跨越时钟区域。

3、fifo则是在没有握手机制时使用较多,一般异步fifo的结构是写地址控制,双端ram,读地址控制,读地址gray转换以及CDC至写时钟区域然后与写地址进行比较从而产生满信号以及接近满信号,写地址gray转换并CDC至读时钟区域再与读地址进行比较产生空信号以及接近空信号。具体实现时可能还有区别,不过方法应该都是大同小异的。个人觉得在设计的时候遇到CDC问题时,仔细分析两个时钟区域的关系,具体问题具体分析选用合适的方案会比较好些。

百度文库相关资料:http://wenku.baidu.com/link?url=UF1Yv1RKjSDs052YIJrvIi2PgSoGxR-KjsLSDWR3FMiaWT40Cgl-zaRLzAZz5BlxYujyyI_UWjf4dZSekf-VWTabBvSBj5usK3xj9AHknym

你可能感兴趣的:(FPGA基础知识)