跨时钟域问题
时间:10-02
整理:3721RD
点击:
有个跨时钟域问题:
2个时钟,一个低速时钟clk,和一个高速时钟clk35, clk35频率是clk的3.5倍,2个时钟的相位差为0. 如何把高速时钟域的数据同步到低速时钟域里面?
如果用2个寄存器进行2次同步,那样势必在第一个寄存器会出现时序违例,还是会出现编译器的时序分析通不过。
现在的问题是,是继续使用2次同步法,忽视编译器的报警,还是有其他办法进行这个跨时钟域的数据传递?
2个时钟,一个低速时钟clk,和一个高速时钟clk35, clk35频率是clk的3.5倍,2个时钟的相位差为0. 如何把高速时钟域的数据同步到低速时钟域里面?
如果用2个寄存器进行2次同步,那样势必在第一个寄存器会出现时序违例,还是会出现编译器的时序分析通不过。
现在的问题是,是继续使用2次同步法,忽视编译器的报警,还是有其他办法进行这个跨时钟域的数据传递?
使用FIFO。
把高速时钟域的信号展宽,在低速时钟域打拍采沿,不用关心第一个寄存器的时序问题。
楼上的意思是把N bit宽的数据编程4N bit宽的数据,再在低时钟域进行打拍采集嘛
高速时钟域信号展宽,再用低速时钟打两拍
4# ineedpower
ineedpower
回复:ineedpower 是你说的这个意思。有问题可以站内消息~~
2个寄存器进行同步适合单根信号,对数据会造成数据错误,所以数据同步还是用FIFO为好
单bit数据直接展宽后打两拍传递。
多bit数据先锁存住(锁存的拍数要足够),同时产生一个单bit握手信号,握手信号展宽后,低频时钟域打两拍采到握手信号,再直接去采多bit数据。
如果嫌麻烦就用异步fifo/ram吧。
多谢各位老大的帮助。
支持020403
没人回复
