关于跨时钟域
时间:10-02
整理:3721RD
点击:
快慢时钟域数据的采集的方式是什么?例如,100M的数据采集到30M怎么实现?30M的数据采集到100M怎么实现?30M与100M都是时钟,,不用异步fifo和握手
这怎么做例如触发器打两拍?这个打两拍适用于由快到慢还是由慢到快?还是两者都适用?
求解答该怎么做
这怎么做例如触发器打两拍?这个打两拍适用于由快到慢还是由慢到快?还是两者都适用?
求解答该怎么做
我的理解:
(1)如果只是检测“复位信号”之类的单bit标志位信号,因为有效状态一般会维持较长的时间,
所以由慢到快,由快到慢,都可以打两拍,采集信号没问题,前提是有效状态维持时间足够长。
(2)如果是采集数据信号:
A.由慢到快,通过打拍是“有可能”正确采集到数据的,但是也要看时钟之间的具体关系。
比如是否同源/同步,时钟的倍数关系等。
B.由快到慢,通过打拍是不行的,因为很多数据都会漏掉而打不进来。
这时只能通过握手/异步FIFO/双口RAM来实现数据的转换。
C.由快到慢,如果快时钟域的数据是连续不间断的,那么只用一个异步FIFO是无论如何也无法
做到全部采集正确的,因为时钟满了来不及处理。这时,就可能需要多个异步FIFO,牺牲面积,
换取速度。至于需要多少个,取决于快慢时钟之间的具体关系。
