1.为什么异步fifo可以进行跨时钟域处理
答案:
1>.异步fifo中使用了存储器RAM能将两个时钟域的时序路径隔开。
2>.在异步fifo的读写控制中,引入了格雷码同步。由于格雷码相邻两个码之间只有一位发生变化,因此在指针跨时钟域传递时如果发生亚稳态,指针要么是变化后的地址,要么是与同步前的指针保持一致。因此这不会引起fifo的功能紊乱,只是影响了其读写效率。
2.单bit信号从慢时钟域到快时钟域有什么方法?
答案:
单bit信号从慢时钟域可以通过直接两级触发器同步到快时钟域,但可能会出现在快时钟域被多次采样的的问题。若要求同步到快时钟域的是一个等宽脉冲,两级同步触发器就不适用了。而需要在快时钟域做引入边沿同步器,得到与快时钟域等宽的同步脉冲。
3.空满判断,为什么要Gray码,使用了Gray码以后对FIFO深度有要求吗,如果FIFO想一次读写都是2个bit怎么办?
答案:
在异步FIFO中空慢标志的判断分别是将写指针同步到读时钟域和将读指针同步到写时钟域判断的。
因此涉及到指针的多bit同步,由于格雷码相邻码之间只发生一位变化,在做同步时就相当于是对单bit信号进行同步,使设计变得简单。
且如果同步时发生了亚稳态,稳定后的指针也只有一位变化,不会对fifo的功能造成影响。使用格雷码时,FIFO深度不一定是非要2的幂次方。
4.跨时钟域怎么解决(单多bit)?
答案:
单bit跨时钟域:
慢到快:两级触发器同步,打两拍同步
快到慢:开环结绳法、闭环结绳法;握手
多bit跨时钟域: DMUX、异步fifo、握手、格雷码+双D触发器。
5.跨时钟域处理时对单bit信号有什么要求?
答案:
1>.源时钟域与目的时钟域之间不能有组合逻辑,组合逻辑各个路径的信号之间有延迟,导致运算后可能会出现毛刺。若时钟上升沿刚好在毛刺时刻采样,造成采样错误。
2>.数据使能信号在跨时钟域前,也需要进行同步处理。
3>.快时钟域到慢时钟域同步时,可能会由于脉冲过窄,导致慢时钟域没办法正确采样,导致信号丢失。因此在做慢时钟域到快时钟域的同步时,需要保证信号宽度是慢时钟域周期的1.5倍,或者在同步前做脉冲展宽。 是快到慢的时候,快时钟的单比特信号需要扩展到足够宽 ,慢时钟域的采样。